Foros del Web » Programando para Internet » PHP »

Retroceder posición en array

Estas en el tema de Retroceder posición en array en el foro de PHP en Foros del Web. Buenas noches gente!, No se si el título del tema es explicativo, pero lo que quiero hacer, eso eso sin mas. Hay algún modo, de ...
  #1 (permalink)  
Antiguo 12/11/2009, 21:20
 
Fecha de Ingreso: abril-2006
Mensajes: 95
Antigüedad: 18 años
Puntos: 0
Retroceder posición en array

Buenas noches gente!,

No se si el título del tema es explicativo, pero lo que quiero hacer, eso eso sin mas. Hay algún modo, de volver a la fila anterior de una matriz?.

Utilizo mysql_query, consigo los datos de una tabla, extraigo la primer fila con mysql_fetch_array, recupero los nombres de las keys array_keys, y luego quiero mostrar todos los datos, pero que pasa, ya estoy en la segunda fila, por que eh avanzado una con mysql_fetch_array.

Hay algún modo de volver?, si no, estoy limitado a rehacer la consulta, o copiar la variable.

Desde ya, muchas gracias!.
  #2 (permalink)  
Antiguo 12/11/2009, 21:29
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: Retroceder posición en array

No necesitas volver a hacer la consulta ni regresar el apuntador de lectura en la base de datos, solo guarda esa info en otra variable y listo.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 13/11/2009, 09:42
 
Fecha de Ingreso: abril-2006
Mensajes: 95
Antigüedad: 18 años
Puntos: 0
Respuesta: Retroceder posición en array

Cita:
Iniciado por Triby Ver Mensaje
No necesitas volver a hacer la consulta ni regresar el apuntador de lectura en la base de datos, solo guarda esa info en otra variable y listo.
Lo había probado anteriormente, y no funcionó. Ahora volví a intentarlo, y tampoco funciona.

Hago algo como esto:

Código PHP:
// Consulta
$consulta mysql_query("SELECT * FROM ".$nombre_tabla$conn);
$consulta_temp $consulta;

// Obtener nombre de Keys de Array
$row mysql_fetch_array($consulta_temp);
$keys array_keys($row);
$key_id $keys[1];
$key_campo_principal $keys[3]; 
Verifico la variable $consulta que debería estar intacto mediante algún bucle, y me encuentro que ya ha saltado una posición. Es raro, debería estar intacta, por que en teoría no la he tocado, pero ocurre.

Que puedo hacer?.

Desde ya, muchas gracias!.
  #4 (permalink)  
Antiguo 13/11/2009, 10:15
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Retroceder posición en array

No entiendo, para que necesitas regresarte? los datos de la consulta ya estan en $row, solo necesitas desplegarlos (?)
  #5 (permalink)  
Antiguo 13/11/2009, 10:41
 
Fecha de Ingreso: abril-2006
Mensajes: 95
Antigüedad: 18 años
Puntos: 0
Respuesta: Retroceder posición en array

Cita:
Iniciado por darkasecas Ver Mensaje
No entiendo, para que necesitas regresarte? los datos de la consulta ya estan en $row, solo necesitas desplegarlos (?)
Estoy construyendo un sitio algo robusto, con muchos módulos, pero la mayoría comparte la organización de datos (primero el ID, luego la descripción). Entonces, estoy operando de modo tal, que mis aplicaciones funcionen de modo sinámico, sin importar los nombres de las claves. Un solo AMB, me sirve para muchas tablas.

El tema, es que con el primer row que extraigo, consigo los datos, pero cuando inicio el bucle, vuelvo a pedir un row, y eh perdido el registro anterior.

Hay algún modo de volver el puntero, a la fila anterior?, o de salvar la variable?.

Si no, voy a utilizar Do While, pero esto me trae algunas complicaciones.

Muchas gracias nuevamente!, espero cualquier idea que puedan aportarme!.
  #6 (permalink)  
Antiguo 13/11/2009, 12:52
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Retroceder posición en array

Creo que la funcion que estas buscando se llama prev(), que va de la mano con key() para lo que queres hacer me parece. Buscala en php.net hay lagunos ejemplos lindos....

Te dejo uno que hice yo hace tiempo para que entiendas el funcionamiento. Esta hecho con next(), pero el prev() es analogo:

Código PHP:
<?php
$titulo
="Funciones aplicada con ciclo FOR";
$encabezado="Ejemplos";

$dias[11]="Lunes";
$dias[16]="Martes";
$dias[15]="Miercoles";
$dias[20]="Jueves";
$dias[40]="Viernes";
$dias[33]="Sabado";
$dias[17]="Domingo";

?>
<html>
<head>
<title> <? echo $titulo?> </title>
</head>
<body>
<h1 align="center"> <? echo $encabezado?> </h1>
<p>La función reset() lleva al puntero a la primer posición del array EN DONDE hay un valor!</p>
<p>Las funciones prev() y next() devuelven true o false como salida</p>
<?
for(reset($dias);$i=key($dias);next($dias)){
    echo 
"El puntero esta en: ".$i." y tiene el valor: ".$dias[$i]."<br>\n";
}
?>
</body>
</html>
Tambien se puede hacer con do while:
Código PHP:
<?php
$titulo
="Uso de las funciones: key(), current() y next()";
$encabezado="Ejemplos";

$dias[11]="Lunes";
$dias[16]="Martes";
$dias[15]="Miercoles";
$dias[20]="Jueves";
$dias[40]="Viernes";
$dias[33]="Sabado";
$dias[17]="Domingo";

reset($dias);
?>
<html>
<head>
<title> <? echo $titulo?> </title>
</head>
<body>
<h1 align="center"> <? echo $encabezado?> </h1>
<?
do{
    
$puntero=key($dias); //numero de posicion actual
    
$valor=current($dias); //valor de esa posición
    
echo "Indice ".$puntero.", valor: ".$valor."<br>\n";
}while(
next($dias))
?>
</body>
</html>
Suerte

Última edición por jackson666; 13/11/2009 a las 13:02
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 17:47.