PDA

Ver la Versión Completa : No me muestra todos los registros


__cadetill
08-05-2003, 09:24:01
Hola amigos

Estoy empezando con esto del PHP y MySQL y me surge un problemilla. Tengo el siguiente script


// imprimimos resultado de la Query
$NFilas = mysql_num_rows($IdConsulta);
$Tabla = "<table width=\"98%\" border=\"1\">\n";
$Tabla = $Tabla."<tr>\n";
$Tabla = $Tabla."<td width=\"64\"><font size=\"2\"><b>Fecha</b></font></td>\n";
$Tabla = $Tabla."<td width=\"64\"><font size=\"2\"><b>Secci&oacute;n</b></font></td>\n";
$Tabla = $Tabla."<td width=\"494\"><font size=\"2\"><b>Acci&oacute;n</b></font></td>\n";
$Tabla = $Tabla."</tr>\n";
for ( $i = 0; $i < $NFilas; $i++)
{
$ResultQuery = mysql_fetch_array($IdConsulta);
$Tabla = $Tabla."<tr>\n";
$Tabla = $Tabla."<td width=\"64\"><font size=\"2\">$ResultQuery[0]</font></td>\n";
$Tabla = $Tabla."<td width=\"64\"><font size=\"2\">$ResultQuery[1]</font></td>\n";
$Tabla = $Tabla."<td width=\"494\"><font size=\"2\">$ResultQuery[2]</font></td>\n";
$Tabla = $Tabla."</tr>\n";
}
$Tabla = $Tabla."</table>\n";
print($Tabla);


Y el problema que tengo es que no me muestro todos los resultados de la consulta (me falta 1!!!!).

P.D. : ya se que el codigo es malo (tb se aceptan sugerencias al respecto :p )

Gracias

chutipascal
08-05-2003, 11:25:42
Hola Cadetill.

No se exactamente que te pasa pero en lugar de usar un bucle for next para recorrer una consulta, usa un while


<table>
<?php
while ($fila = mysql_fetch_object($sql)){
?><tr><td><?php
print $fila->CODIGO; ?></td><td><?php
print $fila->DESCRIPCION; ?></td><tr>
<?php
}
?>
</table>

kayetano
08-05-2003, 11:31:10
Hola

De momento no te puedo asegurar que el codigo que pongo a continuacion funcione correctamente ya que no has puesto la sentencia SQL, igual lo que esta mal es eso.

<table width="98%" border="1">
<tr>
<td width="64"><font size="2"><b>Fecha</b></font></td>
<td width="64"><font size="2"><b>Sección</b></font></td>
<td width="494"><font size="2"><b>Acción</b></font></td>
</tr>
<?
// imprimimos resultado de la Query
while ( $ResultQuery = mysql_fetch_row( $IdConsulta ) ) {
?>
<tr>
<td width="64"><font size="2"><?=$ResultQuery[0]?></font></td>
<td width="64"><font size="2"><?=$ResultQuery[1]?></font></td>
<td width="494"><font size="2"><?=$ResultQuery[2]?></font></td>
</tr>
<? } ?>
</table>


Comentarte que existen dos funciones muy parecidas:
mysql_fetch_array y mysql_fetch_row
La funcion es la misma, obtener los datos de un registro, pero se diferencian en que con la primera podemos acceder tanto por el indice como por el nombre del campo ( ej. miQuery[0] o miQuery["codigo"] ) y con la segunda solo podemos acceder por el indice. Te digo todo esto porque si vas a trabajar siempre con indices es mejor que utilices la segunda opcion.

Pues nada, prueba el codigo y me comentas que tal.

__cadetill
08-05-2003, 16:00:47
jajajajaja, si es que estoy tonto!!! Ya me funciona :D

os explico. Primero de todo lo he hecho como me comentabais, con un bucle while...do con la funcion mysql_fetch_row. Gracias por la sugerencia.

Pero, el problema no era ese (y no lo habeis podido deducir al no poneros todo el codigo, fallo mio). Resulta que, justo antes de la 1era linea de codigo que he mandado, tenia esta


// Obtenemos resultado de la Query
$ResultQuery = mysql_fetch_array($IdConsulta);


y claro, esta linea se "me comia" el primer registro de la consulta SQL y, claro, me salian todos los registros menos el primero. Pero que fallo de principiante!!! :o

De todas maneras, gracias por los consejos y los ejemplos que me habies enviado, me han hecho ver el error que tenia :cool:

Pos eso, que gracias y nos leemos

chutipascal
13-05-2003, 16:23:43
Claro te zampabas un bocato del plato (con alevosia y en la cocina) antes de servirlo a la mesa y al pollo le faltaba un muslo!

:D

Un saludo.