Foros del Web » Programando para Internet » PHP »

Select dináminco...problema al poner 2

Estas en el tema de Select dináminco...problema al poner 2 en el foro de PHP en Foros del Web. Hola estoy haciendo un sistema de captura para partidos de futbol y quiero que haya dos selects dinámicos que contengan una lista con los equipos ...
  #1 (permalink)  
Antiguo 22/12/2002, 02:23
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 22 años, 1 mes
Puntos: 0
Select dináminco...problema al poner 2

Hola estoy haciendo un sistema de captura para partidos de futbol y quiero que haya dos selects dinámicos que contengan una lista con los equipos obviamente estas deben de ser iguales (los mismo equipos)
un select será para el equpo ganador y el otro para el perdedor.

Ya logré hacer que se aparezca un select pero el otro con el mismo codigo ¡ya no aparece!..he aquí mi codio.

Código:
<?php
$connection = mysql_connect("localhost","login", "pass") or die ("Enlace a Base de Datos no disponible");
$db = mysql_select_db("edeprem") or die ("Base de datos no disponible");
$sql_user = "SELECT delegacion FROM equipos_futbol_varonil";
$sql_result_user = mysql_query($sql_user, $connection) or die ("No es posible obtener resultados de la base de datos");
$result_user = mysql_query($sql_user);
echo "<table width=100% border=0 cellspacing=0 cellpadding=0><tr><td>Sistema de Captura</td></tr><tr><b>- Equipo Ganador -</b></tr><tr align=center><td>";
echo "<form action=capturado_equipo_ganador_futbol.php method=post>";
echo "<font face=\"Arial, Helvetica, sans-serif\" size=\"2\">Equipo Ganador: </font><select name=ganador>";
	while ($row_user = mysql_fetch_array($result_user))
      {
	  $delegacion=$row_user["delegacion"];
	  echo "<option>".$delegacion;
	  }
echo "</td></tr></select><select name=perdedor><tr><td>";
	while ($row_user = mysql_fetch_array($result_user))
	      {
	  $deleg=$row_user["delegacion"];
	  echo "<option>".$deleg;
	  }
echo "</td></tr></select><tr align=center><td>";
echo "<input type=submit value=Capturar>";
echo "</td></tr>";
echo "</table></form>"
?>
Espero que me puedan ayudar...Saludos!
  #2 (permalink)  
Antiguo 22/12/2002, 03:21
Avatar de Intrepido  
Fecha de Ingreso: diciembre-2002
Ubicación: Barcelona
Mensajes: 118
Antigüedad: 21 años, 4 meses
Puntos: 0
Quizá..

Salu2, he mirado el código y en principio creo que está bien. He probado una cosa y creo que el fallo puede estar aquí:

Código PHP:
echo "</td></tr></select><select name=perdedor><tr><td>"
"<select name="..">" después tiene que venir los option no puede venir <tr> y <td> porqué entonces los option no se meten dentro, inténtalo
  #3 (permalink)  
Antiguo 22/12/2002, 11:50
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 22 años, 1 mes
Puntos: 0
Muchas gracias por tu ayuda Intrepido, aunque sigue sin funcionar

Ahora me quedó de esta manera el codigo:

Código:
<?php
	$connection = mysql_connect("localhost","login", "pass") or die ("Enlace a Base de Datos no disponible");
	$db = mysql_select_db("edeprem") or die ("Base de datos no disponible");
	$sql_user = "SELECT delegacion FROM equipos_futbol_varonil";
	$sql_result_user = mysql_query($sql_user, $connection) or die ("No es posible obtener resultados de la base de datos");
	$result_user = mysql_query($sql_user);
echo "<table width=100% border=0 cellspacing=0 cellpadding=0><tr><td align=center>Sistema de Captura</td></tr><tr><td align=center><b>- Equipo Ganador -</td></b></tr><tr align=center><td>";
echo "<form action=capturado_equipo_ganador_futbol.php method=post>";
echo "<font face=\"Arial, Helvetica, sans-serif\" size=\"2\">Equipo Ganador: </font><select name='ganador'>";
	while ($row_user = mysql_fetch_array($result_user))
      {
	  $delegacion=$row_user["delegacion"];
	  echo "<option>".$delegacion;
	  }
