Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/04/2011, 22:24
carlos2
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 10 meses
Puntos: 2
consultar precio de un array desde un select y calcular

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