Comunidad de diseño web y desarrollo en internet online

Ayuda para un novato en PHP

Citar            
MensajeEscrito el 11 Oct 2009 09:05 pm
Hola buenas

Mi problema es que me he liado a desarrollar un pequeño script para un amigo sin tener ni idea de programación en PHP y ahora pido ayuda para salir de este apuro. El tema es que en principio parece estar medio hecho, pero me queda rizar el rizo, y ya llevo muchos cabezazos, de ahí que pido si alguien me puede hechar una mano puesto que me he quedado estancado. El tema es que antes de pasarlo a PHP hice el script en Visual Basic para ver si me podia guiar un poco, pero claro, no me aclaro. En principio lo que me salio en PHP fue esto

<?
if (isset($_POST['Enviado']))
{
$Enviado = $_POST['Enviado'];

}
else{
$Enviado= "False";

}

if ($Enviado == "True")
{
// tomo las variables del formulario mediante el método usado por el mismo
$c3 = $_POST[M3Camara];


$c1=700;
$c2=30;

$c4=1;
$c5=10000;
$c6 = (($c2 - $c1)/($c5 - $c4));
$c7 = ($c3 - $c4);
$c8 = ($c6 * $c7);
$c9 = (($c1 + $c8) * $c3);
$resultado= $c9;


$Enviado == "False";

}

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Calculadora Peri</title>
</head>

<body>


<form action="" name="form1" method="post">
<input name="M3Camara" size="17" type="text"/>
<br/>
<input value="Calcular" name="Calcular" type="submit"/>
<br/>
<input type="hidden" name="Enviado" value="True" />
<br/>
</form>


<?
// impresión del resultado de la operación
echo "$resultado";
?>

</body>
</html>

pero se trata de una interpolación lineal cuando yo la quiero hacer parabólica, os pongo el programa que desarrollé en VB6 y funciona perfectamente:

num% = Text1.Text
    
    If num% < "2" Then
        c = "700"
        b = (num% * c)
        a$ = b & " €"
        Label2.Caption = a$
        GoTo fin
    ElseIf num% <= "5" And num% >= "2" Then
        c1 = "700": c2 = "600": c4 = "2": c5 = "5"
    ElseIf num% >= "5" And num% <= "10" Then
        c1 = "600": c2 = "500": c4 = "5": c5 = "10"
    ElseIf num% >= "10" And num% <= "20" Then
        c1 = "500": c2 = "400": c4 = "10": c5 = "20"
    ElseIf num% >= "20" And num% <= "30" Then
        c1 = "400": c2 = "300": c4 = "20": c5 = "30"
    ElseIf num% >= "30" And num% <= "50" Then
        c1 = "300": c2 = "250": c4 = "30": c5 = "50"
    ElseIf num% >= "50" And num% <= "100" Then
        c1 = "250": c2 = "200": c4 = "50": c5 = "100"
    ElseIf num% >= "100" And num% <= "150" Then
        c1 = "200": c2 = "180": c4 = "100": c5 = "150"
    ElseIf num% >= "150" And num% <= "200" Then
        c1 = "180": c2 = "150": c4 = "150": c5 = "200"
    ElseIf num% >= "200" And num% <= "400" Then
        c1 = "150": c2 = "120": c4 = "200": c5 = "400"
    ElseIf num% >= "400" And num% <= "800" Then
        c1 = "120": c2 = "100": c4 = "400": c5 = "800"
    ElseIf num% >= "800" And num% <= "1200" Then
        c1 = "100": c2 = "90": c4 = "800": c5 = "1200"
    ElseIf num% >= "1200" And num% <= "2500" Then
        c1 = "70": c2 = "50": c4 = "1200": c5 = "2500"
    ElseIf num% >= "2500" And num% <= "10000" Then
        c1 = "50": c2 = "30": c4 = "2500": c5 = "10000"
    ElseIf num% >= "10000" Then
        c = "30"
        b = (num% * c)
        a$ = b & " €"
        Label2.Caption = a$
        GoTo fin
    End If

    c3 = num%
    c6 = ((c2 - c1) / (c5 - c4))
    c7 = (c3 - c4)
    c8 = (c6 * c7)
    c9 = ((c1 + c8) * c3)
    a$ = c9 & " €"
    Label2.Caption = a$

