Foros del Web » Programando para Internet » PHP »

Atascado en ejercicio de funciones

Estas en el tema de Atascado en ejercicio de funciones en el foro de PHP en Foros del Web. Hola, estoy realizando un ejercicio que me pide lo siguiente: A través de un formulario introducir cinco números, que te los muestre y calcular la ...
  #1 (permalink)  
Antiguo 27/11/2013, 05:08
 
Fecha de Ingreso: octubre-2013
Ubicación: Castellón de la Plana
Mensajes: 9
Antigüedad: 11 años, 2 meses
Puntos: 0
Atascado en ejercicio de funciones

Hola, estoy realizando un ejercicio que me pide lo siguiente:

A través de un formulario introducir cinco números, que te los muestre y calcular la media, todo ello mediante una función..

Planteamiento del ejercicio:




Resultado:



Para intentar resolver el ejercicio, utilizo el siguente código:

Código PHP:
<html>
<head>
<title>aritmetica</title>
</head>
<body>
<?php
function media($lista)
{
return 
array_sum($lista)/count($lista);
}
if (!isset(
$_REQUEST['aceptar']))
{
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'?>">
Lista de números para calcular la media Aritmética:
<br>
<br>
Nº1 =<input type="text" name="muestra" value="">
<br>
Nº2 =<input type="text" name="muestra" value="">
</br>
Nº3 =<input type="text" name="muestra" value="">
</br>
Nº4= <input type="text" name="muestra" value="">
</br>
Nº5= <input type="text" name="muestra" value="">
<br>
<input type="submit" name="aceptar" value="Cálcular">
</form>
<?php
}
else {
echo 
"Estadística:<br />";
echo 
"Muestra: ".$_REQUEST['muestra']."<br />";
$muestra=explode(",",$_REQUEST ['muestra']);
echo 
"<br />";
echo 
"Media aritmética: ".media($muestra);
}
?>
</body>
</html>
Obtengo el siguiente resultado:






Como puedo hacer para que me liste todos los números introducidos y que me calcule la media. Como se puede apreciar sólo me lista el último número...Alguna sugerencia..estoy utilizando la función array_sum...

Saludos y gracias...
  #2 (permalink)  
Antiguo 27/11/2013, 05:10
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: Atascado en ejercicio de funciones

Si todos los input:text tienen el mismo name, sólo enviarás el último, que machacará el valor de los otros. Y si tu formulario tiene 5 inputs, el php deberá recoger 5 $_REQUEST, uno para cada name de los inputs.

Para enviar varios inputs con el mismo name como si fuera un array, se pone "[]" al final del name de cada uno de los inputs.
name="muestra[]"
  #3 (permalink)  
Antiguo 27/11/2013, 05:47
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: Atascado en ejercicio de funciones

Tal cual como dice marlanga necesitas 5 REQUEST por cada name del text, aunque yo no utilizaría REQUEST sino $_POST.

Saludos
  #4 (permalink)  
Antiguo 27/11/2013, 06:23
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 9 meses
Puntos: 96
Respuesta: Atascado en ejercicio de funciones

Amigo prueba que tal asi
Código PHP:
Ver original
  1. <html>
  2. <head>
  3. <title>aritmetica</title>
  4. </head>
  5. <body>
  6. <?php
  7. function media($lista)
  8. {
  9. return array_sum($lista)/count($lista);
  10. }
  11. if (!isset($_POST['aceptar']))
  12. {
  13. ?>
  14.  
  15. <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
  16. Lista de números para calcular la media Aritmética:
  17. <br>
  18. <br>
  19. Nº1 =<input type="text" name="muestra[]" value="">
  20. <br>
  21. Nº2 =<input type="text" name="muestra[]" value="">
  22. </br>
  23. Nº3 =<input type="text" name="muestra[]" value="">
  24. </br>
  25. Nº4= <input type="text" name="muestra[]" value="">
  26. </br>
  27. Nº5= <input type="text" name="muestra[]" value="">
  28. <br>
  29. <input type="submit" name="aceptar" value="Cálcular">
  30. </form>
  31. <?php
  32. }
  33. else {
  34. echo "Estadística:<br />";
  35. echo "Muestra: ";
  36. echo implode(',',$_POST['muestra']). "<br />";
  37. echo "Media aritmética: ".media($_POST['muestra']);
  38. }
  39. ?>
  40. </body>
  41. </html>
Solo te queda validar los datos, que sean solo numeros
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #5 (permalink)  
Antiguo 27/11/2013, 07:21
 
Fecha de Ingreso: octubre-2013
Ubicación: Castellón de la Plana
Mensajes: 9
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Atascado en ejercicio de funciones

Gracias a los tres finalmente lo hice como propuso el compañero xSkArx y salió todo bien, pero me queda la duda de la diferencia entre implode y explode..¿Qué diferencia hay...?

Saludos..
  #6 (permalink)  
Antiguo 27/11/2013, 07:31
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 9 meses
Puntos: 96
Respuesta: Atascado en ejercicio de funciones

Implode los une y explode los separa
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #7 (permalink)  
Antiguo 27/11/2013, 07:33
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: Atascado en ejercicio de funciones

Lo que ha hecho skarx no es más que modificar tu código con lo que yo dije, pero no lo ha probado porque si no se habría dado cuenta de que el implode sobra porque lo que se manda ya es un array.
Algo que también dije, pero que me lo ignoró.
  #8 (permalink)  
Antiguo 27/11/2013, 07:39
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 9 meses
Puntos: 96
Respuesta: Atascado en ejercicio de funciones

Solo use el implode para mostrar los datos en pantalla no para una operacion ni nada mas
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #9 (permalink)  
Antiguo 27/11/2013, 07:46
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: Atascado en ejercicio de funciones

Oh sí, no estuve atento xd.

Etiquetas: atascado, ejercicio, formulario, funciones, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:21.