Foros del Web » Programando para Internet » PHP »

Problema con ciclo ¿anidado?

Estas en el tema de Problema con ciclo ¿anidado? en el foro de PHP en Foros del Web. Que tal compañeros tengo un problemita. Tengo 3 tablas (encuesta,preguntas,respuestas), cuand quiero mostrar mi encuesta me repite cada pregunta el numero de respuestas que tiene, ...
  #1 (permalink)  
Antiguo 09/08/2010, 15:55
 
Fecha de Ingreso: febrero-2005
Mensajes: 48
Antigüedad: 19 años, 9 meses
Puntos: 0
Problema con ciclo ¿anidado?

Que tal compañeros tengo un problemita.

Tengo 3 tablas (encuesta,preguntas,respuestas), cuand quiero mostrar mi encuesta me repite cada pregunta el numero de respuestas que tiene, es decir en lugar de mostrarme asi:

pegunta 1
-opcion 1
-opcion 2

me muestra:

pegunta 1
-opcion 1
pegunta 1
-opcion 2

creo que cupo anidar el ciclo ya que hago una consulta para cada cosa y todo se repite

no se si me explique... ojala me pedan ayudar, aqui dejo mi codigo:


<?php mysql_select_db($database_conn, $conn);
$query_enc= "SELECT * FROM _encuesta Order By id_encuesta DESC LIMIT 1";
$resultado_enc= mysql_query($query_enc);
while($enc=mysql_fetch_array($resultado_enc))

{
$id_encuesta=$enc['id_encuesta'];

<?php mysql_select_db($database_conn, $conn);
$query_pre= "SELECT DISTINCT * FROM _pregunta WHERE id_encuesta='$id_encuesta' Order By id_pregunta ASC";
$resultado_pre= mysql_query($query_pre);
while($pre=mysql_fetch_array($resultado_pre))

{
$id_pregunta=$pre['id_pregunta'];
?>
<?php mysql_select_db($database_conn, $conn);
$query_re= "SELECT * FROM respuesta WHERE id_pregunta='$id_pregunta' Order By id_respuesta ASC";
$resultado_re= mysql_query($query_re);
while($re=mysql_fetch_array($resultado_re))

{
?>
<? echo $pre['pregunta'];?>
<? echo $re['respuesta'];?></td>
<?
}
}
}
?>
  #2 (permalink)  
Antiguo 09/08/2010, 18:43
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 14 años, 4 meses
Puntos: 55
Respuesta: Problema con ciclo ¿anidado?

amigo en este codigo veo que repites mucho la conexion a la base de datos debes simplificar tu codigo
  #3 (permalink)  
Antiguo 09/08/2010, 18:55
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 14 años, 4 meses
Puntos: 55
Respuesta: Problema con ciclo ¿anidado?

primero crea un archivo llamado conexion.php
y agregas este codigo

Código PHP:
<?php
function Conectarse()
{
        
$link=mysql_connect("servidor","usuario","clave");
  
        
mysql_select_db("$database_conn",$link);
        return 
$link;
}
?>

luego coloca tu codigo asi

Código PHP:
<?php 
include("conexion.php");
$link=conectarse();


$query_enc"SELECT * FROM _encuesta Order By id_encuesta DESC LIMIT 1";
$resultado_encmysql_query($query_enc,$link);
while(
$enc=mysql_fetch_array($resultado_enc))

{
$id_encuesta=$enc['id_encuesta'];

$query_pre"SELECT DISTINCT * FROM _pregunta WHERE id_encuesta='$id_encuesta' Order By id_pregunta ASC";
$resultado_premysql_query($query_pre,$link);
while(
$pre=mysql_fetch_array($resultado_pre))

{
$id_pregunta=$pre['id_pregunta'];

echo 
$pre['pregunta'];

$query_re"SELECT * FROM respuesta WHERE id_pregunta='$id_pregunta' Order By id_respuesta ASC";
$resultado_remysql_query($query_re,$link);
while(
$re=mysql_fetch_array($resultado_re))

{
echo 
$re['respuesta'];?></td>
<?
}
}
}
?>
prueba y me dices, nose porque tenias tanto abrir y cerrar el codigo php si solo vi un </td> en todo el codigo, al menos que falte codigo alli

me avisas como te va
  #4 (permalink)  
Antiguo 09/08/2010, 20:51
 
Fecha de Ingreso: febrero-2005
Mensajes: 48
Antigüedad: 19 años, 9 meses
Puntos: 0
Respuesta: Problema con ciclo ¿anidado?

gracias por la respuesta, i el codigo html que iba ahi lo quite ya que paara mi problema no era necesario mostrarlo, tambien lo de la conexion tmbien lo deje por error.

pero bueno, mi problema no se como resolverlo, he buscado y hecho codigo para que me muestre mi sondeo con una pregunta, sus respuestas correspondientes y salte la siguin

solo logro que m muestre todo pero repitiendo

spero me puedan orintar un poco
  #5 (permalink)  
Antiguo 09/08/2010, 21:12
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Problema con ciclo ¿anidado?

bueno tu codigo esta un pokito desordenado pero acomodandolo un poco todo vi que todos lo while estan anidados lo que veo es que si muestras echo echo $pre['pregunta']; y echo $re['respuesta']; una abajo de la otra obvio que te la va a mostrar una encima de la otra creo que si muestras la pregunta antes de entrar al while de las respuestas te deberia ir mostrando la pregunta y luego mostrando las respuestas a cada una de las preguntas suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #6 (permalink)  
Antiguo 09/08/2010, 21:54
 
Fecha de Ingreso: febrero-2005
Mensajes: 48
Antigüedad: 19 años, 9 meses
Puntos: 0
De acuerdo Respuesta: Problema con ciclo ¿anidado?

Cita:
Iniciado por carlos_belisario Ver Mensaje
bueno tu codigo esta un pokito desordenado pero acomodandolo un poco todo vi que todos lo while estan anidados lo que veo es que si muestras echo echo $pre['pregunta']; y echo $re['respuesta']; una abajo de la otra obvio que te la va a mostrar una encima de la otra creo que si muestras la pregunta antes de entrar al while de las respuestas te deberia ir mostrando la pregunta y luego mostrando las respuestas a cada una de las preguntas suerte
gracias 9por tu consejo voy a probar lo que me dices y te cuento
  #7 (permalink)  
Antiguo 09/08/2010, 22:34
 
Fecha de Ingreso: febrero-2005
Mensajes: 48
Antigüedad: 19 años, 9 meses
Puntos: 0
Respuesta: Problema con ciclo ¿anidado?

grcias carlos_belisario

no me habia dado cuenta de eso intente lo que comentas y ya sale, aun tengo un error pero ya acomoda las cosas

y yo que pense que mi codigo era una basura, solo ocupaba un poco de maquillaje
  #8 (permalink)  
Antiguo 10/08/2010, 05:10
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 14 años, 4 meses
Puntos: 55
Respuesta: Problema con ciclo ¿anidado?

se nota que no vio para nada el codigo que le deje alli lo coloque de esa forma

Etiquetas: anidados, ciclos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:59.