Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: Daklon en 26 Julio 2013, 16:28 PM

Título: Consulta sql no devuelve todos los valores[SOLUCIONADO]
Publicado por: Daklon en 26 Julio 2013, 16:28 PM
Lo pongo en php porque creo que es lo que me está dando el error, tengo una consulta que hago en un archivo.php, en la consulta le pido varias cosas y debe devolver varias filas, si hago la consulta a través del phpmyadmin me da lo que quiero sin problemas, pero si la hago en el archivo(misma consulta) solo me devuelve los resultados de la primer fila, a partir de la primera fila todo está vacío, al contrario que con el phpmyadmin que me devuelve 12 filas.

Les adjunto el código y el resultado:

//obvio la parte de conexión porque esa he comprobado que está bien ya que hago otras consultas y las devuelve correctamente

$inves_query = mysql_query('SELECT nombre, descripcion, recurso1, recurso2, tiempo FROM investigaciones WHERE raza =\''.$_SESSION['raza'].'\'') or die (mysql_error());
$inves_dat = mysql_fetch_row($inves_query) or die (mysql_error());
echo $inves_dat[0];
echo $inves_dat[1];
echo $inves_dat[2];
echo $inves_dat[3];
echo $inves_dat[4];//este es el último que imprime, a partir de aquí todo en blanco
echo $inves_dat[5];
echo $inves_dat[6];
echo $inves_dat[7];
echo $inves_dat[8];


¿a alguien se le ocurre porqué estos resultado diferentes en phpmyadmin y en la consulta que yo hago?

El valor de $_SESSION['raza'] es tauri, cuando hice la consulta en phpmyadmin lo puse tal cual, así que no creo que el problema esté por ahí
Título: Re: Consulta sql no devuelve todos los valores
Publicado por: 1mpuls0 en 26 Julio 2013, 16:45 PM
mysql_fetch_row te regresa un array, entonces debes recorrer el array con un while.

Ejemplo:

Código (php-brief) [Seleccionar]

<?php
$query="SELECT user_id, user_name FROM users;";
$result=mysql_query($query$link);
while($rows=mysql_fetch_array($result)) {
echo "id: ".$rows['user_id']." nombre: ".$rows['user_name']."<br>";
}
?>

Título: Re: Consulta sql no devuelve todos los valores
Publicado por: 1mpuls0 en 26 Julio 2013, 16:51 PM
Citar
echo $inves_dat[4];//este es el último que imprime, a partir de aquí todo en blanco

Esto es porque:
$inves_dat[0]; //es el valor que contiene el campo nombre
$inves_dat[1]; //es el valor que contiene el campo descripcion
$inves_dat[2]; //es el valor que contiene el campo recurso1
$inves_dat[3]; //es el valor que contiene el campo recurso2
$inves_dat[4]; //es el valor que contiene el campo tiempo


Como tu consulta solo tiene 5 campos (desde el indice 0 hasta el indice 4) entonces por eso no te muestra un valor para $inves_dat[5];, porque no hay un 6 campo (quinto indice).

Saludos.
Título: Re: Consulta sql no devuelve todos los valores
Publicado por: Daklon en 26 Julio 2013, 16:57 PM
fijate que selecciono esos campos donde el campo raza sea igual a tauri(en el caso concreto que estoy probando) hay 12 filas en las que ese campo es tauri y esas 12 filas son las que quiero imprimir, además lo curioso es que si uso el siguiente código para ver cuantos resultado devuelve si que me lo imprime 12 veces


$cantidad_inves = mysql_num_rows($inves_query);
for($i = 0; $i < $cantidad_inves;$i++){
?>
<div id="investigacion">
  <?php
printf("%s",$inves_dat[0]);
?>

   </div>



He seguido tu consejo y he adaptado el código que pusiste, me ha quedado así


while($inves_dat = mysql_fetch_array($inves_query)){
echo " 1:" .$inves_dat["nombre"];
}


Funciona casi a la perfección, me devuelve todos los resultados que quiero, menos el primero, es decir, devuelve 11 en vez de 12
Título: Re: Consulta sql no devuelve todos los valores
Publicado por: 1mpuls0 en 26 Julio 2013, 17:14 PM
Debes estar utilizando ese mismo $inves_dat = mysql_fetch_array($inves_query) un poco más arriba, mas o menos parecido al segundo ejemplo.

Código (php-brief) [Seleccionar]

       $query="SELECT user_id, user_name FROM users;";
$result=mysql_query($query, $link);
while($rows=mysql_fetch_array($result)) {
echo "id: ".$rows['user_id']." nombre: ".$rows['user_name']."<br>";
}


Resultado:
Citar
id: 1 nombre: 1mpuls0
id: 2 nombre: Nameless

Código (php-brief) [Seleccionar]

$query="SELECT user_id, user_name FROM users;";
$result=mysql_query($query, $link);

mysql_fetch_array($result); //<----- fetch array se utiliza antes del while

while($rows=mysql_fetch_array($result)) {
echo "id: ".$rows['user_id']." nombre: ".$rows['user_name']."<br>";
}


Resultado:
Citar
id: 2 nombre: Nameless



Saludos.
Título: Re: Consulta sql no devuelve todos los valores
Publicado por: Daklon en 26 Julio 2013, 17:15 PM
si, era eso, ahora mismo iba a decir que ya lo había solucionado xD

Muchísimas gracias por tu ayuda ;D