Ayuda cotizador

Iniciado por vanus17, 16 Julio 2012, 21:23 PM

0 Miembros y 1 Visitante están viendo este tema.

vanus17

Hola estuve haciendo un cotizador pero me trabe en la última parte. Ya probe todo pero mi nivel no me deja encontrar la solución. Tengo un formulario en el que se cargan ciertos parametro para cotizar, hice dos switch pero en el segundo no emporta que opción elija me tira el mismo resultado. Ojala puedan ayudarme ya que estoy con esto hace un rato largo y no logro que funcione como necesito....

FORMULARIO

<html>
<head>
<title>formulario</title>
</head>
<body>
<form method="post" action="pagina3.php">


Ingrese el valor por lista: <br>
<input type="text" name="lista">
<br>
Ingrese la cantidad de cuotas pagas: <br>
<input type="text" name="cuotas">
<br>
Tipo de plan<br>
<select name="tipo">
<option value="cien">100%</option>
<option value="setenta">70/30</option>
<option value="cinco">75/25</option>
<option value="sesenta">60/40</option>

</select>
Estado del plan<br>
<select name="estado">
<option value="adjudicado">adjudicado</option>
<option value="rescindido">rescindido</option>
<option value="ahorrista">ahorrista</option>
</select>
<br>


<input type="submit" value="pedir cotización">
</form>
</body>
</html>


PAGINA PHP




<html>
<head>
<title>Cotizador</title>
</head>
<body>
<?php
$lista = $_POST['lista'];
$cuotas = $_POST['cuotas'];
$estado = $_POST['estado'];
$tipo = $_POST['tipo'];


$indice1=10;
$indice2=20;
$indice3=30;
$indice4=40;

$valorc=$lista/84;

switch ($tipo)
{
case "cien":
$valor1=round($valorc * 1 * $indice1 * $cuotas);
break;
case "setenta":
$valor1=round($valorc * 0.7 * $indice2 * $cuotas);
break;
case "cinco":
$valor1=round($valorc * 0.7 * $indice2 * $cuotas);
break;
case "sesenta":
$valor1=round($valorc * 0.60 * $indice4 * $cuotas);
break;

}


switch ($estado)
{
case ($estado="adjudicado" && $cuotas >= 30):

$resultado=($valor1 + 1000);

break;

case ($estado="adjudicado" && $cuotas <= 30):

$resultado=($valor1 + 500);

break;

case ($estado="rescindido" && $cuotas >= 13):

$resultado=($valor1 + 400);

break;

case ($estado="rescindido" && $cuotas <= 13):

$resultado=($valor1 + 200);

break;

case ($estado="ahorrista" && $cuotas >= 12):

$resultado=($valor1 + 100);

break;

case ($estado="ahorrista" && $cuotas <= 12):

$resultado=($valor1 + 300);

break;

}
//Estado del plan? aca no me esta diferenciando la cuenta para el plan elegido


echo "Su cotizacion: <b>$resultado</b><br>";


?>

Spider-Net

#1
O usas un if anidado o usas un switch pero no uses los dos combinados. No me extraña que no funcione xD.

El switch es para comparar valores fijos como hiciste en el primero: case "cien", case "setenta" o lo que sea, pero si necesitas hacer comparaciones y demás usa if anidados. Algo así:

Código (php) [Seleccionar]
if($estado=="adjudicado" && $cuotas >= 30){
  $resultado=($valor1 + 1000);
}elseif($estado=="adjudicado" && $cuotas <= 30){
  $resultado=($valor1 + 500);
}elseif($estado=="rescindido" && $cuotas >= 13){
  $resultado=($valor1 + 400);
}


Y por cierto, las comparaciones se hacen con doble igual ==, un solo igual es para asignaciones.

darkvidhack

Si no recuerdo mal, al final de los switch debes poner un 'default' que se utiliza en caso de que el valor de la variable no coincida con tus 'case', mirate la implementación de esta estructura ;)

Saludos.
live and let die

la duda es la base de todo conocimiento

Spider-Net

El default es solo opcional, no obligatorio.