Foros del Web » Programando para Internet » PHP »

Al utilizar 2 veces una consulta, la 2 no funciona

Estas en el tema de Al utilizar 2 veces una consulta, la 2 no funciona en el foro de PHP en Foros del Web. Hola a todos, pues ese es mi problema, ago esta consulta: Código PHP: $datos_objetos_armas =  mysql_query ( "SELECT id,nombre FROM objeto WHERE metodologia= 'equipable' AND tipo= 'arma'" );  y a continuacion muestro datos en ...
  #1 (permalink)  
Antiguo 22/06/2007, 05:29
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Mensaje Al utilizar 2 veces una consulta, la 2 no funciona

Hola a todos, pues ese es mi problema, ago esta consulta:
Código PHP:
$datos_objetos_armasmysql_query("SELECT id,nombre FROM objeto WHERE metodologia= 'equipable' AND tipo= 'arma'"); 
y a continuacion muestro datos en un select:
Código PHP:
<select name="arma1" id="arma1" tabindex="5">
            <?php
              
while ($mostrarmysql_fetch_array($datos_objetos_armas))
              {
                if (
$mostrar["id"]== $mostrar_ejercito["unidad1_arma"])
                    echo 
"<option value='$mostrar[id]' selected>$mostrar[nombre]</option>";
                  else
                  echo 
"<option value='$mostrar[id]'>$mostrar[nombre]</option>";
              }
            
?>
        </select>
Hasta aqui bien, pero cuando vuelvo a utilizar la misma consulta para mostrar otro select con los mismos datos NO MUESTRA NADA:
Código PHP:
<select name="arma2" id="arma2" tabindex="10">
            <?php
              
while ($mostrarmysql_fetch_array($datos_objetos_armas))
              {
                if (
$mostrar["id"]== $mostrar_ejercito["unidad2_arma"])
                    echo 
"<option value='$mostrar[id]' selected>$mostrar[nombre]</option>";
                  else
                  echo 
"<option value='$mostrar[id]'>$mostrar[nombre]</option>";
              }
            
?>
        </select>
¿Porque ocurre esto?, gracia
s ^^
  #2 (permalink)  
Antiguo 22/06/2007, 06:52
Avatar de carlosmbrizuela  
Fecha de Ingreso: enero-2007
Ubicación: La Plata (Argentina)
Mensajes: 490
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Al utilizar 2 veces una consulta, la 2 no funciona

proba asi a ver que sucede

<select name="arma2" id="arma2" tabindex="10">
<?php
while ($mostrar2= mysql_fetch_array($datos_objetos_armas))
{
if (
$mostrar2["id"]== $mostrar_ejercito["unidad2_arma"])
echo
"<option value='$mostrar2[id]' selected>$mostrar2[nombre]</option>";
else
echo
"<option value='$mostrar2[id]'>$mostrar2[nombre]</option>";
}
?>
</select>

lo que cambie fue el nombre mostar por mostrar2.

Si no funciona volve a hacer la consulta.

saludos
__________________
http://www.rollermountain.com
  #3 (permalink)  
Antiguo 22/06/2007, 07:04
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Al utilizar 2 veces una consulta, la 2 no funciona

Eso lo probe xD, pero nada, a si eso se me escapo,
volvi a hacer la consulta y guardarla en otra variable que utilize para el segundo select y si que funcionaba, es decir, 1 consulta solo me funciona para 1 select , ¿porque?

gracias ^^
  #4 (permalink)  
Antiguo 22/06/2007, 07:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Al utilizar 2 veces una consulta, la 2 no funciona

Porque cuando haces una consulta te devuelve un puntero al resultset, si tu te mueves por ese resultset usando mysql_fetch_array, se van descargando las filas desde la base de datos hasta que llegas a la ultima, y el puntero se queda al final de la fila, tendrias si quieres utilizar otra vez esos resultados regresar usando mysql_data_seek y apuntar a la primera fila.

Aunque mi recomendación es si vas a imprimir 2 o mas selects descargues los datos a un array y ese array sea el que ocupes para crear tu select, o en el ideal crees una funcion que se encargue de esa tarea.

Saludos.
  #5 (permalink)  
Antiguo 22/06/2007, 08:24
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Al utilizar 2 veces una consulta, la 2 no funciona

Vale, entonces he hecho un array para las armas, pero, como ago para recorrerlo? y ir poniendo los diferentes <option> en el select?
antes era;
Código PHP:
while ($mostrarmysql_fetch_array($armas)) 
Pero ahora ese fetch array ya lo tengo hecho, ¿como voy avanzando en las filas y yendo poniendo los <option>?

gracias
  #6 (permalink)  
Antiguo 22/06/2007, 08:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Al utilizar 2 veces una consulta, la 2 no funciona

Puedes usar un foreach:
Código PHP:
foreach( $arregloDeArmas as $idArma => $Arma ) {


Asi en cada ciclo $idArma corresponde al ID actual y $Arma es el nombre actual del arma.

Tambien, todo depende de como hayas armado la estructura de tu array, lo ideal es que lo hagas asi:
Código PHP:
$armas = array();
while (
$mostrarmysql_fetch_array($datos_objetos_armas)) {
     
$armas[$mostrar[id]] = $mostrar['nombre'];

  #7 (permalink)  
Antiguo 22/06/2007, 08:57
 
Fecha de Ingreso: mayo-2005
Mensajes: 217
Antigüedad: 19 años
Puntos: 5
Re: Al utilizar 2 veces una consulta, la 2 no funciona

<?php
while ($mostrar= mysql_fetch_array($armas)){?>
<select name="menu1">
<option value="<?php echo $mostrar['valor']?>"><?php echo $mostrar['nombre']?></option>
</select>
<?php
}?>
  #8 (permalink)  
Antiguo 22/06/2007, 09:25
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Al utilizar 2 veces una consulta, la 2 no funciona

Bueno volviendo a la primera manera para no complicarme la vida xD, pruevo con:
mysql_data_seek($datos_objetos_armas,1); pero no funciona, sige igual, la 2 vez no muestra nada, esto lo pongo despues del while del primer select
que ago mal?, saludos!
  #9 (permalink)  
Antiguo 22/06/2007, 09:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Al utilizar 2 veces una consulta, la 2 no funciona

Prueba regresando al primero:
Código PHP:
if( !mysql_data_seek($datos_objetos_armas0) ) {
     die( 
"No se pudo regresar al primer resultado" );

  #10 (permalink)  
Antiguo 22/06/2007, 10:08
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Al utilizar 2 veces una consulta, la 2 no funciona

Huy puse el select por eso el seek no daba efecto, gracias, resuelto ^^
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 04:25.