Foros del Web » Programando para Internet » PHP »

¿por que siempre me falta 1?

Estas en el tema de ¿por que siempre me falta 1? en el foro de PHP en Foros del Web. Hola a todos. esta consulta me trae por el camino de la amargura, cuando le digo que me muestre los datos de la consulta, el ...
  #1 (permalink)  
Antiguo 10/08/2009, 16:15
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
¿por que siempre me falta 1?

Hola a todos.
esta consulta me trae por el camino de la amargura, cuando le digo que me muestre los datos de la consulta, el primero no me lo saca, me saca a partir del 2º. pego el codigo a ver si alguien me puede decir por que lo hace.
Un saludo

Código PHP:
        <?php if ($totalRows_comprados 0) { // Show if recordset not empty ?>
  <p> <span class="Estilo1">Articulos seleccionados:</span>
            <?php do { ?>
                <?PHP  $i=0;

while (
$row_comprados mysql_fetch_assoc($comprados)){

$campos[$i][0] = "<td width=\"138\"><div align=\"center\"><img src=\"{$row_comprados['imagen']}\" alt=\"\" width=\"50\" height=\"35\" /></div></td>";
$campos[$i][1] = "<td align=center><h6>Precio:{$row_comprados['pvd']} €</h6></td>" ;
$campos[$i][2] = "<td><h6>ID:{$row_comprados['id_producto']} €</h6></td>" ;

$i++;

}


echo 
"<table>";

for(
$k=0;$k<3;$k++){

echo 
"<tr>";

for(
$j=0;$j<$i;$j++){

echo 
$campos[$j][$k];

}

echo 
"</tr>";

}

echo 
"</table>"?>
                <?php } while ($row_comprados mysql_fetch_assoc($comprados)); ?>
        </p>
        <table width="550" border="0" align="center" class="tex_12_rojo">
          <tr>
            <td>&nbsp;<a href="<?php printf("%s?pageNum_comprados=%d%s"$currentPagemax(0$pageNum_comprados 1), $queryString_comprados); ?>">Anterior</a> <a href="<?php printf("%s?pageNum_comprados=%d%s"$currentPagemin($totalPages_comprados$pageNum_comprados 1), $queryString_comprados); ?>"></a></td>
            <td>&nbsp;</td>
            <td><div align="right"><a href="<?php printf("%s?pageNum_comprados=%d%s"$currentPagemin($totalPages_comprados$pageNum_comprados 1), $queryString_comprados); ?>" class="tex_12_rojo">Siguiente</a></div></td>
          </tr>
                  </table>
  #2 (permalink)  
Antiguo 10/08/2009, 16:27
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: ¿por que siempre me falta 1?

Revisa si entre $comprados = myslq_query(bla bla bla); y el while (bla bla bla) tienes algun mysql_fetch_assoc() o mysql_fetch_row() o cualquier otra funcion que haga avanzar el apuntador de la consulta.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 10/08/2009, 16:54
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 15 años, 3 meses
Puntos: 150
Respuesta: ¿por que siempre me falta 1?

Ahi falta cierto codigo anterior donde podria estar la clave, me refiero a la sentencia mysql....
  #4 (permalink)  
Antiguo 10/08/2009, 17:04
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: ¿por que siempre me falta 1?

Cita:
Iniciado por Triby Ver Mensaje
Revisa si entre $comprados = myslq_query(bla bla bla); y el while (bla bla bla) tienes algun mysql_fetch_assoc() o mysql_fetch_row() o cualquier otra funcion que haga avanzar el apuntador de la consulta.
esto es lo que tengo antes
Código PHP:
$maxRows_comprados 4;
$pageNum_comprados 0;
if (isset(
$_GET['pageNum_comprados'])) {
  
$pageNum_comprados $_GET['pageNum_comprados'];
}
$startRow_comprados $pageNum_comprados $maxRows_comprados;

$colname_comprados "-1";
if (isset(
$_SESSION['MM_Username'])) {
  
$colname_comprados $_SESSION['MM_Username'];
}
mysql_select_db($database_compramos$compramos);
$query_comprados sprintf("SELECT productos.id_producto, productos.nombre, productos.cantidad, productos.descripcion, productos.pvd, productos.imagen, productos.pdf, productos.fecha_fin, apuntados.id_apuntados, apuntados.id_producto, apuntados.usuario, apuntados.cantidad FROM productos, apuntados WHERE apuntados.id_producto=productos.id_producto AND apuntados.usuario=%s"GetSQLValueString($colname_comprados"text"));
$query_limit_comprados sprintf("%s LIMIT %d, %d"$query_comprados$startRow_comprados$maxRows_comprados);
$comprados mysql_query($query_limit_comprados$compramos) or die(mysql_error());
$row_comprados mysql_fetch_assoc($comprados);

if (isset(
$_GET['totalRows_comprados'])) {
  
$totalRows_comprados $_GET['totalRows_comprados'];
} else {
  
$all_comprados mysql_query($query_comprados);
  
$totalRows_comprados mysql_num_rows($all_comprados);
}
$totalPages_comprados ceil($totalRows_comprados/$maxRows_comprados)-1
y mas abajo esto.

$queryString_comprados = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_comprados") == false &&
stristr($param, "totalRows_comprados") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_comprados = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_comprados = sprintf("&totalRows_comprados=%d%s", $totalRows_comprados, $queryString_comprados);
  #5 (permalink)  
Antiguo 10/08/2009, 17:14
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 15 años, 3 meses
Puntos: 150
Respuesta: ¿por que siempre me falta 1?

Creo que el fallo esta en ese LIMIT, el primer parametro deberia ser 0 si no quieres que se salte ningun registro, y el segundo parametro pues ya el numero de registros que quieres recoger.

Por ejemplo un LIMIT 1,10 se saltaria el primer registro y tomaria a partir del segundo.

Taluego!
  #6 (permalink)  
Antiguo 10/08/2009, 17:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
Pero como se lo hago saber?, de donde coge esas variables?
He puesto manualmente 0,4 y hace lo mismo.
Código PHP:
$query_limit_comprados sprintf("%s LIMIT 0, 4"$query_comprados$startRow_comprados$maxRows_comprados); 
Cita:
Iniciado por Vun Ver Mensaje
Creo que el fallo esta en ese LIMIT, el primer parametro deberia ser 0 si no quieres que se salte ningun registro, y el segundo parametro pues ya el numero de registros que quieres recoger.

Por ejemplo un LIMIT 1,10 se saltaria el primer registro y tomaria a partir del segundo.

Taluego!
el caso es que me estoy dando cuenta que solo me lo hace cuando hay imagenes, si es solo texto me lo saca bien.

Última edición por GatorV; 11/08/2009 a las 09:07
  #7 (permalink)  
Antiguo 11/08/2009, 02:32
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: ¿por que siempre me falta 1?

Cita:
$comprados = mysql_query($query_limit_comprados, $compramos) or die(mysql_error());
$row_comprados = mysql_fetch_assoc($comprados);
Esa linea en rojo es la que esta haciendo que el apuntador de lectura de la consulta avance al segundo registro, creo que puedes eliminarla sin problemas.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 11/08/2009, 09:12
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: ¿por que siempre me falta 1?

Gracias Triby a funcionado bien.
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 13:08.