entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Problema al registrar respuestas de un cuestionario usando PHP y MySQL

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

1 Respuesta

3votos

mchojrin Puntos2630

Parece que tienes un error en:

$consulta->bind_param("i", $id);

No veo ningún parámetro llamado "i" en tu sql

1voto

Iskandarina comentado

Funciona. Muchas gracias

1voto

Peter comentado

@Iskandarina ya convertí en respuesta el comentario de @mchojrin, por favor seleccionala como correcta.

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta