Foros del Web » Programando para Internet » PHP »

Cuestionario personalizable

Estas en el tema de Cuestionario personalizable en el foro de PHP en Foros del Web. Buenas Tardes lenguage/basededatos/programa PHP/Mysql/Dreamweaver Contextualizo el preoblema; necesito un cuestionario que se divida en diferentes secciónes, y que cuente con diferentes tipos de pregunta, es ...
  #1 (permalink)  
Antiguo 30/08/2009, 16:06
 
Fecha de Ingreso: mayo-2009
Mensajes: 8
Antigüedad: 14 años, 11 meses
Puntos: 0
Cuestionario personalizable

Buenas Tardes

lenguage/basededatos/programa PHP/Mysql/Dreamweaver

Contextualizo el preoblema; necesito un cuestionario que se divida en diferentes secciónes, y que cuente con diferentes tipos de pregunta, es decir, de opción, de verificacíon, de menu o abiertas esta información sera colocada por medio de un administrador esto hace que se puedan ingresar nuevas preguntas con sus opciones haciendo que el numero de tanto de preguntas como de opciones sea variable para cada caso,

Una parte de la programación la hago con dreamweaver, otra la hago yo misma.

Como empecé?, bien hice 3 tablas para la parte del cuestionario, una para las preguntas, otra para las opciones y otra para las respuestas.... hice el administrador para la inserción de preguntas y todo salio bien.

En que voy? en la presentacíon del cuestionario, para ello, hice una consulta con un JOIN para acoplar la tabla de opciones y la de preguntas,

para mostrar el tipo de respuesta adecuado(opción verificación...) utilicé un if, y repetí la región con un do while para mostrar todas las preguntas y respuestas.

Cual es el problema? que la pregunta se repite por cada opción.

Que he intentado? intenté usar una consulta exlusiva para las preguntas dio el mismo resultado, intente hacer un do while para las preguntas, otro para las respuestas y uno para todo, pero no me reconocia el completo, intenté usar un continue o un break pero, no supe usarlo bien ya que no se como especificar una variable de cuantas opciones son antes de la siguiente pregunta ya que este numero varía de una pregunta a otra.

Lo ideal es que reconociera el cambio de la pregunta en la tabla opciones y sacara la pregunta siguiente, espero estar siendo clara.

Voy a lo más especifico:

Las tablas estan compuestas por los siguientes campos
Preguntas:
p_id (esta es la que une las dos tablas autoincrement...)
idioma
pregunta
tipo
etapa

Cuestionario:
id
p_id
opciones


aqui va el codigo de la página que muestra las preguntas
Como ya saben dreamweaver genera mucho codigo asi que les paso solo lo que tiene que ver con el problema

Código PHP:
<?php require_once('../Connections/hola.php'); ?>
mysql_select_db($database_hola, $hola);
$query_Recordset2 = "SELECT * FROM Preguntas JOIN cuestionario ON Preguntas.p_id=cuestionario.p_id WHERE Preguntas.idioma='espanol' AND Preguntas.etapa='preambulo'";
$Recordset2 = mysql_query($query_Recordset2, $hola) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$totalRows_Recordset2 = mysql_num_rows($Recordset2);

mysql_select_db($database_hola, $hola);
$query_Recordset3 = "SELECT * FROM Preguntas WHERE Preguntas.idioma='espanol' AND Preguntas.etapa='preambulo'";
$Recordset3 = mysql_query($query_Recordset3, $hola) or die(mysql_error());
$row_Recordset3 = mysql_fetch_assoc($Recordset3);
$totalRows_Recordset3 = mysql_num_rows($Recordset3);
?>

<table>
    <tr><td></td></tr>
    <tr>
      <td width="612" style="border:none; background-color:">
        <form method="post" name="form1" id="form1">
        <table> 
        <?php do { ?>
             <tr>
                   <td><?php echo $row_Recordset3['pregunta']; ?></td>
             </tr>
                         <tr>
                <td>
<?
$tipo 
=$row_Recordset2['tipo'];
$opcion ='opcion';
$verificacion='verificacion';
$menu='menu';

if (
$tipo $opcion){
 
?>
<input <?php if (!(strcmp($row_Recordset2['opciones'],""))) {echo "checked=\"checked\"";} ?>
name="opcion" type="radio" value="<?php echo $row_Recordset2['opciones']; ?>" />
<? } elseif($tipo $menu) {
    
?>
    <select name="opcion">
      <?php do { ?>
      <option value="<?php echo $row_Recordset2['opciones']?>"><?php echo $row_Recordset2['opciones']?></option>
      <?php } while ($row_Recordset2 mysql_fetch_assoc($Recordset2));
                  
$rows mysql_num_rows($Recordset2);
                  if(
$rows 0) {
                  
mysql_data_seek($Recordset20);
                  
$row_Recordset2 mysql_fetch_assoc($Recordset2);
              }
?>    </select>
    <? } elseif($tipo $verificación) {  ?>
<input <?php if (!(strcmp($row_Recordset2['opciones'],$row_Recordset2['opciones']))) {echo "checked=\"checked\"";} ?> name="opcion" type="checkbox" value="<? $row_Recordset2['opciones']; ?>" />
<? } else{ ?>
no hay un tipo de pregunta especificado
<? }  ?>
<?php 
echo $row_Recordset2['opciones']; ?></td></tr>
<?php } while ($row_Recordset2 mysql_fetch_assoc($Recordset2)); ?>
             </table>
            </form>
          </td>
      </tr>
  </table>
Cualquier sugerencia es valida

Talves dije demasiado para la pregunta y sea muy facil de responder, pero ha sido un dolor de cabeza asi que para no generar dudas escribi lo mas detalladamente el problema

Muchas Gracias por la atención les agradesco cualquier aporte

Última edición por deddleity; 30/08/2009 a las 16:18
  #2 (permalink)  
Antiguo 30/08/2009, 16:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Cuestionario personalizable

Pues solo lo que veo es que no necesitas la segunda consulta, si ya tienes la primera consulta y ya haces un query a la base de datos de preguntas no veo necesidad del segundo query.

Por otro lado estas haciendo dos ciclos do/while sobre el mismo recordset, eso te va a generar un problema porque estas moviendo el puntero del recordset dos veces, y la segunda vez no va a tener el efecto que esperas, revisa bien la logica de tu problema.

Mi recomendación es que hagas un diagrama de flujo para que pongas los pasos de como es que se tiene que ejecutar tu query.

Saludos.
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 05:54.