Programar con php para cálculo de valores en una lista de números

Soy novatoen php y quisiera su ayuda por favor:
La cuestión es que realice un programilla sencillo de calcular el mayor y menor (a través de botones radio)valor de una lista de números en un control de selección múltiple, pues bien en si el programa me funciona pero con la salvedad que me muestra como respuesta es el indice de el valor encontrado como mayor o menor según escoja en los botones radio, y no se el porque si alguien me puede ayudar se lo agradecería por que llevo dándole pruebas y nada... Uds son expertos y confío en su orientación.
El programa que maneja el formulario de entrada es:
<td align="center" valign="top"> </td>
<html>
<head>
<title>OBTENER EL MAYOR O MENOR DE NUMEROS SELECCIONADOS</title>
</head>
<body>
<form action="calcular.php" method="post">
<td valign="top" align="center">
<td align="center">LISTA DE VALORES::<br />
<select name="lista[]" multiple="multiple">
<!--<select name="lista[]" multiple="multiple" size=3>-->
<option value=0>1</option>
<option value=1>4</option>
<option value=2>12</option>
<option value=3>7</option>
<option value=4>50</option>
</select><br><br>
</td>
<td align="right">
MAYOR:<input type="radio" name="opcion" value="mayor" /><br>
MENOR:<input type="radio" name="opcion" value="menor" /><br>
</td>
<br>
<input type="submit" name="enviar">
<input type= reset value="limpiar">
</form>
</body>
</html>
************************************
el codigo que hace el calculo en php es:
<?php
error _reporting(E_ALL);
&radio=$_POST['opcion'];
$lista1=$_POST['lista'];
//echo count($lista1); //esta lines es de prueba para verificar cuantos elementos estan marcados en la lista de seleccion multiple y me da resultado correcto
if($radio == "mayor" && isset ($lista1))
{
$mayor=$lista1[0];
//echo " el numero mayor aqui es:",$mayor;//esta linea es de prueba y ya desde aqui me esta mostrando es el valor que tiene el value de la opcion select
for($i=1;$i<count($lista1);$i++)
{
   if($lista1[$i] > $mayor)
   {
    $mayor=$lista1[$i];
   }
}
Echo "el numero mayor es:". $Mayor ; //aquí me muestra el valor del value que tiene el select para el numero mayor de la lista seleccionada
}
else
{
  if($radio == "menor")
   {
       for($i=0;$i<count($lista1);$i++)
        {
           for($j=1;$j<=count($lista1);$j++)
            {
                 if($lista1[$i] <= $lista1[$j]) //linea 37
                 {
                    $menor=$lista1[$i];
                  }
              }
         }
       echo "<B>$menor</B>";
     }
}
?>
*** otra cosa por favor, porque cuando se ejecuta el else del código php es decir cuando el usuario pulsa el botón radio menor, si lo notan hago otra forma de calculo que en mi concepto de lógica es válido sin embargo el servidor php me envía el siguiente error:
Notice: Undefined offset :3 in C:\wamp\www\calcular.php on line 37
este error segun he investigado tiene que ver con que no me reconoce la variable lista1 como un vector pero porque si en el codigo de formulario html el select multiple en su name lo he definido como un vector es decir como lista[] y en el codigo php hago:
$lista1=$POST['lista'];
1

1 respuesta

Respuesta
1
y...
.htm
<!-- INICIO --->
<form action="calcular.php" method="post">
Lista de valores::
<select multiple="multiple" name="lista[]"> <!--<select name="lista[]" multiple="multiple" size=3>--> <option value="1">1</option> <option value="4">4</option> <option value="12">12</option> <option value="7">7</option> <option value="50">50</option> </select>
MAYOR:<input name="opcion" type="radio" value="mayor" />
MENOR:<input name="opcion" type="radio" value="menor" />
<input name="enviar" type="submit" />
<input type="reset" value="limpiar" />
</form>
<!-- - FIN -->
calcular.php
/**************  INICIO  *******************/
<?php
error_reporting(E_ALL);
$radio=$_POST['opcion'];
$lista1=$_POST['lista'];
$mayor = $lista1[0];
$menor = $lista1[0];
if($radio == "mayor" && isset ($lista1)) {
for($i=0;$i<count($lista1);$i++) {
if($lista1[$i] > $mayor){
$mayor=$lista1[$i];
}
}
Echo "el numero mayor es: <b>$mayor</b>" ; //aquí me muestra el valor del value que tiene el select para el numero mayor de la lista seleccionada
}
else {
if($radio == "menor"){
for($i=0;$i<count($lista1);$i++){
if($lista1[$i] < $menor){
$menor=$lista1[$i];
}
}
echo "el numero menor es: <B>$menor</B>";
}
}
?>
/**************** FIN *************/

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas