Foros del Web » Programando para Internet » PHP »

generar select en php

Estas en el tema de generar select en php en el foro de PHP en Foros del Web. hola, estoy haciendo un cursillo de php y estoy bastante estancado, tengo que hacer un ejercicio de pasar informacion de una pagina a otra y ...
  #1 (permalink)  
Antiguo 03/04/2013, 05:49
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
generar select en php

hola, estoy haciendo un cursillo de php y estoy bastante estancado, tengo que hacer un ejercicio de pasar informacion de una pagina a otra y luego generar una tabla, el problema es que en la pagina index tengo que generar mediante php un select con las opciones incluidas en una matriz que esta en otra página llamada datos.php.
lo que hago es lo siguiente:
- llamo con un requiere a la pagina de datos
-creo el slect
- paso los datos a la otra pagina de resultados donde genero una tabla con los resultados

mi problema es ese formulario, no se como generarlo en php de forma que no tenga que escribir nada, sino que los datos se escojan de la matriz de la pagina de datos.php

Código PHP:
Ver original
  1. <select name="el_piloto">
  2.             <option value=0>Fernando Alonso</option>"
  3.            <option value=1>Michael Schumacher</option>
  4.            <option value=2>Felipe Massa</option>
  5.            <option value=3>Giancarlo Fisichella</option>
  6.            <option value=4>Kimi Raikkonen</option>
  7.            <option value=5>Jenson Button</option>
  8.            </select>&nbsp;&nbsp;<INPUT TYPE="submit" VALUE="Buscar">
  9.            </FONT></p>
  10.            </FORM>
eso es lo que necesito como resultado en html creado en php y que coja los nombres de la pagina de datos.php

no se si me explico bien ^^

Gracias por su tiempo y ayuda
  #2 (permalink)  
Antiguo 03/04/2013, 06:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: generar select en php

Si pero como no muestras como es la pagina datos... no te podemos decir gran cosa...


Si, $datos es el array de datos y es una matriz con dos nodos en cada elemento, uno llamado value y el otro llamado nombre

Código PHP:
Ver original
  1. for ($i=0;$i<count($datos);$++){
  2.  echo "<option value='".$datos[$i]['value']."'>".$datos[$i]['nombre']."</option>";
  3. }

esto te va a escribir la options del select.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 03/04/2013, 06:01
 
Fecha de Ingreso: abril-2013
Ubicación: Sevilla
Mensajes: 23
Antigüedad: 11 años
Puntos: 0
Busqueda Respuesta: generar select en php

Hola

creo que preguntas esto:

Código PHP:
require('datos.php'); // en el existe un array de datos, supongamos con id y nombre
$opciones '';
for(
$q 0$q count($datos); $q++){
     
$opciones .= '<option value="'.$datos['id'].'">'.$datos['nombre'].'</option>';

y en el html
Código HTML:
<select name="miselect">
<?php echo $opciones; ?>
</select> 
un saludo!

PD: quimfv mas rapido que el rayo! hemos escrito la misma solucion a la vez :D
  #4 (permalink)  
Antiguo 03/04/2013, 06:04
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

Código PHP:
Ver original
  1. <?
  2. $matriz_f1 = array(
  3.  
  4.     0=>array("nombre"=>"Fernando Alonso",
  5.          "carreras"=>array(0=>array("premio"=>"Bharein", "posicion"=>1),
  6.                     1=>array("premio"=>"Malasia", "posicion"=>2),
  7.                     2=>array("premio"=>"Australia", "posicion"=>1),
  8.                     3=>array("premio"=>"S.Marino", "posicion"=>2),
  9.                     4=>array("premio"=>"Europa", "posicion"=>2),
  10.                     5=>array("premio"=>"España", "posicion"=>1),
  11.                     6=>array("premio"=>"Mónaco", "posicion"=>1)
  12.                     )),
  13.     1=>array("nombre"=>"Michael Schumacher",
  14.          "carreras"=>array(0=>array("premio"=>"Bharein", "posicion"=>2),
  15.                     1=>array("premio"=>"Malasia", "posicion"=>6),
  16.                     2=>array("premio"=>"Australia", "posicion"=>-1),
  17.                     3=>array("premio"=>"S.Marino", "posicion"=>1),
  18.                     4=>array("premio"=>"Europa", "posicion"=>1),
  19.                     5=>array("premio"=>"España", "posicion"=>2),
  20.                     6=>array("premio"=>"Mónaco", "posicion"=>5)
  21.                     )),
  22.     2=>array("nombre"=>"Felipe Massa",
  23.          "carreras"=>array(0=>array("premio"=>"Bharein", "posicion"=>9),
  24.                     1=>array("premio"=>"Malasia", "posicion"=>5),
  25.                     2=>array("premio"=>"Australia", "posicion"=>-1),
  26.                     3=>array("premio"=>"S.Marino", "posicion"=>4),
  27.                     4=>array("premio"=>"Europa", "posicion"=>3),
  28.                     5=>array("premio"=>"España", "posicion"=>4),
  29.                     6=>array("premio"=>"Mónaco", "posicion"=>9)
  30.                     )),
  31.     3=>array("nombre"=>"Giancarlo Fisichella",
  32.          "carreras"=>array(0=>array("premio"=>"Bharein", "posicion"=>-1),
  33.                     1=>array("premio"=>"Malasia", "posicion"=>1),
  34.                     2=>array("premio"=>"Australia", "posicion"=>5),
  35.                     3=>array("premio"=>"S.Marino", "posicion"=>8),
  36.                     4=>array("premio"=>"Europa", "posicion"=>6),
  37.                     5=>array("premio"=>"España", "posicion"=>3),
  38.                     6=>array("premio"=>"Mónaco", "posicion"=>6)
  39.                     )),
  40.     4=>array("nombre"=>"Kimi Raikkonen",
  41.          "carreras"=>array(0=>array("premio"=>"Bharein", "posicion"=>3),
  42.                     1=>array("premio"=>"Malasia", "posicion"=>-1),
  43.                     2=>array("premio"=>"Australia", "posicion"=>2),
  44.                     3=>array("premio"=>"S.Marino", "posicion"=>5),
  45.                     4=>array("premio"=>"Europa", "posicion"=>4),
  46.                     5=>array("premio"=>"España", "posicion"=>5),
  47.                     6=>array("premio"=>"Mónaco", "posicion"=>-1)
  48.                     )),
  49.     5=>array("nombre"=>"Jenson Button",
  50.          "carreras"=>array(0=>array("premio"=>"Bharein", "posicion"=>4),
  51.                     1=>array("premio"=>"Malasia", "posicion"=>3),
  52.                     2=>array("premio"=>"Australia", "posicion"=>-1),
  53.                     3=>array("premio"=>"S.Marino", "posicion"=>7),
  54.                     4=>array("premio"=>"Europa", "posicion"=>-1),
  55.                     5=>array("premio"=>"España", "posicion"=>6),
  56.                     6=>array("premio"=>"Mónaco", "posicion"=>11)
  57.                     ))
  58. );
  59. ?>
Esa es la matriz de datos, en el select solo tengo que incluir el "nombre"
  #5 (permalink)  
Antiguo 03/04/2013, 06:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: generar select en php

echo "<option value='".$datos[$i]['value']."'>".$datos[$i]['nombre']."</option>";

$opciones .= '<option value="'.$datos['id'].'">'.$datos['nombre'].'</option>';

No exactamente te falta el numerador del bucle....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (permalink)  
Antiguo 03/04/2013, 06:07
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: generar select en php

Código PHP:
Ver original
  1. for ($i=0;$i<count($matriz_f1);$++){
  2.  echo "<option value='".$i."'>".$matriz_f1[$i]['nombre']."</option>";
  3. }
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 03/04/2013, 06:15
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

Escribiendo
Código PHP:
Ver original
  1. <FORM ACTION="resultado.php" METHOD="POST">
  2.   <P><FONT face="Georgia, Times New Roman, Times, serif" size="3" color=white>
  3.         Seleccione el piloto que desea consultar:
  4. <?
  5. require("datos.php");
  6. for ($i=0;$i<count($matriz_f1);$++){
  7.  echo "<option value='".$i."'>".$matriz_f1[$i]['nombre']."</option>";
  8. }
  9. ?>
como me has dicho, me genera esto: Seleccione el piloto que desea consultar: ".$matriz_f1[$i]['nombre'].""; } ?>
  #8 (permalink)  
Antiguo 03/04/2013, 07:07
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

he probado de esta otra forma (que es casi igual):
Código PHP:
Ver original
  1. <FORM ACTION="resultado.php" METHOD="POST">
  2.   <P><FONT face="Georgia, Times New Roman, Times, serif" size="3" color=white>
  3.         Seleccione el piloto que desea consultar:
  4. <select name="el_piloto">
  5.     <?
  6.         for ($i=0; $i<sizeof($matriz_f1); $i++)
  7.           echo "<option value=$i>".$matriz_f1[$i]["nombre"]."</option>";
  8.     ?>
  9.     </select>&nbsp;&nbsp;<INPUT TYPE="submit" VALUE="Buscar">

Se me genera todo bien pero no aparece el "nombre" en el formulario
  #9 (permalink)  
Antiguo 03/04/2013, 12:55
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

¿alguien pude darme algún consejo de que hacer?
Gracias
  #10 (permalink)  
Antiguo 03/04/2013, 13:04
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: generar select en php

intenta imprimiendo los option de esta forma:


Código PHP:
Ver original
  1. echo '<option value="'.$i.'">'.$matriz_f1[$i]["nombre"].'</option>';
  #11 (permalink)  
Antiguo 03/04/2013, 14:40
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

nada, siguen sin aparecer los nombres en el formulario, no se me ocurre que hacer...
¿Podría ser algún problema de configuración de mi servidor web?, estoy usando Wampserver con la configuración que viene por defecto
  #12 (permalink)  
Antiguo 03/04/2013, 15:25
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: generar select en php

has esto
Código PHP:
Ver original
  1. echo "<pre>";
  2. print_r($matriz_f1);
  3. echo "</pre>"
Y postea el resultado...
  #13 (permalink)  
Antiguo 03/04/2013, 17:14
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

no hace nada eso, no sale nada en pantalla, que debería salir?
  #14 (permalink)  
Antiguo 03/04/2013, 17:21
 
Fecha de Ingreso: abril-2013
Ubicación: Sevilla
Mensajes: 23
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

deberia salir el array $matriz_f1 desglosado, lo que parece es que no esta definido el array.

prueba cambiando el sizeof del for por un count, no debe ser el problema pero por probar...

de todas formas ese array deberia mostrarse con el print_r, si ni siquiera muestra array{} es que no esta definido...
  #15 (permalink)  
Antiguo 04/04/2013, 01:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: generar select en php

Código PHP:
Ver original
  1. include ('datos.php');///Esto lo tienes?
  2. echo "<pre>";
  3. print_r($matriz_f1);
  4. echo "</pre>"

Si print_r no muestra nada es que no tienes los datos....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #16 (permalink)  
Antiguo 04/04/2013, 02:23
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

vale, ya esta solucionado, es algún problema que genera el wampserver, porque lo he subido a un dominio que tengo y funciona correctamente.
Gracias por la ayuda.
  #17 (permalink)  
Antiguo 04/04/2013, 04:00
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

hola, otra pequeña duda ^^
necesito sumar los datos de la matriz referentes al nombre del select que pase de la pagina anterior a la nueva de resultados. Había pensado en sumarlos de alguna de estas dos formas, pero ninguna me funciona:
Código PHP:
Ver original
  1. require("datos.php");
  2. $r=$_REQUEST['el_piloto'];
  3. $resultado=0;
  4. foreach ($matriz_f1[$r]["posicion"] as $valor) {
  5.     $resultado=$resultado+$valor;
  6.  }
  7. echo "<font color=white>Número total de puntos conseguidos en el campeonato: <b>".$resultado."</b></font>";
Código PHP:
Ver original
  1. require("datos.php");
  2. $r=$_REQUEST['el_piloto'];
  3. echo array_sum($matriz_f1[$r]["posicion"]);
  #18 (permalink)  
Antiguo 04/04/2013, 04:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: generar select en php

El array datos tiene un elemento que a su vez es un array luego para sumar las posiciones de un piloto tienes que recorrer ese array...

$datos[X]["carreras"] <--- esto es el array de carreras del piloto X

Luego para sumar las posiciones

Código PHP:
Ver original
  1. $r=$_REQUEST['el_piloto'];
  2. $resultado=0;
  3. for ($i=0;$i<count($datos[$r]["carreras"]);$i++){
  4. $resultado+=$datos[$r]["carreras"][$i]["posicion"];
  5. }
  6. echo $resultado;

Lo ves....?

Si la posición son los puntos claro....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #19 (permalink)  
Antiguo 04/04/2013, 05:50
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

dependiendo de la posición tiene tantos puntos, he hecho esto para que guarde en una variable los puntos:
Código PHP:
Ver original
  1. $r=$_REQUEST['el_piloto'];
  2. $resultado=0;
  3. for ($i=0;$i<sizeof($matriz_f1[$r]["posicion"]);$i++){
  4.     if ($matriz_f1["posicion"]=-1) {
  5.     $resultado=$resultado+0;}
  6.     elseif ($matriz_f1["posicion"]=1) {
  7.     $resultado=$resultado+10;}
  8.     elseif ($matriz_f1["posicion"]=2) {
  9.     $resultado=$resultado+8;}
  10.     elseif ($matriz_f1["posicion"]=3) {
  11.     $resultado=$resultado+6;}
  12.     elseif ($matriz_f1["posicion"]=4) {
  13.     $resultado=$resultado+5;}
  14.     elseif ($matriz_f1["posicion"]=5) {
  15.     $resultado=$resultado+4;}
  16.     elseif ($matriz_f1["posicion"]=6) {
  17.     $resultado=$resultado+3;}
  18.     elseif ($matriz_f1["posicion"]=7) {
  19.     $resultado=$resultado+2;}
  20.     elseif ($matriz_f1["posicion"]=8) {
  21.     $resultado=$resultado+1;}
  22.     elseif ($matriz_f1["posicion"]>8) {
  23.     $resultado=$resultado+0;}
  24. }
  25. echo "<font color=white>Número total de puntos conseguidos en el campeonato: <b>".$resultado."</b></font>";
  26. ?>
Pero no funciona, el resultado es 0 y nunca puede ser 0. Hasta donde yo entiendo estoy haciendo un bucle en el que si el número que digo en el if coincide con el de posición, sumo tanto a la variable, y luego ofrezco la suma total, pero no funciona.
  #20 (permalink)  
Antiguo 04/04/2013, 06:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: generar select en php

Varios errores

$matriz_f1["posicion"]=8 esto asigna 8 a $matriz_f1["posicion"].
$matriz_f1["posicion"]==8 esto compara $matriz_f1["posicion"] con 8.

No se de donde sale $matriz_f1 para llegar a posicion tenias que hacer el bucle sobre

$datos[$r]["carreras"]

o si no previamente puedes hacer

$matriz_f1=$datos[$r]["carreras"];

y luego recorrerlo


Código PHP:
Ver original
  1. $r=$_REQUEST['el_piloto'];
  2. $resultado=0;
  3. $matriz_f1=$datos[$r]["carreras"];
  4. for ($i=0;$i<count($matriz_f1);$i++){
  5.     if ($matriz_f1[$i]["posicion"]==1) {
  6.          $resultado+=10;
  7.     }elseif ($matriz_f1[$i]["posicion"]==2) {
  8.          $resultado+=8;
  9.     }elseif ($matriz_f1[$i]["posicion"]==3) {
  10.          $resultado+=6;
  11.     }elseif ($matriz_f1[$i]["posicion"]==4) {
  12.          $resultado+=5;
  13.     }elseif ($matriz_f1[$i]["posicion"]==5) {
  14.         $resultado+=4;
  15.     }elseif ($matriz_f1[$i]["posicion"]==6) {
  16.         $resultado+=3;
  17.     }elseif ($matriz_f1[$i]["posicion"]==7) {
  18.         $resultado+=2;
  19.     }elseif ($matriz_f1[$i]["posicion"]==8) {
  20.         $resultado+=1;
  21.     }
  22.  
  23. /*else{
  24. *       $resultado+=0;
  25. *   }
  26. * esto no es necesario sumar cero es lo mismo que no sumar */
  27. }
  28. echo "<font color=white>Número total de puntos conseguidos en el campeonato: <b>".$resultado."</b></font>";
  29. ?>

<font color=white> <b> esto es obsoleto usa css.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 04/04/2013 a las 06:33
  #21 (permalink)  
Antiguo 04/04/2013, 06:37
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

Me da error este código y no me genera nada.
No entiendo el porque de la variable $datos, esa variable no la tengo en ningún lado.
Siento la lata que te estoy dando :(
  #22 (permalink)  
Antiguo 04/04/2013, 06:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: generar select en php

$matriz_f1 cierto... he contestado de memoria....

Código PHP:
Ver original
  1. $r=$_REQUEST['el_piloto'];
  2. $resultado=0;
  3. $carreras=$matriz_f1[$r]["carreras"];
  4. for ($i=0;$i<count($carreras);$i++){
  5.     if ($carreras[$i]["posicion"]==1) {
  6.          $resultado+=10;
  7.     }elseif ($carreras[$i]["posicion"]==2) {
  8.          $resultado+=8;
  9.     }elseif ($carreras[$i]["posicion"]==3) {
  10.          $resultado+=6;
  11.     }elseif ($carreras[$i]["posicion"]==4) {
  12.          $resultado+=5;
  13.     }elseif ($carreras[$i]["posicion"]==5) {
  14.         $resultado+=4;
  15.     }elseif ($carreras[$i]["posicion"]==6) {
  16.         $resultado+=3;
  17.     }elseif ($carreras[$i]["posicion"]==7) {
  18.         $resultado+=2;
  19.     }elseif ($carreras[$i]["posicion"]==8) {
  20.         $resultado+=1;
  21.     }
  22.  
  23. /*else{
  24. *       $resultado+=0;
  25. *   }
  26. * esto no es necesario sumar cero es lo mismo que no sumar */
  27. }
  28. echo "<font color=white>Número total de puntos conseguidos en el campeonato: <b>".$resultado."</b></font>";
  29. ?>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #23 (permalink)  
Antiguo 04/04/2013, 07:16
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

A ver, voy a postear todo el código porque algo no va bien y no se ya que es, el bucle de sumar las posiciones da algún error porque no se genera la página:
index:
Código PHP:
Ver original
  1. <HTML>
  2.     <HEAD><TITLE>Unidad 2 - Formula 1</TITLE></HEAD>
  3.    
  4. <BODY bgcolor="#003399">
  5. <CENTER>
  6.     <HR><img src=logo_f1.gif>
  7.   <H1><FONT color="white">FÓRMULA 1</FONT></H1>
  8.   <HR>
  9.   <FORM ACTION="resultado.php" METHOD="POST">
  10.   <P><FONT face="Georgia, Times New Roman, Times, serif" size="3" color=white>
  11.         Seleccione el piloto que desea consultar:
  12. <select name="el_piloto">
  13. <?
  14. include("datos.php");
  15.         for ($i=0; $i<sizeof($matriz_f1); $i++)
  16.           echo '<option value="'.$i.'">'.$matriz_f1[$i]["nombre"].'</option>';
  17. ?>
  18.     </select>&nbsp;&nbsp;<INPUT TYPE="submit" VALUE="Buscar">
  19. </CENTER>
  20. </BODY></HTML>
Página de resultados:
Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Unidad 2 - Formula 1</title>
  6. </head>
  7. <BODY bgcolor="#003399"><CENTER>
  8. <HR><img src=logo_f1.gif>
  9. <H1><FONT color="white">FÓRMULA 1</FONT></H1>
  10.  <HR>
  11. <P><FONT face="Georgia, Times New Roman, Times, serif" size="3" color=white>
  12. <? 
  13. require("datos.php");
  14. $r=$_REQUEST['el_piloto'];
  15. $p=$matriz_f1[$r]["nombre"];
  16. echo "La clasificación de  <B><font size=+1>".$p. "</font></B> es:  </FONT></p>";
  17. if (isset($_REQUEST['el_piloto'])) $el_piloto=$_REQUEST['el_piloto'];
  18. if (!isset($el_piloto)) die("ERROR: no se ha definido la variable 'el_piloto'");
  19. $carreras=$matriz_f1[$el_piloto]["carreras"];
  20. $resultado=0;
  21. echo "<p>";
  22. for ($i=0;$i<count($carreras);$i++){
  23.     if ($carreras[$i]["posicion"]==1) {
  24.          $resultado+=10;
  25.     }elseif ($carreras[$i]["posicion"]==2) {
  26.          $resultado+=8;
  27.     }elseif ($carreras[$i]["posicion"]==3) {
  28.          $resultado+=6;
  29.     }elseif ($carreras[$i]["posicion"]==4) {
  30.          $resultado+=5;
  31.     }elseif ($carreras[$i]["posicion"]==5) {
  32.         $resultado+=4;
  33.     }elseif ($carreras[$i]["posicion"]==6) {
  34.         $resultado+=3;
  35.     }elseif ($carreras[$i]["posicion"]==7) {
  36.         $resultado+=2;
  37.     }elseif ($carreras[$i]["posicion"]==8) {
  38.         $resultado+=1;
  39.     }
  40. echo "<font color=white>Número total de puntos conseguidos en el campeonato: <b>".$resultado."</b></font>";
  41. ?>
  42. <P><INPUT type="button" value="<- Volver atr&aacute;s" onclick="history.back();">
  43. </CENTER>
  44. </body>
  45. </html>
Página de datos:
Código PHP:
Ver original
  1. <?
  2. $matriz_f1 = array(
  3.  
  4.     0=>array("nombre"=>"Fernando Alonso",
  5.          "carreras"=>array(0=>array("premio"=>"Bharein", "posicion"=>1),
  6.                     1=>array("premio"=>"Malasia", "posicion"=>2),
  7.                     2=>array("premio"=>"Australia", "posicion"=>1),
  8.                     3=>array("premio"=>"S.Marino", "posicion"=>2),
  9.                     4=>array("premio"=>"Europa", "posicion"=>2),
  10.                     5=>array("premio"=>"España", "posicion"=>1),
  11.                     6=>array("premio"=>"Mónaco", "posicion"=>1)
  12.                     )),
  13.     1=>array("nombre"=>"Michael Schumacher",
  14.          "carreras"=>array(0=>array("premio"=>"Bharein", "posicion"=>2),
  15.                     1=>array("premio"=>"Malasia", "posicion"=>6),
  16.                     2=>array("premio"=>"Australia", "posicion"=>-1),
  17.                     3=>array("premio"=>"S.Marino", "posicion"=>1),
  18.                     4=>array("premio"=>"Europa", "posicion"=>1),
  19.                     5=>array("premio"=>"España", "posicion"=>2),
  20.                     6=>array("premio"=>"Mónaco", "posicion"=>5)
  21.                     )),
  22.     2=>array("nombre"=>"Felipe Massa",
  23.          "carreras"=>array(0=>array("premio"=>"Bharein", "posicion"=>9),
  24.                     1=>array("premio"=>"Malasia", "posicion"=>5),
  25.                     2=>array("premio"=>"Australia", "posicion"=>-1),
  26.                     3=>array("premio"=>"S.Marino", "posicion"=>4),
  27.                     4=>array("premio"=>"Europa", "posicion"=>3),
  28.                     5=>array("premio"=>"España", "posicion"=>4),
  29.                     6=>array("premio"=>"Mónaco", "posicion"=>9)
  30.                     )),
  31.     3=>array("nombre"=>"Giancarlo Fisichella",
  32.          "carreras"=>array(0=>array("premio"=>"Bharein", "posicion"=>-1),
  33.                     1=>array("premio"=>"Malasia", "posicion"=>1),
  34.                     2=>array("premio"=>"Australia", "posicion"=>5),
  35.                     3=>array("premio"=>"S.Marino", "posicion"=>8),
  36.                     4=>array("premio"=>"Europa", "posicion"=>6),
  37.                     5=>array("premio"=>"España", "posicion"=>3),
  38.                     6=>array("premio"=>"Mónaco", "posicion"=>6)
  39.                     )),
  40.     4=>array("nombre"=>"Kimi Raikkonen",
  41.          "carreras"=>array(0=>array("premio"=>"Bharein", "posicion"=>3),
  42.                     1=>array("premio"=>"Malasia", "posicion"=>-1),
  43.                     2=>array("premio"=>"Australia", "posicion"=>2),
  44.                     3=>array("premio"=>"S.Marino", "posicion"=>5),
  45.                     4=>array("premio"=>"Europa", "posicion"=>4),
  46.                     5=>array("premio"=>"España", "posicion"=>5),
  47.                     6=>array("premio"=>"Mónaco", "posicion"=>-1)
  48.                     )),
  49.     5=>array("nombre"=>"Jenson Button",
  50.          "carreras"=>array(0=>array("premio"=>"Bharein", "posicion"=>4),
  51.                     1=>array("premio"=>"Malasia", "posicion"=>3),
  52.                     2=>array("premio"=>"Australia", "posicion"=>-1),
  53.                     3=>array("premio"=>"S.Marino", "posicion"=>7),
  54.                     4=>array("premio"=>"Europa", "posicion"=>-1),
  55.                     5=>array("premio"=>"España", "posicion"=>6),
  56.                     6=>array("premio"=>"Mónaco", "posicion"=>11)
  57.                     ))
  58. );
  59. ?>
Lo he subido todo a un dominio que tengo vació y sin uso para que se vea en ejecución: http://peluqueriamarperez.es/index.php
  #24 (permalink)  
Antiguo 04/04/2013, 07:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: generar select en php

Código PHP:
Ver original
  1. require("datos.php");
  2. $r=$_REQUEST['el_piloto'];
  3. $p=$matriz_f1[$r]["nombre"];
  4. echo "La clasificación de  <B><font size=+1>".$p. "</font></B> es:  </FONT></p>";
  5. if (isset($_REQUEST['el_piloto'])) $el_piloto=$_REQUEST['el_piloto'];
  6. if (!isset($el_piloto)) die("ERROR: no se ha definido la variable 'el_piloto'");
  7. $carreras=$matriz_f1[$el_piloto]["carreras"];

mejor

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Unidad 2 - Formula 1</title>
  6. </head>
  7. <BODY bgcolor="#003399"><CENTER>
  8. <HR><img src=logo_f1.gif>
  9. <H1><FONT color="white">FÓRMULA 1</FONT></H1>
  10.  <HR>
  11. <P><FONT face="Georgia, Times New Roman, Times, serif" size="3" color=white>
  12. <?php
  13. require("datos.php");
  14. if (isset($_REQUEST['el_piloto'])){
  15.    $el_piloto=$_REQUEST['el_piloto'];
  16.    $nombre=$matriz_f1[$el_piloto]["nombre"];
  17.    echo "La clasificación de  <B><font size=+1>".$nombre. "</font></B> es:  </FONT></p>";
  18. ////Aqui te falta calcular y mostrar la clasificación
  19. $carreras=$matriz_f1[$el_piloto]["carreras"];
  20. $resultado=0;
  21. for ($i=0;$i<count($carreras);$i++){
  22.     if ($carreras[$i]["posicion"]==1) {
  23.          $resultado+=10;
  24.     }elseif ($carreras[$i]["posicion"]==2) {
  25.          $resultado+=8;
  26.     }elseif ($carreras[$i]["posicion"]==3) {
  27.          $resultado+=6;
  28.     }elseif ($carreras[$i]["posicion"]==4) {
  29.          $resultado+=5;
  30.     }elseif ($carreras[$i]["posicion"]==5) {
  31.         $resultado+=4;
  32.     }elseif ($carreras[$i]["posicion"]==6) {
  33.         $resultado+=3;
  34.     }elseif ($carreras[$i]["posicion"]==7) {
  35.         $resultado+=2;
  36.     }elseif ($carreras[$i]["posicion"]==8) {
  37.         $resultado+=1;
  38.     }
  39. }
  40. echo "<p><font color=white>Número total de puntos conseguidos en el campeonato: <b>".$resultado."</b></font><br />";
  41. }else{
  42.   echo "ERROR: no se ha definido la variable 'el_piloto'<br />";
  43. }
  44. ?>
  45. <P><INPUT type="button" value="<- Volver atr&aacute;s" onclick="history.back();">
  46. </CENTER>
  47. </body>
  48. </html>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #25 (permalink)  
Antiguo 04/04/2013, 13:25
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

Última duda:
Código PHP:
Ver original
  1. require("datos.php");
  2. $carreras=$matriz_f1[$el_piloto]["carreras"];
  3. $premios=$carreras["premio"];
  4. echo "<TABLE BORDER=2 width=300>";
  5. echo "<TR>";
  6. echo "<TD width=70 align=CENTER><B><FONT color=white> Gran Premio </FONT></B></TD>";    
  7. echo "<TD width=70 align=CENTER><B><FONT color=white> Posición </FONT></B></TD>";
  8. echo "<TD width=70 align=CENTER><B><FONT color=white> Puntos </FONT></B></TD>";
  9. echo "</TR>";
  10. for ($a=0;$a<count($carreras);$a++)
  11.       {
  12.               echo "<TR>";            
  13.               printf("<TD align=CENTER>%s</TD>", $premio);              
  14.               print "</TR>";
  15.       }
  16. echo "</TABLE>";
Eso es lo que estoy haciendo para generar una tabla con el contenido de la array, almaceno el "premio" en $premios para ponerlo en el bucle y que se genere la tabla, pero no genera nada, he probado también en vez de almacenarlo en una variable, que creo que no se debe, a generarlo en el bucle de la siguiente manera:
Código HTML:
Ver original
  1. for ($a=0;$a<count($carreras);$a++)
  2.      {
  3.              echo "<TR>";            
  4.               printf("<TD align=CENTER>%s</TD>", $matriz_f1['el_piloto']["carreras"]["premio"]);              
  5.               print "</TR>";
  6.       }
pero creo que tampoco se puede hacer así, vamos no funciona...
  #26 (permalink)  
Antiguo 05/04/2013, 04:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: generar select en php

Código PHP:
Ver original
  1. require("datos.php");
  2. $carreras=$matriz_f1[$el_piloto]["carreras"];
  3.  
  4. echo "<TABLE BORDER=2 width=300>";
  5. echo "<TR>";
  6. echo "<TD width=70 align=CENTER><B><FONT color=white> Gran Premio </FONT></B></TD>";    
  7. echo "<TD width=70 align=CENTER><B><FONT color=white> Posición </FONT></B></TD>";
  8. echo "<TD width=70 align=CENTER><B><FONT color=white> Puntos </FONT></B></TD>";
  9. echo "</TR>";
  10. for ($a=0;$a<count($carreras);$a++)
  11.       {
  12.               echo "<TR>";            
  13.               echo "<TD align=CENTER>".$carreras[$a]["premio"]."</TD>";              
  14.               print "</TR>";
  15.       }
  16. echo "</TABLE>";

Tengo mis dudas de que estes intentando entender lo que se te hace... la idea de este foro no es esa.

Entiendes lo que es hacer un bucle sobre un array?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #27 (permalink)  
Antiguo 05/04/2013, 10:12
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: generar select en php

Creo que si que lo entiendo, lo que no entiendo son los accesos a las subcategorias de la array. He generado otros bucles para hacer tablas sobre una array, como estos:
Código PHP:
Ver original
  1. for ($a=0;$a<sizeof($cambio);$a++)
  2.       {
  3.               echo "<TR>";    
  4.               printf("<TD align=CENTER>%s</TD>", $cambio[$a][0]);
  5.               printf("<TD align=RIGHT>%s</TD>", $cambio[$a][1]);
  6.               printf("<TD align=RIGHT>%0.4f</T>", $cambio [$a][2]);        
  7.               print "</TR>";
  8.               if ($cambio[$a][2]>$moneda)  
  9.                  {$moneda=$cambio[$a][2];
  10.                   $pais=$cambio[$a][0];}
  11.       }
Código PHP:
Ver original
  1. for ($a=0;$a<sizeof($viaje);$a++)
  2.       {
  3.               echo "<TR>";    
  4.               printf("<TD align=CENTER>%s</TD>", $viaje[$a][0]);
  5.               printf("<TD align=RIGHT>%s</TD>", $viaje[$a][1]);
  6.               printf("<TD align=RIGHT>%0.2f</T>", $viaje[$a][2]/1000);        
  7.               print "</TR>";
  8.               if ($viaje[$a][2]>$distancia)  
  9.                  {$distancia=$viaje[$a][2];
  10.                   $origen=$viaje[$a][0];
  11.                   $destino=$viaje [$a][1];}
  12.       }
Código PHP:
Ver original
  1. for ($a=0;$a<sizeof($comunidades);$a++)
  2.       {
  3.               echo "<TR>";    
  4.               $porcentaje=($comunidades[$a][1]/10);
  5.               printf("<TD align=CENTER>%s</TD>", $comunidades[$a][0]);
  6.               printf("<TD align=RIGHT>%0.1f</TD>", $comunidades[$a][1]);
  7.               printf("<TD align=RIGHT>%0.2f</TD>", $porcentaje);      
  8.               $porcentajetotal= $porcentajetotal+$porcentaje;              
  9.               print "</TR>";
  10.       }
Esos son básicamente todos iguales, tenia una array simple de dos elementos y los sacaba con un bucle, pero en este ejercicio tenia varias array dentro de una, y tengo que seleccionar la indicada y dentro de eso las categorías que quiero en cada momento, pero no se como aceder a esos datos, ni siquiera se imprimir un print con por ejemplo el premio de un piloto especifico.
Si eres tan amable de darme algunas nociones de como se acede a ellos, creo que no tendré problema para generar el bucle, es mas, le tengo que añadir un if a ese bucle para que cuando la posición sea -1 no muestre -1 sino abandono, y creo que no tendré problema.
Gracias

Etiquetas: formulario, html, resultados, select, tabla
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 10:08.