Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/03/2007, 09:10
oskar_calvo
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
no consigo unir dos while.

Hola tengo una duda, y es que dependiendo de como ordene el código me sale una cosa u otra.

quiero meter un while dentro de otro while, pero parece que no lo hago bien.

si lo hago de esta manera el último campo no me lo imprime.

Código PHP:
<html>

<head> <title>listado de proyectos</title></head>
<body>
<?
//Conexion con la base
mysql_connect("localhost","daniel","daniel");
mysql_select_db("gestion");

//consulta de las 3 tablas que se quieren visualizar.

$sSQL="select * from principal, descriptor, localizacion, tabla_puente_descriptor 
where principal.id_plantilla = tabla_puente_descriptor.id_plantilla  
and descriptor.id_descrip = tabla_puente_descriptor.id_descrip  
and principal.id_localizacion = localizacion.id_localizacion"
;
$result=mysql_query($sSQL);
while (
$row=mysql_fetch_array($result)){
echo 
"<table border=2> <tr><td>";
echo 
$row['id_plantilla'];
echo 
"</td><td><td></td><td></td></tr>";
echo 
"<tr><td>titulo</td><td>";
echo 
$row['titulo'];
echo 
"</td><td>localización:</td><td>";
echo 
$row['hijo'];
echo 
"</td></tr><tr><td>fecha de inicio</td><td>";
echo 
$row['fecha_inicio']; 
echo 
"</td><td>Fecha fin:</td><td>";
echo 
$row['fecha_fin'];
$dato=$row['id_plantilla'];
echo 
"</td></tr><tr><td>Descriptores:</td><td>";
$sSQL2="select principal.id_plantilla, descriptor from principal, descriptor, localizacion, tabla_puente_descriptor 
where principal.id_plantilla = tabla_puente_descriptor.id_plantilla  
and descriptor.id_descrip = tabla_puente_descriptor.id_descrip  
and principal.id_localizacion = localizacion.id_localizacion and principal.id_plantilla like '$dato'"
;
$result2=mysql_query($sSQL2);
while (
$row=mysql_fetch_array($result2))
{echo 
$row['descriptor'].";";}
echo 
"</tr><tr><td>Descripcion:</td><td>";
echo 
$row['descripcion'];
echo 
"</td></tr></table><br><hr>";}
?>

</body>
</html>
me imprime de esta manera:
43
titulo titulo localización: asturias
fecha de inicio 2007-07-06 Fecha fin: 2007-08-06
Descriptores: descriptor_a;
Descripcion:

44
titulo titulo localización: asturias
fecha de inicio 2007-07-06 Fecha fin: 2007-08-06
Descriptores: descriptor_a;descriptor_c;
Descripcion:

44
titulo titulo localización: asturias
fecha de inicio 2007-07-06 Fecha fin: 2007-08-06
Descriptores: descriptor_a;descriptor_c;
Descripcion:

45
titulo titulo localización: Madrid cam
fecha de inicio 2007-02-12 Fecha fin: 2007-02-19
Descriptores: descriptor_a;descriptor_c;
Descripcion:

45
titulo titulo localización: Madrid cam
fecha de inicio 2007-02-12 Fecha fin: 2007-02-19
Descriptores: descriptor_a;descriptor_c;
Descripcion:

si cambio el código a esta forma:
Código PHP:
<html>

<head> <title>listado de proyectos</title></head>
<body>
<?
//Conexion con la base
mysql_connect("localhost","daniel","daniel");
mysql_select_db("gestion");

//consulta de las 3 tablas que se quieren visualizar.

$sSQL="select * from principal, descriptor, localizacion, tabla_puente_descriptor 
where principal.id_plantilla = tabla_puente_descriptor.id_plantilla  
and descriptor.id_descrip = tabla_puente_descriptor.id_descrip  
and principal.id_localizacion = localizacion.id_localizacion"
;
$result=mysql_query($sSQL);
while (
$row=mysql_fetch_array($result)){
echo 
"<table border=2> <tr><td>";
echo 
$row['id_plantilla'];
echo 
"</td><td><td></td><td></td></tr>";
echo 
"<tr><td>titulo</td><td>";
echo 
$row['titulo'];
echo 
"</td><td>localización:</td><td>";
echo 
$row['hijo'];
echo 
"</td></tr><tr><td>fecha de inicio</td><td>";
echo 
$row['fecha_inicio']; 
echo 
"</td><td>Fecha fin:</td><td>";
echo 
$row['fecha_fin'];
echo 
"</tr><tr><td>Descripcion:</td><td>";
echo 
$row['descripcion'];
$dato=$row['id_plantilla'];
echo 
"</td></tr><tr><td>Descriptores:</td><td>";
$sSQL2="select principal.id_plantilla, descriptor from principal, descriptor, localizacion, tabla_puente_descriptor 
where principal.id_plantilla = tabla_puente_descriptor.id_plantilla  
and descriptor.id_descrip = tabla_puente_descriptor.id_descrip  
and principal.id_localizacion = localizacion.id_localizacion and principal.id_plantilla like '$dato'"
;
$result2=mysql_query($sSQL2);
while (
$row=mysql_fetch_array($result2))
{echo 
$row['descriptor'].";";}


echo 
"</td></tr></table><br><hr>";}
?>

</body>
</html>
me imprime el código de esta otra manera.
44
titulo titulo localización: asturias
fecha de inicio 2007-07-06 Fecha fin: 2007-08-06
Descripcion: lalalalaalalalla
Descriptores: descriptor_a;descriptor_c;

45
titulo titulo localización: Madrid cam
fecha de inicio 2007-02-12 Fecha fin: 2007-02-19
Descripcion: trialara
Descriptores: descriptor_a;descriptor_c;

45
titulo titulo localización: Madrid cam
fecha de inicio 2007-02-12 Fecha fin: 2007-02-19
Descripcion: trialara
Descriptores: descriptor_a;descriptor_c;

46
titulo titulo localización: Madrid cam
fecha de inicio 2007-02-04 Fecha fin: 2007-02-12
Descripcion: define el proyecto
Descriptores: descriptor_a;descriptor_b;descriptor_c;

46
titulo titulo localización: Madrid cam
fecha de inicio 2007-02-04 Fecha fin: 2007-02-12
Descripcion: define el proyecto
Descriptores: descriptor_a;descriptor_b;descriptor_c;

46
titulo titulo localización: Madrid cam
fecha de inicio 2007-02-04 Fecha fin: 2007-02-12
Descripcion: define el proyecto
Descriptores: descriptor_a;descriptor_b;descriptor_c;


-----------------------------------------------------------
me repite todo.

alguien me puede ayudar por favor.

un saludo

oskar calvo