PHP - Ayuda novato PHP

 
Vista:

Ayuda novato PHP

Publicado por locmec (4 intervenciones) el 11/10/2009 23:31:51
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda novato PHP

Publicado por Diego Romero (1450 intervenciones) el 12/10/2009 04:02:54
No entendí ni pepa...
¿Cuál es el resultado que quieres obtener?.

Si tu problema es traducir esa sucesión de if...elseif a PHP pues en PHP es igual, existe if y existe elseif en PHP, así como existe and, pero no then ni goto, por ejemplo el principio podrías escribirlo como:

If ($num < 2) {
$c = 700;
$b = ($num * $c);
$a = $b." €";
$mensaje = $a;
}
ElseIf (($num <= 5) And ($num >= 2)) {
$c1 = 700; $c2 = 600; $c4 = 2; $c5 = 5; }
ElseIf (($num >= 5) And ($num <= 10)) {
// resto del código

Las cosas que debes tener en cuenta son que PHP tiene conversión automática de tipos, una variable que vale 5 tanto contiene el valor numérico entero 5 como la cadena "5". Para concatenar cadenas de caracteres se usa el punto. Todas las sentencias atómicas terminan con punto y coma (como en Pascal o C). Los operandos de los operadores lógicos and y or deben estar entre paréntesis. Y la comparación de igualdad se hace con doble signo igual, el signo igual simple es solo para asignación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda novato PHP

Publicado por locmec (4 intervenciones) el 12/10/2009 18:26:13
Hola, mi problema es que creo que lo que cambia es el orden en que se pone la estructura de decisión, cosa que me lio y practicamente siempre las aplicaciones no me funcionan, pero de todas maneras probaré a ensayar con lo que me has enviado a ver que consigo, en todo caso lo postearé para ver si se puede pulir.
Muchas gracias por la ayuda.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda novato PHP

Publicado por locmec (4 intervenciones) el 12/10/2009 22:32:44
Hola, he seguido tus consejos pero la verdad es que no me he salido, me comentabas que la estructura elseif también es permitida en PHP, aunque a mi me esta dando el siguiente error

Parse error: syntax error, unexpected T_ELSEIF in /Users/Edi/Sites/CalcuPeri.php on line 27

da el error justamente en la linea donde se encuentra el elseif, y he probado varias maneras pero sin salir a cuentas, te pongo el código con el que estoy haciendo las pruebas para ver si puedes ver algo

<?
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];

//$num = $c3

If (($c3 <= 5) And ($c3 >= 2)) {

// $c1 = 700; $c2 = 600; $c4 = 2; $c5 = 5;
// $c6 = (($c2 - $c1)/($c5 - $c4));
// $c7 = ($c3 - $c4);
// $c8 = ($c6 * $c7);
// $c9 = (($c1 + $c8) * $c3);
// $resultado= $c9; }
elseif (($c3 <= 400) And ($c3 >= 200)) {
//    If (($c3 <= 400) And ($c3 >= 200)) {
$c1 = 150; $c2 = 120; $c4 = 200; $c5 = 400;
$c6 = (($c2 - $c1)/($c5 - $c4));
$c7 = ($c3 - $c4);
$c8 = ($c6 * $c7);
$c9 = (($c1 + $c8) * $c3);
$resultado= $c9; }

//$c1=700;
//$c2=30;


$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>

Gracias y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda novato PHP

Publicado por Diego Romero (1450 intervenciones) el 13/10/2009 14:41:31
Te falta cerrar el bloque if del if anterior a elseif, es decir, te falta una llave cerrada }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda novato PHP

Publicado por locmec (4 intervenciones) el 13/10/2009 20:25:32
Hola diego

Pues el tema es que mucho dandole vueltas y mirando por internet, finalmente he visto que si, por un lado no cerraba el if, y despues que ElseIf no es asi, es else if, es decir separado, y el script ya me esta funcionando a las mil maravillas, muchas gracias por tu ayuda.

Recibe un cordial saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar