FOROS DE INFORMATICA
Noticias: Realizada migración del foro, si tienen problemas con alguna imagen reportar al administrador
 
*
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
Marzo 29, 2024, 07:22:30


Ingresar con nombre de usuario, contraseña y duración de la sesión


Páginas: [1]
  Imprimir  
Autor Tema: Duda PHP  (Leído 4370 veces)
elJosu10
Visitante
« : Febrero 16, 2010, 01:27:18 »

Hola soy nuevo en esto y la verdad que no tengo mucha idea de PHP, estoy haciendo uno que me pide que de una serie de notas que le paso me diga cuál es la nota mínima y cuál es la máxima, y no me sale, les dejo con el código para ver si me podéis ayudar:
Citar
<?php
 
  function pintaMenus($seleccionados)
  {
   
    echo "<table border='1'>\n";
   
    echo "<tr>";
    for($i = 1; $i <= 12; $i++)
   {
      echo "<td>Nota $i</td>\n";
    }
    echo "</tr>\n";
   
    echo "<tr>\n";
    for($i = 0; $i < 12; $i++) {
      echo "<td><select name='nota$i'>\n";
     
      for($j = 1; $j <= 10; $j++) {
       
        if($seleccionados[$i] == $j) {
          echo "<option selected=\"selected\">$j</option>";
        } else {
          echo "<option>$j</option>";
        }
      }
      echo "\n</select></td>\n";
    }
    echo "</tr>";
    echo "</table>";
  }

 
  function media($notas) {
   
    $numNotas = count($notas);
   
    $acumulado = 0;
    foreach($notas as $nota) {
   
      $acumulado = $acumulado + $nota;
    }
    $media = $acumulado / $numNotas;
    return $media;
  }

  $enviado = $_POST["enviado"];
  $selecciones = array();
  if($enviado != "") {
   
    for($i = 0; $i < 12; $i++) {
      $selecciones[] = $_POST["nota$i"];
    }
  }
 
  function min($notas){
  echo "El máximo es ".min(1,2,3,4,5,6,7,8,9,10)."";
 
    function max($notas){
  echo "El mínimo es ".max(1,2,3,4,5,6,7,8,9,10)."";
  }
 
?>
<html>
<head>
<title>Ejemplo con bucles</title>
</head>
<body>
<h1>Ejemplo con bucles</h1>
<form name="f1" method="POST" action="bucles.php">
<?php
  pintaMenus($selecciones);
?>

<input type='hidden' name='enviado' value='enviado'>
<input type="submit" value="Actualizar media">

<?php

  if($enviado != "") {
    $media = media($selecciones);
    echo "<p>La media de las notas es $media</p>";
  }
?>

<?php
echo "La nota mínima a sido un $min ";
?>

</form>
</body>
</html>

Me dice que hay un error en la última linea en la de </html>

Como veréis he escrito $min con el echo pero no me sale, agradecería que me ayudárais.
Gracias Baby
En línea
Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #1 : Febrero 16, 2010, 05:22:58 »

Hola, dos cosas, puedes indicar el error exacto que te lanza el log de apache y donde estableces el valor de $min?

Un saludo
En línea

elJosu10
Visitante
« Respuesta #2 : Febrero 16, 2010, 10:28:56 »

Lo he modificado, se me quedaría asi:
Citar
<?php
 
  function pintaMenus($seleccionados)
  {
   
    echo "<table border='1'>\n";
   
    echo "<tr>";
    for($i = 1; $i <= 12; $i++)
   {
      echo "<td>Nota $i</td>\n";
    }
    echo "</tr>\n";
   
    echo "<tr>\n";
    for($i = 0; $i < 12; $i++) {
      echo "<td><select name='nota$i'>\n";
     
      for($j = 1; $j <= 10; $j++) {
       
        if($seleccionados[$i] == $j) {
          echo "<option selected=\"selected\">$j</option>";
        } else {
          echo "<option>$j</option>";
        }
      }
      echo "\n</select></td>\n";
    }
    echo "</tr>";
    echo "</table>";
  }

  function media($notas) {
   
    $numNotas = count($notas);
   
    $acumulado = 0;
    foreach($notas as $nota) {
     
      $acumulado = $acumulado + $nota;
    }

   
    $media = $acumulado / $numNotas;

 
    return $media;
  }

  $enviado = $_POST["enviado"];

 
  $selecciones = array();
  if($enviado != "") {
   
    for($i = 0; $i < 12; $i++) {
      $selecciones[] = $_POST["nota$i"];
    }
  }
 
  function min($notas){
  echo "El mínimo es ".$min.($notas)."";
  return $min;
  }
    function max($notas){
  echo "El máximo es ".$max.(12)."";
  return $max;
  }
 
?>
<html>
<head>
<title>Ejemplo con bucles</title>
</head>
<body>
<h1>Ejemplo con bucles</h1>
<form name="f1" method="POST" action="bucles.php">
<?php
 
  pintaMenus($selecciones);

?>

<input type='hidden' name='enviado' value='enviado'>
<input type="submit" value="Actualizar media">

<?php

  if($enviado != "") {
    $media = media($selecciones);
   
    echo "<p>La media de las notas es $media</p>";
   echo "La nota mínima a sido un $min ";
  }
?>
</form>
</body>
</html>

Me da error en la línea  65 es decir la que está en negrita.

Agradecería que me pudieseis ayudar, gracias
En línea
Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #3 : Febrero 17, 2010, 08:39:16 »

No hay nada en negrita. Aparte no me has contestado la pregunta, dónde estableces el valor de la variable $min?
En línea

elJosu10
Visitante
« Respuesta #4 : Febrero 17, 2010, 10:52:31 »

No hay nada en negrita. Aparte no me has contestado la pregunta, dónde estableces el valor de la variable $min?

Me da error en la línea 65, después del return $min

Y en lo de establecer el valor ya lo hago con el function.

La verdad que no tengo mucha idea de php
En línea
Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #5 : Febrero 17, 2010, 11:04:09 »

De entrada, la variable $min definida dentro de la función min no es visible fuera de la función porque el ámbito de la variable es el de la función que la contiene.

Qué se supone que quieres hacer aquí,

  echo "El mínimo es ".$min.($notas)."";
En línea

elJosu10
Visitante
« Respuesta #6 : Febrero 17, 2010, 01:21:53 »

De entrada, la variable $min definida dentro de la función min no es visible fuera de la función porque el ámbito de la variable es el de la función que la contiene.

Qué se supone que quieres hacer aquí,

  echo "El mínimo es ".$min.($notas)."";

Eso lo tengo que poner en la función?
En línea
Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #7 : Febrero 17, 2010, 01:40:23 »

A ver por partes, la funcion min está mal, ponlo así,

  function min($notas) {
    $min=0;
    foreach($notas as $nota) {
      if($min==0)
          $min=$nota;
      if($nota<$min)
           $min=$nota;
    }
    return $min;
  }


y depués para mostrar el resultado,

   echo "El mínimo es ".min($selecciones)."";

Un saludo
En línea

elJosu10
Visitante
« Respuesta #8 : Febrero 17, 2010, 01:43:18 »

A ver por partes, la funcion min está mal, ponlo así,

  function min($notas) {
    $min=0;
    foreach($notas as $nota) {
      if($min==0)
          $min=$nota;
      if($nota<$min)
           $min=$nota;
    }
    return $min;
  }


y depués para mostrar el resultado,

   echo "El mínimo es ".min($selecciones)."";

Un saludo

Hago eso y me dice que hay un error al cerrar la llave
En línea
Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #9 : Febrero 17, 2010, 04:13:34 »

Asi,

function min($notas) {
    $min=0;
    foreach($notas as $nota) {
      if($min==0){
          $min=$nota;
      }
      if($nota<$min){
           $min=$nota;
      }
    }
    return $min;
  }
En línea

elJosu10
Visitante
« Respuesta #10 : Febrero 18, 2010, 12:02:22 »

No me ha funcionado, por cierto para hacer una tabla de multiplicar?

Modifico: Ya he conseguido la tabla, el otro al final no me ha salido
« Última modificación: Febrero 18, 2010, 12:15:00 por elJosu10 » En línea
Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #11 : Febrero 19, 2010, 08:46:38 »

Ahí lo llevas,

Código:
<?php
 
  
function pintaMenus($seleccionados)
  {
   
    echo 
"<table border='1'>\n";
   
    echo 
"<tr>";
    for(
$i 1$i <= 12$i++)
   {
      echo 
"<td>Nota $i</td>\n";
    }
    echo 
"</tr>\n";
   
    echo 
"<tr>\n";
    for(
$i 0$i 12$i++) {
      echo 
"<td><select name='nota$i'>\n";
     
      for(
$j 1$j <= 10$j++) {
       
        if(
$seleccionados[$i] == $j) {
          echo 
"<option selected=\"selected\">$j</option>";
        } else {
          echo 
"<option>$j</option>";
        }
      }
      echo 
"\n</select></td>\n";
    }
    echo 
"</tr>";
    echo 
"</table>";
  }

 
  function 
media($notas) {
   
    
$numNotas count($notas);
   
    
$acumulado 0;
    foreach(
$notas as $nota) {
   
      
$acumulado $acumulado $nota;
    }
    
$media $acumulado $numNotas;
    return 
$media;
  }

  
$enviado $_POST["enviado"];
  
$selecciones = array();
  if(
$enviado != "") {
   
    for(
$i 0$i 12$i++) {
      
$selecciones[] = $_POST["nota$i"];
    }
  }
 
  function 
notaMinima($notas) {
    
$mininimo=0;
    foreach(
$notas as $nota) {
      if(
$mininimo==0)
          
$mininimo=$nota;
      if(
$nota<$mininimo)
           
$mininimo=$nota;
    }
    return 
$mininimo;
  }
 
  function 
notaMaxima($notas) {
    
$maximo=0;
    foreach(
$notas as $nota) {
      if(
$maximo==0)
          
$maximo=$nota;
      if(
$nota>$maximo)
           
$maximo=$nota;
    }
    return 
$maximo;
  }
 
?>

<html>
<head>
<title>Ejemplo con bucles</title>
</head>
<body>
<h1>Ejemplo con bucles</h1>
<form name="f1" method="POST" action="bucles.php">
<?php
  pintaMenus
($selecciones);
?>


<input type='hidden' name='enviado' value='enviado'>
<input type="submit" value="Actualizar media">

<?php

  
if($enviado != "") {
    
$media media($selecciones);
    echo 
"<p>La media de las notas es $media</p>";
    echo 
"<p>El mínimo es ".notaMinima($selecciones)."</p>";
    echo 
"<p>El máximo es ".notaMaxima($selecciones)."</p>";
  }
?>



</form>
</body>
</html>

Un saludo
« Última modificación: Febrero 19, 2010, 08:53:57 por Etereo » En línea

Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.13 | SMF © 2006-2009, Simple Machines LLC

XHTML 1.0 válido! CSS válido! Dilber MC Theme by HarzeM