Foros del Web » Programando para Internet » PHP »

Petición mala de datos de una tabla

Estas en el tema de Petición mala de datos de una tabla en el foro de PHP en Foros del Web. Escribí un código que supuestamente debería entregarme los datos de una tabla ordenados por id_hilo ascendente y sub-ordenados por id descendente. Lo que me entrega ...
  #1 (permalink)  
Antiguo 12/09/2011, 10:55
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Petición mala de datos de una tabla

Escribí un código que supuestamente debería entregarme los datos de una tabla ordenados por id_hilo ascendente y sub-ordenados por id descendente. Lo que me entrega es las primeras 3 corridas ordenadas por id ascendente.

El código es el siguiente:

Código:
$sql="SELECT MAX(id) FROM posts";
$postmax=mysql_query($sql);
$dfg=0;
while($dfg < $postmax)
{
$sqlb="SELECT * FROM posts WHERE id=$dfg ORDER BY id DESC";
$resultado=mysql_query($sqlb); 
while ($row = mysql_fetch_array ($resultado))
{ 
   echo "Especial: ".$row["especial"]." - ";
   echo "No. ".$row["id"];
   echo " - Hilo:".$row["id_hilo"]."<br>";
   echo $row["mensaje"]."<br><br><br>"; 
}
$dfg++;
}
Gracias de antemano por la respuesta.
  #2 (permalink)  
Antiguo 12/09/2011, 14:19
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Petición mala de datos de una tabla

Lo que pasa es que $postmax es un recurso de MySQL y no puedes usarlo para comparar como si fuera numerico, deberias cambiar tu while para que sea:

Código PHP:
Ver original
  1. while($post = mysql_fetch_assoc($postmax)) {
  2.     $dfg = $post['id'];
  3.     // Aqui haces la otra consulta.
  4. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 12/09/2011, 16:35
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Petición mala de datos de una tabla

No entendí mucho lo que dijiste, así tendría que quedar el código?:

Código PHP:
$sql="SELECT MAX(id) FROM posts";
$postmax=mysql_query($sql);





while(
$post mysql_fetch_assoc($postmax))
{
$dfg $post['id_hilo'];
$sqlb="SELECT * FROM posts WHERE id=$dfg ORDER BY id DESC";
$resultado=mysql_query($sqlb); 

while (
$row mysql_fetch_array ($resultado))


   echo 
"Anónimo - Especial: ".$row["especial"]." - ";
   echo 
"No. ".$row["id"];
   echo 
" - Hilo:".$row["id_hilo"]."<br>";
   echo 
$row["mensaje"]."<br><br><br>"

}

$dfg++;


Porque así me da los errores Undefined index: id_hilo y mysql_fetch_array() expects parameter 1 to be resource, boolean given :/

Gracias por la paciencia...
  #4 (permalink)  
Antiguo 12/09/2011, 19:33
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Petición mala de datos de una tabla

OK, no me habia fijado que estas obteniendo MAX(id), por tanto, no existe id_hilo en los resultados de esa consulta y tal vez debas usar mysql_fetch_row() para obtener matriz numerica (en lugar de asociativa) y entonces quedaria $dfg = $post[0];

Ahora, yo me pregunto si esa consulta te devolvera uno o mas registros, pero, en todo caso, creo que seria mas util:

Código SQL:
Ver original
  1. SELECT id FROM posts ORDER BY id DESC LIMIT cantidad_de_registros_deseada

Lo que no entiendo es que quieres ordenado por ID ascendente, pero MAX() te devolvera el mayor y, en todo caso, creo que de todas formas sera descendente.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: mysql, sql, 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 05:56.