FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
bucles anidados con PHP
Hola, ya estoy aqui de nuevo con una dudilla de php
Os cuento. Tengo dos tablas maestro detalle en mySQL y quiere sacar el resultado de una inner join de estas en una tabla y, claro está, en la misma celda todas las coincidencias de un registro de la cabecera (es decir, todos sus detalles) De momento he conseguido esto Código:
$s = "<table width=\"100%\" border=\"0\">\n"; while ( $ResultQuery = mysql_fetch_row( $IdConsulta ) ) { $ant = $ResultQuery[0]; $s .="<tr>\n"; $s .="<td width=\"8%\"><img src=\"images/".$ResultQuery[2]."\" width=\"" .$ResultQuery[4]."\" height=\"".$ResultQuery[5]."\"></td>\n"; $s .="<td width=\"92%\" valign=\"top\"><p>Ref : ".$ResultQuery[0]."</p>\n"; $s .="<p>".$ResultQuery[6]."</p>\n"; while (($ResultQuery = mysql_fetch_row($IdConsulta)) && ($ant == $ResultQuery[0])){ $s .="<p>".$ResultQuery[6]."</p>\n"; } $s .= "</td>\n"; $s .= "</tr>\n"; } $s .= "</table>\n"; Se que es una chorrada, pero no veo como hacerlo. Podeis darme una ayudita? P.D. Las lineas cortadas es para que no aparezca la barra horizontal de desplazamiento Gracias Última edición por __cadetill fecha: 18-07-2003 a las 09:02:09. |
#2
|
||||
|
||||
Y porque no en lugar de hacer un inner join haces dos queryes y recorres uno en cada bucle?
asi no perderias ningún registro. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
|||
|
|||
Hola y gracias por responder jachguate
Pues esta solucion es la que tengo implementada de momento, pero tambien me gustaria saber la solucion a la otra, porque, vamos, creo que ha de poderse hacer, no? (almenos el Delphi sí se puede ) Última edición por __cadetill fecha: 18-07-2003 a las 09:03:13. |
#4
|
||||
|
||||
No estoy seguro de entender. Vamos a ver...
Supongamos que tenemos dos tablas: personas = (id, nombre) telefonos = (id, persona_id, telefono) Si entiendo, tu quieres mostrar una tabla y en una sola celda poner todos los detalles, en este caso, todos llos teléfonos de una persona: Código:
+-------+------+ | pepe | 5-55 | +-------+------+ | maria | 5-48 | | | 5-24 | +-------+------+ Código:
select p.nombre, t.telefono from personas p left join telefonos t on (t.persona_id = p.id) order by p.id |
#5
|
|||
|
|||
Hola roman, y gracias por interesarte
Eso es cierto, y de hecho, el SQL que lanzo lo hace Lo que no se hacer es recorrer la query SOLO creando una nueva fila en la tabla en el cambio de ID (segun el ejemplo que has puesto el cual expresa exactamente lo que quiero). No se si me he explicado mejor ahora |
#6
|
||||
|
||||
Puedes escribir una fila por cada registro, tomando en cuenta que el valor de la primera columna (nombre en el ejemplo) se imprima solo cuando sea diferente al anterior. Sirvete de una variable intermedia que vaya almacenando el ultimo nombre para hacer las comparaciones.
No creo que tengas complicaciones por la cantidad de <TD>'s que utilizes. Suerte!
__________________
Héctor Geraldino Software Engineer |
#7
|
||||
|
||||
Hola
Prueba con este código, te adelanto que no lo he probado y no puedo garantizarte que no tenga algún bug. Código PHP:
Emilio |
#8
|
|||
|
|||
gracias compañeros, lo pruebo y os cuento que tal me ha ido
|
#9
|
|||
|
|||
Bueno, lo he probado y me ha funcionado
Como para muestr un boton.... http://www.santi-joiers.com/p1.php Creo que me ha quedado chulo y todo Gracias a todos. Nos leemos |
|
|
|