Ver Mensaje Individual
  #33 (permalink)  
Antiguo 18/09/2010, 02:31
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 9 meses
Puntos: 20
Respuesta: Cómo crear una encuesta/quiz inteligente con jquery

Buenas,

Estuve probando lo que me dijiste. Agregué la clase ultima en dos preguntas, ahora la secuencia es la siguiente

pregunta 1

pregunta 2
(dependiendo que selecciones se formulará la pregunta 3)

Respuesta 1,2 a la pregunta 2
pregunta 3
pregunta 4
(ultima)
Respuesta 3,4 a la pregunta 2
pregunta 4
(ultima)
Dejo el código que consigo esto

Código PHP:
Ver original
  1. <?php
  2. //session_start();
  3. //EN EL ID DE CADA dl COLOCAMOS q- SEGUIDO POR EL NUMERO DE LA PREGUNTA, ESTO ES PARA SABER EN QUE PREGUNTA VAMOS
  4. //CADA RESPUESTA SERA ALGO PARECIDO, TENDRA UN ID r- SEGUIDO POR EL NUMERO DE LA RESPUESTA
  5. //LA CLASE QUE TIENE EL dl, SERA PARA INDICAR CUANTAS PREGUNTAS DEBEN SER SELECCIONADAS ANTES DE CONTINUAR
  6.  
  7. $num_pregunta=$_REQUEST['q']; // Recoge el número de la pregunta
  8. $mis_respuestas=array();
  9. $mis_respuestas[$num_pregunta]=$_REQUEST['r'];
  10. $_SESSION['quiz'] ="hola";
  11. $_SESSION['quiz'][$num_pregunta] = $_REQUEST['r']; // Guardo en la variable de sesión las respuestas
  12.  
  13.  
  14.  
  15. if ($_GET['q']==1){?>
  16. <dl id="q-1" class="n[3]">
  17.     <dt>Pregunta <?php echo $num_pregunta ?> : <b>Selecciona 3 colores:</b></dt>
  18.     <dd id="r-1">Rojo</dd>
  19.     <dd id="r-2">Verde</dd>
  20.     <dd id="r-3">Azul</dd>
  21.     <dd id="r-4">Amarillo</dd>
  22.     <dd id="r-5">Negro</dd>
  23.     <dd id="r-6">Naranja</dd>
  24. </dl>
  25.  
  26.  
  27. <?php print_r($_POST['answers']); }elseif($_GET['q']==2) {?>
  28. <dl id="q-2" class="n[1]">
  29.     <dt>Pregunta <?php echo $num_pregunta ?> : <b>¿Qué lenguaje de programacion te gusta mas?</b></dt>
  30.     <dd id="r-1">JAVA</dd>
  31.     <dd id="r-2">PHP</dd>
  32.     <dd id="r-3">ASP</dd>
  33.     <dd id="r-4">C</dd>
  34. </dl>
  35. <p>DEBUG: <?php print_r($_POST['answers']);?>Respuestas de la pregunta <?php echo ($num_pregunta-1).' : '.$_SESSION['quiz'][$num_pregunta]?></p>
  36.  
  37. <?php
  38. // En funcion de las respuestas anteriores se formula la siguiente pregunta...
  39. }elseif(($_GET['q']==3)&&(($_GET['r']==1)||($_GET['r']==2))) {?>
  40. <dl id="q-3" class="n[1]">
  41.     <dt>Pregunta <?php echo $num_pregunta ?> : <b>Relacionada con PHP y JAVA </b></dt>
  42.     <dd id="r-1">respuesta 1</dd>
  43.     <dd id="r-2">respuesta 2</dd>
  44.     <dd id="r-3">respuesta 3</dd>
  45.     <dd id="r-4">respuesta 4</dd>
  46. </dl>
  47. <p>DEBUG: Respuestas de la pregunta <? echo ($num_pregunta-1).' : '.$mis_respuestas[$num_pregunta]?></p>
  48.  
  49. <?php }elseif(($_GET['q']==3)&&(($_GET['r']==3)||($_GET['r']==4))) {?>
  50. <dl id="q-3" class="n[1] ultima">
  51.     <dt>Pregunta <?php echo $num_pregunta ?> : <b>Relacionada con ASP y C >> </b></dt>
  52.     <dd id="r-1">respuesta 1</dd>
  53.     <dd id="r-2">respuesta 2</dd>
  54.     <dd id="r-3">respuesta 3</dd>
  55.     <dd id="r-4">respuesta 4</dd>
  56. </dl>
  57. <p>DEBUG: Respuestas de la pregunta <? echo ($num_pregunta-1).' : '.$mis_respuestas[$num_pregunta]?></p>
  58.  
  59. <?php }elseif($_GET['q']==4) {?>
  60. <dl id="q-4" class="n[1] ultima">
  61.     <dt>Pregunta <?php echo $num_pregunta ?> : <b>¿Cuál es tu edad?</b></dt>
  62.     <dd id="r-1">menos de 18</dd>
  63.     <dd id="r-2">18-25</dd>
  64.     <dd id="r-3">26-40</dd>
  65.     <dd id="r-4">mas de 40</dd>
  66. </dl>
  67. <p>DEBUG: Respuestas de la pregunta <? echo ($num_pregunta-1).' : '.$mis_respuestas[$num_pregunta]?></p>
  68. <?php }?>

Y luego he intentado aplicar el hasClass() pero no me hace caso.

Código Javascript:
Ver original
  1. function loadQuestion(param){//CARGA LA SIGUIENTE PREGUNTA
  2.         if(question == 1){$('#prev').hide();}else{$('#prev').show();} // Esconde el boton atras en la primera pregunta
  3.         if ($('#cuestionario dl').hasClass('ultima')){ //Si detecta que es la ultima pregunta, muestra el boton finalizar en lugar de continuar
  4.             $('#next.button').hide();
  5.             $('#finaliza.button').show();
  6.         }
  7.         var r = (param)?(param.respuestas)?'&r='+param.respuestas:'':'';
  8.         $('#cuestionario').html('').load('preguntas.php?q='+(question)+r,(param)?param.callback:null);
  9.     }

También he intentado ver porque fallaba la seleccionarRespuestas() pero no he sabido por donde meterle mano

¿Puedes ayudarme?

Muchas gracias de antemano