Foros del Web » Programando para Internet » PHP »

Debe ser facil pero no lo se resolver (mysql y php)

Estas en el tema de Debe ser facil pero no lo se resolver (mysql y php) en el foro de PHP en Foros del Web. Hola compañeros. Estoy tratando de crear una encuesta que comencé con algunos problemas que no puedo resolver ya que soy bastante novatillo. Tabla preguntas ____________ ...
  #1 (permalink)  
Antiguo 14/06/2003, 03:52
 
Fecha de Ingreso: enero-2003
Mensajes: 122
Antigüedad: 21 años, 3 meses
Puntos: 1
Debe ser facil pero no lo se resolver (mysql y php)

Hola compañeros.

Estoy tratando de crear una encuesta que comencé con algunos problemas que no puedo resolver ya que soy bastante novatillo.

Tabla preguntas
____________
| ID | Pregunta |
------------------
|___|________|

Tabla opciones
____________________________
| ID | PreguntaID | Opcion | Votos |
------------------------------------------
|___|__________|_______|______|

Aquí el codigo:

Código PHP:

<?

$link 
mysql_connect('localhost','XXXXX','XXXXX') or die("No pudo conectar");
$huboerror mysql_select_db("encuesta",$link) or die("No se encuentra la base encuesta");

$sql mysql_query("
    select
        opciones.ID as opcion_id,
        opciones.PreguntaID as opcion_pregunta_id,
        opciones.Opcion as opcion,
        preguntas.ID as pregunta_id,
        preguntas.Pregunta as pregunta
    from
        opciones
    left join
        preguntas
    on
        opciones.PreguntaID=preguntas.ID
    group by
        opcion_id
"
$link);

$html "<table>\n";
$html .= " <form method=\"post\" action=\"resultado.php\">\n";
$html .= " <tr>\n";
$html .= "  <td align=\"center\">\n";
$html .= "   <p><b>" $row["pregunta"] . "</b></p>\n";
$html .= "  </td>\n";
$html .= " </tr>\n";

while(
$row mysql_fetch_array($sql)){
    
    
$html .= " <tr>\n";
    
$html .= "  <td>\n";
    
$html .= "   <p><input type=\"radio\" name=\"" $row["opcion_pregunta_id"] . "\" value=\"" $row["opcion_id"] . "\">" $row["opcion"] . "</p>\n";
    
$html .= "  </td>\n";
    
$html .= " </tr>\n";

}

$html .= " </form>\n";
$html .= "</table>\n";

echo (
$html);

?>
El problema es que no se como recuperar el valor de la pregunta.

Si intento recuperar el valor de la pregunta dentro de la sentencia while claro que se repite.

Como debería hacer para recuperar el valor de la pregunta y de las opciones correctamente.

Saludetes

Última edición por Ramos Mejia; 14/06/2003 a las 07:57
  #2 (permalink)  
Antiguo 14/06/2003, 10:19
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
Para que sesiones y cookies?

Código PHP:
while($row mysql_fetch_array($sql)){
    
    
$html .= " <tr>\n";
    
$html .= "  <td>\n";
    
$html .= "   <p><input type=\"radio\" name=\"" $row["opcion_pregunta_id"] . "\" value=\"" $row["opcion_id"] . "\">" $row["opcion"] . "</p>\n";
    
$html .= "  </td>\n";
    
$html .= " </tr>\n";
    
$preguntaId=$row["pregunta_id"];
}
    
$html .= "<input type='hidden' name='id' value='".$pregunta_id."'"
Y listo
  #3 (permalink)  
Antiguo 14/06/2003, 15:51
 
Fecha de Ingreso: enero-2003
Mensajes: 122
Antigüedad: 21 años, 3 meses
Puntos: 1
no no use sesiones o cookies solo quiero mostrar el valor de pregunta y de las opciones.

Ayuda por favor
  #4 (permalink)  
Antiguo 14/06/2003, 18:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues .. yo haría simplemente (y sin complicaciones con left join y demas ..)

Una consulta a la tabla preguntas .. obtengo el ID de la pregunta y anidado hago otra consulta a la tabla "opciones" bajo ese id:

Código PHP:
// conectas a tu BD .. etc ...

$consulta_pregunta=msyql_query("SELECT * FROM preguntas");

While (
$row=mysql_fetch_array($consulta_preguntas){
$id_pregunta=$row_pregunta['id']; // Obtengo el ID de la pregunta.
echo $row_pregunta['pregunta']; // Muestro la pregunta ...
   
$consulta_pregunta=msyql_query("SELECT * FROM preguntas WHERE PreguntaID='$id_pregunta'"){
    while (
$row_opciones=mysql_fetch_array($consulta_pregunta){
      echo 
$row_opciones['opcion']; // Muestro las opciones y resto de campos de esa tabla "opciones" 
     
}

Tal vez en SQL usando DISTINCT consigues no repetir, pero como el "left join" y demas no es mi fuerte jeje .. pues ahí va una solución "rudimentaria" pero efectiva.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 14/06/2003 a las 18:10
  #5 (permalink)  
Antiguo 14/06/2003, 21:35
 
Fecha de Ingreso: enero-2003
Mensajes: 122
Antigüedad: 21 años, 3 meses
Puntos: 1
gracias
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 13:46.