fin:


no se si alguien podria hecharme una mano a pasar el código VB6 a PHP.

Gracias de antemano

Un saludo

Por locmec

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 12 Oct 2009 04:43 pm
Es mejor que digas que debe hacer el programa y si te puedo ayudar el Php.CON MUCHO GUSTO. :cool:

Por crmauricio

52 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Oct 2009 04:48 pm
Pues muchas gracias Mauricio. Exactamente lo que debe hacer el programa es hacer una interpolación, es decir, dando un valor X debo averiguar un resultado, dado que como la interpolación que hago es lineal, y no tengo ni idea de como hacerla parabólica, pues lo que hago es acotar los puntos. En resumen lo que quiero hacer es una calculadora para calcular precios de cámaras frigoríficas, y puesto que el precio de una cámara de 2 metros no debe ser el mismo que uno de 1000 metros, pues con la estructura if, lo que hago es variar los puntos de cálculo en función de los metros que se ponen. No se si me he explicado bien, en todo caso muchas gracias y un saludo.

Por locmec

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 13 Oct 2009 03:50 am
ESTE ES EL CODIGO AMIGO :lol:



<html>
<center>
<h1> Modulo de Interpolacion </h1>
<form name=m method=POST action="">
<table border=1>
<tr> <td> Dato <td> : <input type=text name=dato value="<?php echo $dato ?>" size=17 maxlength=17>

</table>
<input type= submit name=calcular value=Calcula > &nbsp
<input type= submit name=reset value=Limpiar > &nbsp
<input type=hidden name=envia value=1>

</form>
</html>
<?php

$calcular=$_POST['calcular'];

if(($calcular) and ($_POST['envia']==1) ){

if($dato<2){
$c="700";
$b=($dato%$c);
$a=$b;
$mens=" €";
echo "$a $mens";


}
else if($dato<=5 and $dato>=2){
$c1="700"; $c2="600";$c4="2";$c5="5";

}
if($dato>=5 and $dato<=10){
$c1="600"; $c2="500";$c4="5";$c5="10";
}
else if($dato>=10 and $dato<=20){
$c1="500"; $c2="400";$c4="10";$c5="20";
}

if($dato>=20 and $dato<=30){
$c1="400"; $c2="300";$c4="20";$c5="30";
}
else if($dato>=30 and $dato<=50){
$c1="300"; $c2="250";$c4="30";$c5="50";
}
if($dato>=50 and $dato<=100){
$c1="250"; $c2="200";$c4="50";$c5="100";
}

else if($dato>=100 and $dato<=150){
$c1="200"; $c2="180";$c4="100";$c5="150";
}

if($dato>=150 and $dato<=200){
$c1="180"; $c2="150";$c4="150";$c5="200";
}
else if($dato>=200 and $dato<=400){
$c1="150"; $c2="120";$c4="200";$c5="400";
}

if($dato>=400 and $dato<=800){
$c1="120"; $c2="100";$c4="400";$c5="800";
}
else if($dato>=800 and $dato<=1200){
$c1="100"; $c2="90";$c4="800";$c5="1200";
}
if($dato>=1200 and $dato<=2500){
$c1="70"; $c2="50";$c4="1200";$c5="1500";
}
else if($dato>=2500 and $dato<=10000){
$c1="50"; $c2="30";$c4="2500";$c5="10000";
}
if($dato>=10000) {
$c="30";
$b=($dato*$c);
$a=$b;
$mensaje=" €";
echo "$a $mensaje";
}
else{ /**** ESTA PARTE DE TU CODIGO NO LA ENTIENDO***/
$c3=$dato;
$c6=(($c2-$c1)/($c5-$c4));
$c7=($c3-$c4);
$c8=($c6*$c7);
$c9=(($c1+$c)*$c3);
$a=$c9;
$mensaje=" €";
echo "$a $mensaje";
}
}



$reset=$_POST['reset'];

if(($reset) and ($_POST['envia']==1) ){
echo"<script>document.location.href='inter.php';</script>";
}
?>

El ayudar te hace grande :cool:

Por crmauricio

