PHP - un while embebido en otro while???

 
Vista:

un while embebido en otro while???

Publicado por unai (108 intervenciones) el 16/07/2008 11:38:28
Hola amigos:
Tengo un problema que parece sencillo pero no consigo solucionar. Quiero hacer una consulta doble. Primero de la tabla Dato recojo frases y a continuación cada frase lleva mediante un select sus características. Características iguales para todas las frases. Se trata de elegir que característica corresponde a cada frase. Lo he programado utilizando dos whiles uno dentro de otro. Sólo me imprime la primera frase con sus características y se acabó. El resto no aparece. No entiendo porqué. He aquí el código:

$contador=0;
$contador2=0;
$registros=mysql_query("select *
from datos", $conexion) or
die("Problemas en el select:".mysql_error());
echo "<form name='form1' method='post' action='index.php'><p>";
while ($reg=mysql_fetch_array($registros))
{ $contador++;
echo $contador.") ".$reg['Dato'];
echo "<select name='select'".$contador.">";
while ($registro=mysql_fetch_array($registros))
{ echo "<option value=".$registro['Caracteristica'].">".$registro['Caracteristica']."</option>"; }
echo "</select>";
}
echo "<input type='submit' name='Submit' value='Enviar'>";
echo "</form>";
?>

Gracias por todo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:un while embebido en otro while???

Publicado por ery (65 intervenciones) el 16/07/2008 14:21:31
Por que es segundo while utiliza el mismo apuntador de la db que el primero, asi que cuando el segundo llega al final del conjunto de resultado, el segundo tambien. Tienes una solucion rapida (no eficiente)

$qry1 = selec.....
while($qry1) {
$qry2 = selec....
while($qry2) {
}
liberas $qry2
}
liberas $qry1

saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:un while embebido en otro while???

Publicado por unai (1 intervención) el 16/07/2008 16:33:54
Gracias. Así lo haré. De todos modos si esta es una solución (no eficiente) cual sería la eficiente?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar