Foros del Web » Programando para Internet » PHP »

Problemas con Checkbox e Insert

Estas en el tema de Problemas con Checkbox e Insert en el foro de PHP en Foros del Web. Buenas tardes a todos Espero puedan ayudarme con mi siguiente duda, Estoy realizando un programa de encuestas en PHP, el cual me permite agregar varias ...
  #1 (permalink)  
Antiguo 26/03/2015, 16:57
Avatar de extramex  
Fecha de Ingreso: marzo-2014
Ubicación: Torreon
Mensajes: 9
Antigüedad: 10 años, 1 mes
Puntos: 0
Mensaje Problemas con Checkbox e Insert

Buenas tardes a todos

Espero puedan ayudarme con mi siguiente duda,

Estoy realizando un programa de encuestas en PHP, el cual me permite agregar varias preguntas para que despues puedan ser llenadas.

Mi problema viene cuando ya tengo cargadas las preguntas, algunas son de opcion multiple (checkbox).

Es decir les pongo el ejemplo
Pregunta 1
opcion a
opcion b
opcion c


pregunta 2
opcion a
opcion b
opcion c

Estos datos los obtiene a traves de un While, y me muestra todo perfecto, las preguntas que cargo las muestra en orden, mi problema viene cuando quiero insertar las opciones seleccionadas de pregunta a y pregunta b.

Para mostrar el Check box utilizo el siguiente codigo:

Código PHP:
 echo "<input name=respuestan[] type=checkbox value=".$row1[6]." />".$row1[6]." <br />"


Y para enviar la informacion a traves del formulario estoy utilizando.

Código PHP:
 <?php  
if(isset($_POST['enviar'])){
    for(
$i=0;$i<count($_POST['respuestan']);$i++) { 
  echo 
" ".$_POST['respuestan'][$i] . '<br>'
}  
    
    }

?>
Al momento de Realizar esto, lo que hace es que me arroja las opciones mostradas correctamente es decir si seleccion A y B de la Pregunta uno y C de la pregunta 2, me arroja A B C, lo que yo deseo hacer es que, me detecte a que pregunta pertenece la respuesta y me permita guardarla junto a esa pregunta.

Que me imprima algo asi como pregunta 1 A,B y Pregunta 2 C

Espero haberme explicado claramente

Saludos a todos
  #2 (permalink)  
Antiguo 27/03/2015, 15:56
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas con Checkbox e Insert

Para que no tengas todas las respuestas juntas, sepáralas por pregunta, es decir, en lugar de nombrarlas a todas como 'respuestan', para la primera pregunta, puedes nombrarlas 'respuestas1', la la segunda, 'respuestas2' y así sucesivamente, de esta manera, te será más fácil identificarlas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 27/03/2015, 17:19
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: Problemas con Checkbox e Insert

O podrías poner mas completo tu código de como formula la pregunta?
  #4 (permalink)  
Antiguo 27/03/2015, 17:42
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problemas con Checkbox e Insert

Hola:

Nunca lo probé, pero cuando hay un juego de corchetes "vacío" en el nombre del campo del formulario, php lo considera un array, indexado por el orden de selección; pero dentro de los corchetes podría ponerse el índice...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 28/03/2015, 12:45
Avatar de extramex  
Fecha de Ingreso: marzo-2014
Ubicación: Torreon
Mensajes: 9
Antigüedad: 10 años, 1 mes
Puntos: 0
Exclamación Respuesta: Problemas con Checkbox e Insert

Claro aqui dejo el codigo completo

El archivo se llama contestar-encuesta02.php y lo explico un poco:
Lo primero que hace es checar si el nivel es de Empleado para poder contestar la encuesta, despues de esto, hace un While para buscar en la tabla
Cita:
PREGUNTAS
, ya que encontro las preguntas, existe otra tabla llamada
Cita:
ENCUESTASP
donde se encuentran las respuestas a cada pregunta, les anexo imagenes al final de mis tablas,

La busqueda basicamente se hace relacionando el numero de pregunta que seria nuestro identificador, hasta aqui todo lo hace de manera correcta.

Mi problema viene al momento de querer guardar los datos de cada respuesta.

Lo pongo como un ECHO para mostrar, antes de guardar quiero primero hacer pruebas de que me guarde todo de manera correcta.

Código PHP:
<?php 
@session_start();?>
<?php 
    
include_once "conexion.php";
    if(
$_SESSION['nivel'] == "Empleado"){
        
$usuario $_SESSION['username'];
        
$encuesta $_SESSION['encuesta'];
        }
        else {
        echo 
'<script type="text/javascript">window.location.href="index.php";</script>'
        echo 
"Debes estar logeado para poder acceder a esta Area";
        }
    
        
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ProEs.Net - Sistema de Encuestas</title>
</head>

<body>
     <?php
print("Bienvenido ");
print(
$_SESSION["nombre"]);
print(
"<br />Id Encuesta: ");
print(
$encuesta);
?></font><br /><br />
<form action="" method="post">
     <?php
    $query 
mysql_query("SELECT * FROM preguntas WHERE id_encuesta='$encuesta'") or die(mysql_error()); 

