Re: Vectores o matrices ... (perdón por lo extenso)

Rodrigo Fuentealba darkprox en gmail.com
Jue Nov 9 11:41:17 CLST 2006


Estimado:

Antes que todo, usa ADOdb (adodb.sourceforge.net), así podrás evitarte
mucho escándalo con el desorden.

No es como lo habría hecho cualquier cristiano, pero sirve... Aquí
veremos algunas cositas:

// esto es lo que haces para generar la conexión.
$db = ADONewConnection('mysql');
$db->Connect('localhost', 'root', '', 'pruebas');

// estas dos son las queries que usaremos
$sqlalumno = 'select codigo, nombre from alumno';
$sqlnota = 'select notas from pruebas where alumno = ? order by codigo asc';

// traemos un recordset
$rsalumno = $db->Execute($sqlalumno);

if($rsalumno and !$rsalumno->EOF)
{
    // mientras hayan datos en el recordset
    while(!$rsalumno->EOF)
    {
        // dibujamos una nueva fila
        echo('<tr>');

        // escribimos el nombre del alumno
        echo('<td>'.$rsalumno->fields[1].'</td>');

        // preguntamos por todas las notas del alumno cuyo código es...
        $rsnota = $db->Execute($sqlnota, array($rsalumno->fields[0]));

        // y las mostramos para el lado entre <td> y </td>
        if($rsnota and !$rsnota->EOF)
        {
            while(!$rsnota->EOF)
            {
                echo('<td>'.$rsnota->fields[0].'</td>');
                $rsnota->MoveNext();
            }
        }

        // como hayamos mostrado todas las notas, podemos cerrar la fila.
        echo('</tr>');

        // y mover al siguiente registro
        $rsalumno->MoveNext();
    }
}

Lo malo es que si tenemos 45 alumnos, haremos N + 1 queries, por lo
anidadas. Lo bueno es que, desde el punto de vista de la base de
datos, nos ahorramos memoria trayendo un recordset gigante (aunque en
MySQL eso no influye mucho), y el query no se hace tan complicado ni
engorroso, por lo que filtros simples servirán.

No sé trabajar con MySQL en bruto, siempre he dependido de ADOdb en
PHP ya que difícilmente alguna vez hice algo que involucraba un solo
gestor de bases de datos.

Atte.

Rodrigo Fuentealba Cartes.

2006/11/9, Alberto Rivera <rivera.alberto en gmail.com>:
> El día 9/11/06, Ricardo Mun~oz A. <rmunoz en pjud.cl> escribió:
> >
> > Alberto Rivera wrote:
> > > Hola señores, soy nuevo en esta lista y quisiera solicitar su ayuda,
> > > les explico el problema; resulta que necesito recuperar de una tabla
> > > una serie de registros, imprimirlos en una página y añadirles "N"
> > > valores cuya cantidad es recuperada de otra trabla, para ser más
> > > concretos, el problema es similar al del libro de notas, o sea, cada
> > > alumno debe ser sacado de una tabla y cada una de las pruebas tambien,
> > > siendo cada una de estas pruebas las que se deben ingresar. En este
> > > momento estoy recuperando los registros y almacenandolos sólo con un
> > > valor de la siguiente forma :
> >
> > [...]
> >
> > > Esto es lo que tengo en realidad no he podido avanzar más disculpen
> > > por lo extenso de esta consulta ... espero que se entienda y que el
> > > código sirva a alguien también :)
> >
> > creo que tu problema se puede resolver trayendo datos de ambas tablas
> > mediante una sentencias SQL
> > con un JOIN. podrias indicar las estructuras (campos) de ambas tablas
> > para poder ayudarte.
>
>
> ups no entiendo ... ¿? en realidad la cuestion que el problema no es traer
> los datos sino que pasarlos en conjunto a la página donde se almacenarán :)
>
> salu2 y gracias
>
>
> --
> > Ricardo Mun~oz A.
> > Usuario Linux #182825 (counter.li.org)
> >
>
>


-- 
Rodrigo Fuentealba Cartes
Desarrollador de Sistemas Web
Registered User 387639 - http://counter.li.org



Más información sobre la lista de distribución PHP