Foros del Web » Programando para Internet » PHP »

Pasar a una matriz todos los registros de un result

Estas en el tema de Pasar a una matriz todos los registros de un result en el foro de PHP en Foros del Web. Hola a todos! Lo que necesito es saber si existe alguna función para que me devuelva TODOS los registros de una consulta (en ASP, rs.getrows) ...
  #1 (permalink)  
Antiguo 02/01/2006, 02:00
Avatar de Hereje  
Fecha de Ingreso: junio-2002
Ubicación: Córdoba, Argentina
Mensajes: 439
Antigüedad: 21 años, 10 meses
Puntos: 2
Pasar a una matriz todos los registros de un result

Hola a todos!

Lo que necesito es saber si existe alguna función para que me devuelva TODOS los registros de una consulta (en ASP, rs.getrows) y no una sola fila como lo hacen mysql_fetch_array y sus "derivados" mysql_fetch_assoc, etc.

Esto lo necesito para guardar todos los registros en una matriz y luego dividirla en otras matrices con array_chunk y poder "dividir" mis resultados en diferentes listas.

El problema surge al llenar varios UL con resultados de un mismo result.

Espero alguien me pueda ayudar o plantearme alguna alternativa.

Muchas gracias y hasta luego!
__________________
Sergio
  #2 (permalink)  
Antiguo 02/01/2006, 02:26
Avatar de Hereje  
Fecha de Ingreso: junio-2002
Ubicación: Córdoba, Argentina
Mensajes: 439
Antigüedad: 21 años, 10 meses
Puntos: 2
Terminé haciendo esto:
Código PHP:
<?php
while($fila mysql_fetch_assoc($result)) {
    
$filas[] = $fila;
}
$sep array_chunk($filasceil(count($filas)/3));
foreach(
$sep as $k => $col) {
?>
            <ul style="width: 30%;<?= (count($sep)-$k) ? " float:left;" "" ?>">
<?php foreach($col as $fila) { ?>
                <li><a href="productos.cat.php?id=<?= $fila['id_categoria'?>"><?= $fila['nombre'?></a></li>
<?php ?>
            </ul>
<?php
}
?>
Funciona perfecto, pero: ¿Está bien?
__________________
Sergio
  #3 (permalink)  
Antiguo 02/01/2006, 06:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. por qué necesitas crear ese array? .. por qué no lo usas directamente desde el bucle while() que usas junto con mysql_fecht_array() para recorrerlo?. Aplica tu lógica en ese bucle.

En general .. recuerda que en PHP las funciones xxxx_fetch_xxx() lo que hacen es entregarte un registro (del resultado) y mover el puntero interno una posición adelante hasta que llega al final (devolviendo "false").

Si necesitas moverte por un resultado ("recor set") .. puedes usar las funciones: mysql_result() .. y mysql_num_rows() para contar tus resultados y así gestionar bucles (for) u contadores en general.

También puedes "res-usar" un "resultado" obtendio de una consulta SQL cuantas veces necesites moviendo el puntero al principio .. o simplemente desplazando el puntero donde necesites y aplicar xxxx_fetch_xxx() desde ese registro inicio del resultado con la función: mysql_data_Seek()

Y .. dentro del SQL de Mysql tienes la sentencia o instrucción: "LIMIT" que te permite generar una consulta SQL condicionada a N resultados máximo y desde donde requieras (ideal para realizar "paginados" de resultados).

Un saludo,
  #4 (permalink)  
Antiguo 02/01/2006, 08:52
 
Fecha de Ingreso: abril-2005
Mensajes: 139
Antigüedad: 19 años
Puntos: 1
aqui te dejo una funcion:

Código PHP:
function db_array($result)
{
   
$res_array = array();

   for (
$count=0$row = @mysql_fetch_array($result); $count++)
     
$res_array[$count] = $row;

   return 
$res_array;

Espero que te sirva.
__________________
Ciao y suerte.
  #5 (permalink)  
Antiguo 02/01/2006, 09:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Pleniluni0
aqui te dejo una funcion:

Código PHP:
function db_array($result)
{
   
$res_array = array();

   for (
$count=0$row = @mysql_fetch_array($result); $count++)
     
$res_array[$count] = $row;

   return 
$res_array;

Espero que te sirva.
La función que planteas . .es lo mismo que :

while($fila = mysql_fetch_assoc($result)) {
$filas[] = $fila;
}

Si lo quieres ver como función:

Código PHP:
function db_array(
   global 
$result;

   
$filas=array();
   while(
$fila mysql_fetch_assoc($result)) { 
      
$filas[] = $fila
   } 
   return 
$filas;

Un saludo,
  #6 (permalink)  
Antiguo 02/01/2006, 09:24
Avatar de Hereje  
Fecha de Ingreso: junio-2002
Ubicación: Córdoba, Argentina
Mensajes: 439
Antigüedad: 21 años, 10 meses
Puntos: 2
Cluster, gracias por responder, pero lo veo más complejo al tema como me decis vos "verificando a cada rato si llego al final o no".

¿Podrias darme un ejemplo de cómo llenar estas tres listas con un solo array y un bucle while?

Muchas gracias y hasta luego!!
__________________
Sergio
  #7 (permalink)  
Antiguo 02/01/2006, 10:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Podría ser algo tipo:

Código PHP:
$columnas=3;

for (
$i=1$row mysql_fetch_assoc ($result); $i++) { 
   
$resto = ($i $columnas); 
   if (
$resto == 1) {echo "<ul style=\"width: 30%; float:left;\">";} 
    echo 
"<li><a href=\"productos.cat.php?id=".$row['id_comuna']."\">".$row['nombre_comuna']."</a></li>";  
   if (
$resto == 0) {echo "</ul>";}    

No lo he probado .. es una adaptación de esta FAQ:
http://www.forosdelweb.com/showthrea...669#post240669

Un saludo,
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 15:28.