Pregunta:
Fecha: 26-03-2016 17:57:31
(En Español)
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.
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 Votos: 2 - Respuestas: 7 - Vistas: 12 Compartir en: Google Facebook Twitter LinkedIn Link
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 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: 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
