Nueva pregunta

Pregunta:

Fecha: 26-03-2016 17:57:31 (En Español)

Pasar variables generadas en PHP a Javascript para validar preguntas[Resuelta]

Buenas amigos, quisiera pedirles su ayuda con un caso que tengo, sucede que en un ciclo while imprimo todas las preguntas y respuestas, las respuestas se selecionan con un check box, de la bases de datos me traigo pregunta y respuesta, al momento de validar la respuesta utilizo javascript,

Mi problema es que siempre la variable de la respuesta es la misma para las 4 preguntas y deberia de ser distinta para las 4 preguntas.

		<?php
	require('evaluacion1/conexion.php');
	
	$query="SELECT p.pregunta,p.id,r.r1,r.r2,r.r3,r.r4,p.res FROM preguntas as p join  respuestas as r on p.id_p=r.id_r  ORDER BY RAND() limit 4";
	
	$resultado=$mysqli->query($query);
	$x=0;
?>		
					<?php 
					
					while($row=$resultado->fetch_assoc()){ 
	
					?>
 <br>
<span style="color: #783f04;"><b> 	<?php $x++;	 echo " $x .- ".utf8_encode($row['pregunta']);  ?> </b> </span><br><br>
       
<p><span class="Estilo1"> <input type= radio name= "alterna<?php  echo $x; ?>"><label>  a) <span class="subtitle Estilo4"><?php echo utf8_encode($row['r1']);?> </label></span>.</span> </p>
<p><span class="Estilo1"> <input type= radio name= "alterna<?php  echo $x; ?>"><label>  b) <span class="Estilo4"><?php echo utf8_encode($row['r2']);?> </label></span>.</span> </p>
<p><span class="Estilo1"><input type= radio name= "alterna<?php  echo $x; ?>"><label>   c) <span class="Estilo4  Estilo5"><?php echo utf8_encode($row['r3']);?> </label></span>.</span> </p>
<p><span class="Estilo1"><input type= radio name= "alterna<?php  echo $x; ?>"><label>   d) <span class="Estilo5"><?php echo utf8_encode($row['r4']);?> </label></span>.</span></p>
            <br>
   
   
		 <SCRIPT LANGUAGE= "javascript">
         function checkAnswer(form,currentField) {
           score= 0;
           if (currentField == "EVALUAR") {
			 
             if(form.alterna1[<?php echo $row['res'];?>].checked) {
               form.p1.value= "Correcta";
               score=score+5;
               form.score.value= score;       
             } else {
                 form.p1.value= "Incorrecta";
             }
           
             if(form.alterna2[<?php echo $row['res'];?>].checked) {
               form.p2.value= "Correcta";
               score=score+5;
               form.score.value= score;       
             } else {
               form.p2.value= "Incorrecta";
             }
          
             if(form.alterna3[<?php echo $row['res'];?>].checked) {
               form.p3.value="Correcta";
               score=score+5;
               form.score.value= score;
             } else {
               form.p3.value="Incorrecta";
             } 
         
             if(form.alterna4[<?php echo $row['res'];?>].checked) {
               form.p4.value= "Correcta";
               score=score+5;
               form.score.value= score;
             } else {
               form.p4.value= "Incorrecta";
                    } 
             }  
         }
            
      </SCRIPT>	 
		
		
		
			<?php } 	?>
		




form.alterna1 es la pregunta uno, y el campo en javascript [<?php echo $row['res'];?>].checked deberia tener la respuesta correcta pero siempre es la misma para todos
Etiquetas: Javascript - PHP - Pregunta Votos: 2 - Respuestas: 7 - Vistas: 12 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 26-03-2016 22:55:48 Hola amigo,

    Lo que veo es que en la línea 18 hasta la 20 imprimes la variable $x en cada respuesta cuando esta debe ser diferente o al menos eso es lo que veo siempre te imprimirá la misma variable porque está en el mismo while y haces un incremento a esa variable al principio después muestras esa variable repetidamente eso no debe ser así.

    Lo que te recomiendo es que hagas una nueva variable que empiece desde 0 y la vas imprimiendo con un incremento en cada una de las respuestas.

    Saludos
    Equipo AnimeSensei
      Votos: 1 - Link respuesta
     
  • Fecha: 27-03-2016 10:43:52 asi es amigo imprimo la variable $x para q me cuente el numero de preguntas si imprimo la respuesta dentro del while que es lo que necesito
     <?php echo $row['res'];?> 
    se imprime bien pero al hacer un echo fuera del while solo me muestra el ultimo resultado del while no de cada uno...

    necesito sacar el valor de la respuesta para las 4 preguntas q se generan dentro del while, lo necesito sacar porque afuera del while tengo el codigo de abajo para validar si las preguntas son correctas o no:


    
      <SCRIPT LANGUAGE= "javascript">
             function checkAnswer(form,currentField) {
               score= 0;
               if (currentField == "EVALUAR") {
                 if(form.alterna1[<?php  echo $row['res']; ?>].checked) {
                   form.p1.value= "Correcta";
                   score=score+5;
                   form.score.value= score;       
                 } else {
                     form.p1.value= "Incorrecta";
                 }
               
                 if(form.alterna2[<?php  echo $row['res']; ?>].checked) {
                   form.p2.value= "Correcta";
                   score=score+5;
                   form.score.value= score;       
                 } else {
                   form.p2.value= "Incorrecta";
                 }
              
                 if(form.alterna3[<?php  echo $row['res']; ?>].checked) {
                   form.p3.value="Correcta";
                   score=score+5;
                   form.score.value= score;
                 } else {
                   form.p3.value="Incorrecta";
                 } 
             
                 if(form.alterna4[<?php  echo $row['res']; ?>].checked) {
                   form.p4.value= "Correcta";
                   score=score+5;
                   form.score.value= score;
                 } else {
                   form.p4.value= "Incorrecta";
                        } 
                 }  
             }
                
          </SCRIPT>
    


    gracias por responder amigo.
      Votos: 1 - Link respuesta
     
  • Fecha: 27-03-2016 11:27:41 Hola amigo,

    Ahora sí me quedo más claro.
    Obviamente te mostrara el último porque después del while ese fue el último valor que se le dio al finalizar el while, lo que puedes hacer es usar un count como la variable $x que valla sumando y así los vas cogiendo uno a uno por ejemplo por id respuesta_$y++ y así con JavaScript los puedes recoger cada uno con su imprenta.

    Espero haberme expresado correctamente.

    Saludos
      Votos: 1 - Link respuesta
     
  • Fecha: 27-03-2016 13:01:33 gracias por responder amigo, podrias dejarme un ejemplo por favor para guiarme ?
    ya que intento lo que me dices y no me resulta. la variable fuera del while sigue arrojando la ultima vuelta q da.
      Votos: 1 - Link respuesta
     
  • Fecha: 28-03-2016 09:25:48 Hola,

    Amigo ya la resolviste??

    Saludos
      Votos: 0 - Link respuesta
     
  • Fecha: 31-03-2016 15:53:43 1.- Te imprime varias preguntas? o solo 1?
    2.- Deberías sacar ese script del while o modificarlo porque estarás creando la misma función muchas veces y eso no se te va a permitir, ya que cuando la uses no va a saber cual función es la que va a utilizar, debe haber otra manera de hacer lo del script sin que te estes repitiendo, ya que eso también es una mala práctica.
      Votos: 0 - Link respuesta
     
  • Fecha: 31-03-2016 17:09:02 ya resolvi amigo, lo que hice fue hacer unos input hidden almacenando el valor de la respuesta de esta manera cuando de una vuelta el ciclo almacena la respuesta correcta, y despues mediante javascript saco las variables del while ya que las identifico por el nombre.   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com