Hola a todos, estoy empezando en esto de php y la verdad es que ando bloqueado con unos cálculos. Estoy leyendo documentación de varios sitios pero no sé si es que soy muy bruto o es que estoy pasando por alto algún punto, el caso es que no avanzo. A ver si alguno de ustedes me puede ayudar. Les explico la idea a grandes rasgos.
Se trata de calcular el precio de un producto (curso + alojamiento) según lo que escojamos en los
selects de un formulario. La secuencia para el formulario en html sería:
1º - Elijo el tipo de curso en el primer
select. Éste puede ser
"basico" o
"intensivo"
2º - Elijo el alojamiento en el segundo
select. Éste puede ser
"compartido",
"individual" o
"sin alojamiento"
3º - Introduzco el número de semanas en un campo de texto
4º - Elijo la temporada en un tercer
select. Ésta puede ser
"baja",
"media" o
"alta"
5º - Presiono el botón
"calcular"
y 6º - Muestro el precio en otro campo de texto
En función de la temporada escogida, los precios, tanto del tipo de curso como del tipo de alojamiento, varían.
Éstos precios los he definido en unos
arrays que es donde habría que consultar para asignar, a la variable correspondiente, un valor.
Después de definir los precios el calculo es sencillo; (curso+alojamiento)*semanas
Yo la idea la tengo clara, o eso creo, pero debo de estar obviando algo por desconocimiento. El caso es que siempre se me guarda el mismo valor en la variable, es decir que no coge los datos del array correctamente.
Les dejo el código
Este es el html
Código HTML:
<form action="operacion.php" method="post">
curso
<select name="field1[]" id="field1" >
<option value="basico">Curso Básico</option>
<option value="intensivo">Curso Intensivo</option>
</select>
alojamiento
<select name="field2[]" id="field2" >
<option value="compartido">compartido</option>
<option value="individual">individual</option>
<option value="sinalojamiento">sin alojamiento</option>
</select>
semanas
<input type="text" value="" size="20" name="field3" id="field3" />
temporada
<select name="field4[]" id="field4" >
<option value="baja">Enero-Junio</option>
<option value="media">Junio-Octubre</option>
<option value="alta">Octubre-Diciembre</option>
</select>
<input class="inputForm3" type="submit" name="enviar" value="calcular" />
<input type="text" value="<?php echo $_GET["resultado"]?>" size="20" name="Total" id="Total" readonly="readonly"/>
</form>
y en el php tengo:
Código PHP:
<?php
$preciocurso=0;
$precioalojamiento=0;
$total=0;
$curso=$_POST['field1']; // basico o intensivo
$alojamiento=$_POST['field2']; //compartido, individual o sin alojamiento
$semanas=$_POST['field3']; // n
$temporada=$_POST['field4']; //baja, media o alta
if($curso='basico'){
$precioCurso = array(
0=>100,
1=>200,
2=>300
);
}else{
$precioCurso = array(
0=>200,
1=>400,
2=>600
);
}
if($alojamiento='compartido'){
$precioAlojamiento = array(
0=>100,
1=>200,
2=>300
);
}
if($alojamiento='individual'){
$precioAlojamiento = array(
0=>200,
1=>400,
2=>600
);
}
if($alojamiento='sinalojamiento'){
$precioAlojamiento = 0;
}
if ($temporada='baja'){
$totalCurso=$precioCurso[0];
$totalAlojamiento=$precioAlojamiento[0];
}
if ($temporada='media'){
$totalCurso=$precioCurso[1];
$totalAlojamiento=$precioAlojamiento[1];
}
if ($temporada='alta'){
$totalCurso=$precioCurso[2];
$totalAlojamiento=$precioAlojamiento[2];
}
$total=($totalCurso+$totalAlojamiento)*$semanas;
header("Location: form3.html?resultado=$total");
?>
Así entiendo yo el código php, que igual es donde está el problema (en el código y en como lo entiendo :) ):
1º - Le asigno el valor
"0" a las variables
preciocurso,
precioalojamiento y
total.
2º - Le asigno un valor a las variables
curso,
alojamiento,
semanas y
temporada. Éste valor lo recogerá de lo que seleccionemos en cada campo del formulario.
3º - Si, por ejemplo, el valor de
curso es
"basico", la variable
precioCurso es un
array con tres campos, cada uno con un precio, sino la variable
precioCurso es un
array con tres campos con precios distintos.
4º - Lo mismo pasaría con el valor de
alojamiento. Dependiendo de cual sea, la variable
precioAlojamiento será un
array u otro con distintos precios. Aquí no sé si estoy actuando bien con los
if{}.
5º - Después de definir los
arrays de los que queremos sacar los precios, el valor de la variable
temporada me sirve para; si es "baja" asignarle a la variable
totalCurso el valor
0 del
array precioCurso y a la variable
totalAlojamiento el valor
0 del
array precioAlojamiento. Cogeriamos el valor
1 de ambos
arrays si la variable
temporada es igual a "media", y el
2 si es igual a "alta".
6º - Ahora ya tendriamos un valor para la variable
totalCurso y otro para la variable
totalAlojamiento
7º - Calculamos el total así: (totalCurso+totalAlojamiento)*semanas, y lo guardamos en la variable
total
8º - Lo mostramos en el campo de texto. En esta parte también ando perdidísimo.
De lo que me he dado cuenta es que siempre, independientemente de lo que seleccionemos, lo único que hace el script es meterse en el primer
array que está definido y seleccionar el último valor (el [2]).
Soy incapaz pasar de aquí y no sé si es que estoy planteando mal el problema, me estoy olvidando de algo, estoy dejando de hacer algo o que leches pasa. Ya les digo que son mis primeros pinitos con PHP y es muy posible que al código le falte algo o que simplemente esté mal.
Siento poner un mensaje tan largo pero quería explicarlo bien, espero que así haya sido.
Si me pueden orientar un poco y echarme un cable les estaría muy agradecido.
Les ruego que tengan paciencia con un principiante en esto del PHP como soy yo.
Muchísimas gracias por su tiempo y ayuda.
Un saludo