while (
$row mysql_fetch_row($query)){ 
        
       
$pregunta $row[3];
       
$npregunta $row[2];
       echo 
$row[2].") ".$row[3]."<br />"
       
$query1 mysql_query("SELECT * FROM encuestasp WHERE npegunta='$npregunta' and id_encuesta='$encuesta'") or die(mysql_error()); 
       while (
$row1 mysql_fetch_row($query1)){ 
       if(
$row1[5] == "Opcion Multiple varias respuestas"){
           echo 
"<input name=respuestan[] type=checkbox value=".$row1[6]." />".$row1[6]." <br />";
           
?>
           <?php
       
}
       else{
           if(
$row1[5] == "Opcion Multiple una sola Respuesta"){
           
?>
<input name="radioresp<?php echo $npregunta?>" type="radio" value=<?php echo $row1[6?> /> 
           <?php    
           
echo $row1[6]."<br />";    
           }
           else{
           if(
$row1[5] == "Calificar del 1 al 10"){
              
?>
<input name="radioresp1" type="radio" value=1 />1
<input name="radioresp1" type="radio" value=2 />2
<input name="radioresp1" type="radio" value=3 />3
<input name="radioresp1" type="radio" value=4 />4
<input name="radioresp1" type="radio" value=5 />5
<input name="radioresp1" type="radio" value=6 />6
<input name="radioresp1" type="radio" value=7 />7
<input name="radioresp1" type="radio" value=8 />8
<input name="radioresp1" type="radio" value=9 />9
<input name="radioresp1" type="radio" value=10 />10<br /><br />
              <?php 
           
}
           else{
           if(
$row1[5] == "Respuesta Abierta"){
           
?>
            <textarea name="respuesta" cols="30" rows="5"></textarea><br /><br />
           <?php
           
}
           }
           }
       }
       

       }


    
?><input type="submit" name="enviar" value="Registrar Encuesta" /></form><br /><br />
    <?php  
if(isset($_POST['enviar'])){
    for(
$i=0;$i<count($_POST['respuestan']);$i++) { 
  echo 
" ".$_POST['respuestan'][$i] . '<br>'
}  
    
    }

?>
</body>
</html>
Esta es la tabla EncuestasP


Y esta la tabla Preguntas


Y esto es una muestra de como me aparecen



Espero y con esta información puedan entenderme un poco más
  #6 (permalink)  
Antiguo 28/03/2015, 13:56
 
Fecha de Ingreso: marzo-2015
Mensajes: 14
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Problemas con Checkbox e Insert

Tengo una serie de preguntas...

----------------------------------
1: Por qué guardas las preguntas en la Base de Datos?
Si es un cuestionario estandar, dejalo en html, te correrá más rápido que ir a la base de datos, volver y mostrartelo

----------------------------------
2: Por que guardas tanta informacion en las encuestas?
En vez de poner el nombre de la pregunta, que siempre se repite, puede ponerle numeros, como 1, 2, 3... y así te lo guardas en forma de comentarios en el php para poder saber siempre a que te refieres cuando haces todo el envio de informacion, y no te hara falta tener que subir tambien el nombre de la pregunta, es gasto de tiempo y recursos.

----------------------------------
3: Por que no lo haces con ajax?
Estoy harto de hacer formularios con ajax, son mucho mas dinamicos, tienen muchisima mas potencia, como poder corregir campos o informar al cliente de fallos en la informacion dada... Tambien puedes captar todo el formulario como variables de javascript, que es infinitamente mas sencillo, y luego pasarlo por ajax al php. La clave esta siempre en separar bien los documentos: HTML, javascript y php, y así lo tendrás todo muy bien ordenado, de manera que si tienes un cuestionario, no te cargue toda la informacion de las 3 paginas al momento, sino que primer cargue el html, luego el javascript(que siempre se pone debajo de la pagina, al final, para no ralentizar) y luego cargas el php cuando lo necesitas ( hablo del php de ENVIO de informacion)

Con todo esto espero haberte ayudado algo, o al menos hacerte entender que puede llevarte menos tiempo cambiarlo un poco y aplicarle ajax, que buscar una manera de hacerlo con php en condiciones. De todas maneras, te va muy rapido porque es el localhost, en un servidor con 20000 personas, ya me dirás lo bien que carga, jajaja.
Saludos ¡¡ (AJAX FOR THE WIN)
  #7 (permalink)  
Antiguo 28/03/2015, 15:50
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: Problemas con Checkbox e Insert

Si amigo, tu formulario o encuesta nunca cambia puedes crear el diseño en HTML fijo y asi en la base de datos solo guardarías lo que el usuario contesta.

Así te evitas la consulta a la BD para traer las preguntas
  #8 (permalink)  
Antiguo 28/03/2015, 17:40
Avatar de extramex  
Fecha de Ingreso: marzo-2014
Ubicación: Torreon
Mensajes: 9
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Problemas con Checkbox e Insert

Mis formularios cambian =) no siempre son los mismos este de aqui es solo un ejemplo, gracias, nada de esto resuelve aun mi duda, gracias
  #9 (permalink)  
Antiguo 28/03/2015, 19:06
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: Problemas con Checkbox e Insert

Ps si ya tienes eso guardado en la base de datos al realizar el ingreso de los datos inmediatamente reaiza una cnsulta a la base de datos para traer las respuestas de dicha encuesta.

Etiquetas: checkbox, formulario, insert
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:48.