Foros del Web » Programando para Internet » PHP »

retroceder un registro

Estas en el tema de retroceder un registro en el foro de PHP en Foros del Web. Hola Tengo un problemilla al sacar registros de una BBDD mysql yo recojo los datos en $fila = mysql_fetch_array($consulta); donde $consulta es la sentencia SQL ...
  #1 (permalink)  
Antiguo 23/06/2004, 09:17
 
Fecha de Ingreso: junio-2003
Mensajes: 8
Antigüedad: 20 años, 10 meses
Puntos: 0
retroceder un registro

Hola
Tengo un problemilla al sacar registros de una BBDD mysql

yo recojo los datos en
$fila = mysql_fetch_array($consulta); donde $consulta es la sentencia SQL

Vale, pues una vez mostrado con un while ($fila = mysql_fetch_array($consulta)) varios registros, necesito volver hacia atrás una posicion.

Cómo se hace?
supongo que habrá una función

Muchas gracias
  #2 (permalink)  
Antiguo 23/06/2004, 09:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La función que tendrías que usar es:

mysql_data_seek()
www.php.net/mysql_data_seek

Comentario:

Cita:
yo recojo los datos en
$fila = mysql_fetch_array($consulta); donde $consulta es la sentencia SQL
El término está mal empleado .. lo que le pasas como parámetro a tu mysql_fetch_array() es un "resource ID" o dicho en cristiano .. el resultado de la consulta SQL que se ha ejecutado bajo las sentencias SQL que indicastes en tu mysql_query(). Te lo menciono por qué por ejemplo esa función "mysql_data_seek()" se refiere al "resultado" (N registros que obtengas) y no a "sentencias SQL" como tales.

Un saludo,
  #3 (permalink)  
Antiguo 24/06/2004, 04:06
 
Fecha de Ingreso: junio-2003
Mensajes: 8
Antigüedad: 20 años, 10 meses
Puntos: 0
algunas dudas

Vale, algo me he aclarado pero no se como usarlo,
mira mi consulta es así

while ($fila = mysql_fetch_array($consulta) && ($contador % 3 != 0) ){
sentencias
sentencias
}

y despues cuando sale por la condicion de contador % 3 entonces es cuando quiero retroceder un registro.

La función que me has pasado, no se muy bien como usarla.
Muchas gracias.
  #4 (permalink)  
Antiguo 24/06/2004, 07:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La función mysql_data_seek() mueve el puntero del resultado al registro que necesites .. Si quieres que sea total-1 .. tendras que obtener el total de registros que arrojó tu consulta .. para eso puedes usar la función:

mysql_num_rows() y .. le resta una unidad para aplicarlo en mysql_data_seek()

Un saludo,
  #5 (permalink)  
Antiguo 24/06/2004, 07:36
 
Fecha de Ingreso: junio-2003
Mensajes: 8
Antigüedad: 20 años, 10 meses
Puntos: 0
No me fuenciona

Primero hago una consulta

$sql = "select nombre,id_objeto from objetos order by id_objeto";
$consulta = mysql_query($sql);
$contador = 0;
while ( ($fila = mysql_fetch_array($consulta)) && ($contador % 3 != 0) ){
sentencias;
sentencias;
$contador ++;
}

y ahora quiero seguir con otro while
$contador = $contador -1;
mysql_data_seek($consultab,$contador);
while ($fila = mysql_fetch_array($consulta)){
sentencias;
}

y me pone:
Warning: Wrong parameter count for mysql_data_seek() in /home/httpd/vhosts/reyes-arte.com/httpdocs/objetos.php


¿Sabes de que puede ser?
Si te molesto mucho déjalo.

Muchas gracias
  #6 (permalink)  
Antiguo 24/06/2004, 07:39
 
Fecha de Ingreso: junio-2003
Mensajes: 8
Antigüedad: 20 años, 10 meses
Puntos: 0
Ya está

era un fallo de una variable mal escrita.

Muchas gracias majete
  #7 (permalink)  
Antiguo 24/06/2004, 13:28
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

En este caso no seria necesario usar el mysql_data_seek(). Simplemente saber como evalua PHP los operadores logicos. Los evalua en cortocircuito, que quiere decir que solo evalua las expresiones hasta que obtiene un resultado final. Como que para que un && devuelva falso solo es necesario que una de sus expresiones sea false, PHP solo evalua las expresiones hasta que encuentra una que se evalue a false. ASi que si en lugar de
Código PHP:
while ( ($fila mysql_fetch_array($consulta)) && ($contador != 0) ){ 
pones
Código PHP:
while ( ($contador != 0) && ($fila mysql_fetch_array($consulta)) ){ 
ya no necesitas el mysql_data_seek().

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 25/06/2004, 01:14
 
Fecha de Ingreso: junio-2003
Mensajes: 8
Antigüedad: 20 años, 10 meses
Puntos: 0
Ya lo comprendí, muchas gracias.

Lo hice al final con el mysql_data_seek()
aunque ahora veo que no era la mejor manera.
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 02:32.