echo "</select></td></tr><tr><td><select name='perdedor'>";
	while ($row_user = mysql_fetch_array($result_user))
	      {
	  $deleg=$row_user["delegacion"];
	  echo "<option>".$deleg;
	  }
echo "</select></td></tr><tr align=center><td>";
echo "<input type=submit value=Capturar>";
echo "</td></tr>";
echo "</table></form>"
?>
Espero que puedan ayudarme

Saludos!
  #4 (permalink)  
Antiguo 22/12/2002, 15:08
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

El "problema" es que al ejecutar el primer bucle llegas hasta el ultimo registro. Y a partir de ese momento mysql_fetch_array() devuelve false. No vuelve al comienzo. La solucion seria "resetear" el resultado de la consulta, hacer que vuelva a posicionarse en el primer registro. Eso lo consiges con la funcion mysql_data_seek() pasandole 0 como registro donde posicionarse. La pondrias antes del segundo while.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 23/12/2002, 12:45
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 22 años, 1 mes
Puntos: 0
Muchas gracias buscaré un poco la documentación y veré de que manera la puedo aplicar, pero sin duda esa es la solución!

Saludos!
  #6 (permalink)  
Antiguo 30/12/2002, 01:46
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 22 años, 1 mes
Puntos: 0
listo muchas gracias por su ayuda, la funcion mysql_data_seek es realmente facil de utilizar y me fue de mucha ayuda así quedo el codigo para utilizarlo dos selects con la misma consulta...a ver si a alguien le sirve_

Código:
while ($row_user = mysql_fetch_array($result_user))
      {
	  $delegacion=$row_user["delegacion"];
	  echo "<option>".$delegacion;
	  }
	  mysql_data_seek($result_user, 0);
echo "</select></td><td>Equipo Perdedor: <select name='perdedor'>";
	while ($row_user = mysql_fetch_array($result_user))
	      {
	  $deleg=$row_user["delegacion"];
	  echo "<option>".$deleg;
	  }

Saludos desde Guadalajara!
  #7 (permalink)  
Antiguo 30/12/2002, 02:16
Avatar de SpiceMan  
Fecha de Ingreso: noviembre-2002
Mensajes: 160
Antigüedad: 21 años, 5 meses
Puntos: 0
Asi se esta sobrecargando la base de datos sin sentido ya que haces dos conexiones y pedidos de datos para obtener los mismos resultados. Otra desventaja es que si en ese microsegundo que hay entre sacar los datos entre la 1era y la 2da vez pudo haberse modificado la base de datos con lo que podrías terminar con dos listas de delegaciones diferentes (MUY díficil de que pase, pero técnicamente posible)

Con cargar los datos en un array y despues hacer un bucle dos veces para sacar los datos del array es suficiente.


Código:
while ($delegacion = $mysql_fetch_array($result_user)) {
    array_push ($delegaciones, $delegacion); 
}
echo "<select name=\"ganador\">\n";
foreach ($delegaciones as $delegacion) {
    echo "<option>$delegacion\n";
}
echo " <select name=\"perdedor\">\n";
foreach ($delegaciones as $delegacion) {
    echo "<option>$delegacion\n";
}
de más está decir que no es código verificado, pero el concepto está.

Última edición por SpiceMan; 30/12/2002 a las 02:20
  #8 (permalink)  
Antiguo 30/12/2002, 13:57
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Es curioso, yo creo que eso es lo que hace internamente PHP. Cuando llamas a mysql_query() crea un array y luego se va recorriendo mysql_fetch_*() y te puedes posicionar con con mysql_data_seek(). Es mas, dudo mucho que por hacer un mysql_data_seek() vuelva a realizar una 'conexion'. No puedo asegurar nada porque no tengo conocimiento de como implementa internamente. Aunque en la descripcion de mysql_query() dice que por defecto se almacena el resultado de la consulta en un buffer, por lo que creo que no estoy muy equivocado.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 30/12/2002, 14:51
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 22 años, 1 mes
Puntos: 0
Así es JoseMi según la documentacíón oficial de mysql lo que hace el mysql_data_seek es solamente regresar la posición del buffer según los resultados que regresó la consulta.

De hecho te puedes posicionar en el resultado que quieras.

Por lo que no se hace otra conexión solamente vuelve a mostrar los resultados de la consulta.

Bueno según yo es así.

Saludos!
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 19:35.