52 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Oct 2009 12:54 pm
Los IFs donde usas el operador AND, los operandos deben estar encerrados entre paréntesis. No veo otro error.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 13 Oct 2009 06:32 pm
Hola Mauricio, pues muchas gracias porque con lo que me has enviado me has esclarecido mucho, no he usado exactamente lo que me has puesto pero ha sido el detonante para que funcione, te lo pongo para que veas que tal ha quedado

<?
if (isset($_POST['Enviado']))
{
$Enviado = $_POST['Enviado'];

}
else{
$Enviado= "False";

}

if ($Enviado == "True")
{
// tomo las variables del formulario mediante el método usado por el mismo
$c3 = $_POST[M3Camara];


if ($c3 < 2) {
$c= 700;
$b=($dato * $c);
$a=$b;
echo $a;


}

else if ($c3 <= 5 and $c3 >= 2) {
$c1= 700; $c2= 600;$c4= 2;$c5= 5;

}

else if ($c3 <= 10 and $c3 >= 5) {
$c1= 600; $c2= 500;$c4= 5;$c5= 10;

}

else if ($c3 <= 20 and $c3 >= 10) {
$c1= 500; $c2= 400;$c4= 10;$c5= 20;

}

else if ($c3 <= 30 and $c3 >= 20) {
$c1= 400; $c2= 300;$c4= 20;$c5= 30;

}

else if ($c3 <= 50 and $c3 >= 30) {
$c1= 300; $c2= 250;$c4= 30;$c5= 50;

}

else if ($c3 <= 100 and $c3 >= 50) {
$c1= 250; $c2= 200;$c4= 50;$c5= 100;

}

else if ($c3 <= 150 and $c3 >= 100) {
$c1= 200; $c2= 180;$c4= 100;$c5= 150;

}

else if ($c3 <= 200 and $c3 >= 150) {
$c1= 180; $c2= 150;$c4= 150;$c5= 200;

}

else if ($c3 <= 400 and $c3 >= 200) {
$c1= 150; $c2= 120;$c4= 200;$c5= 400;

}

else if ($c3 <= 800 and $c3 >= 400) {
$c1= 120; $c2= 100;$c4= 400;$c5= 800;

}

else if ($c3 <= 1200 and $c3 >= 800) {
$c1= 100; $c2= 90;$c4= 800;$c5= 1200;

}

else if ($c3 <= 2500 and $c3 >= 1200) {
$c1= 70; $c2= 50;$c4= 1200;$c5= 2500;

}

else if ($c3 <= 10000 and $c3 >= 2500) {
$c1= 50; $c2= 30;$c4= 2500;$c5= 10000;

}

else if ($c3 > 10000) {
$c= 30;
$b=($dato * $c);
$a=$b;
echo $a;

}

$c6 = (($c2 - $c1)/($c5 - $c4));
$c7 = ($c3 - $c4);
$c8 = ($c6 * $c7);
$c9 = (($c1 + $c8) * $c3);
$resultado= $c9;


$Enviado == "False";

}

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

</head>

<body>

<h1> PERISFRED.COM <h1>
<h5> <h5>
<p> "Camaras de conservacion" Para que sepan de que tipo de camara es. <br>
<p>"Esta calculadora calcula un precio aproximado por interpolacion de <br>
<p> varios presupuestos. No tiene ningun valor contractual, es decir <br>
<p> que sirve para tener una idea, no para dar un presupuesto real. Es <br>
<p> un precio de mercado. Para hacer una aproximacion puede ser de <br>
<p> utilidad para gente practica, y positiva. (Un presupuesto real de <br>
<p> una camara no te lo haran al instante!) Es para ayudarte a tener <br>
<p> una idea, del precio de una instalacion." </p>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Calculadora Peri</title>


<form action="" name="form1" method="post">
<input name="M3Camara" size="17" type="text"/>
<br/>
<input value="Calcular" name="Calcular" type="submit"/>
<br/>
<input type="hidden" name="Enviado" value="True" />
<br/>
</form>


<?
// impresión del resultado de la operación
echo "$resultado";
?>

</body>
</html>

Muchisimas gracias por la ayuda, porque este solo ha sido mi pistoletazo de salida en programacion PHP, recibe un cordial saludo

Por locmec

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 18 Oct 2009 01:42 am
lamec con mucho gusto.
El servir nos hace grandes :cool:

Por crmauricio

52 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.