Bucle para recibir todos los datos de una fila de un recordset con PHP

  • Por
Realizamos una función que recibe una fila de un conjunto de registros venido desde una base de datos y declara variables globales con todos los datos de la fila.
Vamos a realizar una función para recibir todos los datos de una fila de un recordset (conjunto de registros extraídos de una base de datos, Mysql en el caso de este artículo) y declararlos como variables globales a la página. Se trata de una función que realiza un recorrido genérico a todos los datos de cualquier fila y cualquier recordset y va generando las variables globales para trabajar con esos datos.

Las variables globales tendrían como nombre el mismo del campo (que es el mismo nombre que la columna de la tabla asociada a ese dato) y como valor, el dato que guarda esa fila en la columna determinada.

Nota: Este artículo es similar a otro en el que se realiza un recorrido genérico a las variables recibidas por POST. Las explicaciones de ese artículo pueden venir bien para comprender mejor este.

Para una tabla como esta:

id_cliente nombre_cliente telefono_cliente
1 Pepe 90 000 00 00
2 Juan 99 888 88 88
3 María 999 99 99 99

Si la función recibiera una fila cualquiera, se generarían variables con nombres id_cliente, nombre_cliente y telefono_cliente y sus valores serían los de esa fila en concreto. Para la fila 1, se generarían las variables:

id_cliente=1
nombre_cliente="Pepe"
telefono_cliente="90 000 00 00"

El recorrido será genérico, por lo que servirá para cualquier tabla, con cualquier número y nombre de las columnas. Las variables generadas serán siempre las columnas que existan, con los valores de la fila que se haya recibido por parámetro.

Esta función es muy útil para recibir los datos de una fila y meterlos en variables globales, para luego operar con ellos. Como el recorrido es genérico, da igual el número, nombre y tipo de los campos que se van a meter en las variables.

function recibe_fila($fila){
    foreach($fila as $nombre_campo => $valor){
       if (gettype($nombre_campo)!="integer"){
          $asignacion = "\$GLOBALS[\"" . $nombre_campo . "\"]='" . $valor . "';";
          eval($asignacion);
          //echo $asignacion . "<br>";
       }
    }
}

Un ejemplo de uso de esta función

Veamos cómo utilizar esta función para recibir los datos de una fila. Se supone que antes de ejecutar estas líneas se debe haber abierto una conexión con la base de datos. También se supone que después de ejecutar este código, se debería cerrar esa conexión con la base de datos.

$ssql="select * from cliente where id_cliente=2";
$rs=mysql_query($ssql);
$fila=mysql_fetch_array($rs);
recibe_fila($fila);

Después de estas líneas, se habrán creado las variables globales con los datos de la fila extraída de la tabla cliente, una variable para cada una de las columnas de la fila.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Román Sánchez

19/1/2006
¿Que esto no es lo que hace la función extract que incluye php?

Juan Sebastián Puntella

07/6/2006
SALUD! Como estas?
Realmente un material buenísimo el que publicas! Muy sencillo e intuitivo.
Yo venía trabajando y aprendiendo PHP y algunas cosas costandome montones, pero ya todo, gracias a tí, van saliendo mejor.
Sabes, tengo un problema y no sé como plantearlo.
Estoy armando una base de datos de alumnos y cursos con una intefaz PHP de ABM. Hasta aquí perfecto.
El problema que se me presenta es que los alumnos se anotan en muchos cursos de ésta fundación, no solo en uno, y se lleva un control de asistencia y notas.
Entonces. Qué debiera hacer yo para crear un ABM que funcione bien bajo este concepto? Además, de que funcionen consultas, ya sea para buscar un alumno y poder ver en qué cursos está inscripto y visualizar su asistencia y notas, tanto como la consulta de por cada curso que se liste todos los inscriptos con sus asistencias y notas.
A mi se me ocurre que debiera crear una tabla por curso, para que la aplicación sea más versátil, pero no sé como lograr esto a través de una interfaz web de mi creación, en vez de hacerlo por phpmyadmin o alguno similar. La idea es que todos puedan manejarlo sencillamente.
Espero que sea posible tu ayuda como lo fue hasta ahora.
Desde ya muchas gracias y será hasta pronto!

QARd57aD

20/10/2013
Qvi1EqY2S
I have a few questions I'm still a liltte confused with 1. You don't have to pay for web browsing and internet service? 2. How do you pay for books? 3. Can u browse anything on the internet? 4. Can it really hold up to 3,500 books? I really love this device I'll have to save up thought I'm thinking of getting the kindle wi-fi plus 3G, please answer my questions I'd really appreciate it.