Saludos
Estoy diseñando un sitio web que tendría que permitir, entre otras funciones que los usuarios puedan crear y subir cuestionarios con el fin de que otros respondan y envíen sus respuestas. Puesto que los cuestionarios no necesariamente tienen que contar con las mismas preguntas y las respuestas no son múltiples tengo un formulario con radiobuttons y un contador para que permita seleccionar una única opción de cada pregunta, además cada cuestión incluye, aparte de las opciones correspondientes un textarea por si el usuario desea incluir algún aspecto a modo de explicación o ampliación:
<form name="cuestionario" action="" method=post>
<?php
echo'<br>';
//conexión a base de datos y consulta para mostrar preguntas
$contador=0;
echo"<td>";?><input type="radio" name="opciones<?php echo $contador?>"class="other" value="<?php echo $row['respuestas'];?>" required /><?php echo "</td>";
echo "<td>";echo $fila['respuestas'] ;echo "</td>";
echo"<tr>";
//código para mostrar el textarea después de las opciones de cada pregunta
$i=$i+1;
if($resultado->num_rows==$i){
echo'<br></br>
<p>Si desea añadir información adicional(opcional)</p>';
?><textarea name="infoadicional<?php echo $j?>" rows="10" cols="75"> </textarea>
<?php echo '<br></br>';
$i=0;
}
}
?>
El problema surge cuando voy a guardar los datos en una tabla con los atributos: identificador_respuesta,identificador_pregunta,contenido_respuesta,usuario(email del usuario que contesta),infoadicional,id_cuestionario.
Me inserta todas las respuestas disponibles en lugar de solo las marcadas. Este es mi código:
if(isset($_POST['boton'])){
//conexión a base de datos
$id=$_GET['id_cuestionario'];//extrae el identificador del cuestionario de la url
$consulta=$db->prepare("SELECT count(identificador_pregunta) as recuento FROM preguntas WHERE id_cuestionario=? ");
$consulta->bind_param("i", $id);
$consulta->execute();
$consulta->bind_result($recuento);
$consulta->fetch();
$consulta->close();
$consulta2=$db->prepare("SELECT * FROM preguntas WHERE id_cuestionario=? ");
$consulta2->bind_param("i", $id);
$consulta2->execute();
$resultado = $consultal2->get_result();
$usuario=$_SESSION['email'];
$contador=1;
while($fila=$resultado->fetch_assoc()){
for($contador=1; $contador<$recuento;$contador++){
$respuestas = mysqli_real_escape_string($db,$_POST['opciones'.$j.'']);
$informacion_adicional =
mysqli_real_escape_string($db,$_POST['infoadicional'.$j.'']);
$sqlconsulta="INSERT INTO respuestas(identificador_pregunta, contenido_respuesta,infoadicional,usuario) VALUES (?,?,?,?)";
$inserccion = $db->prepare($sqlconsulta);
$inserccion->bind_param("isss",$fila['identificador_pregunta'],$respuestas,$infoadicional,$usuario);
$inserccion->execute();
$inseccion->close();
}
Muchas gracias de antemano