Registrando una encuesta en la base de datos

Barakas Seguir

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
21 Ago 2013
Mensajes
78
Muy buenas,

Después de tantear algunos formularios que envían por web, he querido probar algo más difícil, una encuesta.
Esta encuesta es algo especial, ya que no he querido poner todas las preguntas en un mismo archivo, por lo que la he dividido en 5 archivos diferentes y un comentario a través de "input" de tipo hidden:

PHP:
<input type="hidden" name="respuesta1" value="<?php echo $respuesta1; ?>" />

Esto me ha servido ya que los valores han llegado hasta el último sin errores. El problema viene a la hora de registrarlo en la base de datos desde enviar.php que me da de respuesta undefined.

Os pongo primero la base de datos:

Insertar CODE, HTML o PHP:
CREATE TABLE IF NOT EXISTS `encuesta` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `pregunta1` varchar(10) NOT NULL,
  `pregunta2` varchar(10) NOT NULL,
  `pregunta3` varchar(10) NOT NULL,
  `pregunta4` varchar(10) NOT NULL,
  `pregunta5` varchar(10) NOT NULL,
  `comentario` varchar(300) NOT NULL,
  `fecha` datetime NOT NULL,
  `restaurante` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Y luego el enviar.php:

PHP:
<?php 
//recibimos las variables enviadas por el formulario 
$respuesta1 = $_POST['respuesta1'];
$respuesta2 = $_POST['respuesta2'];
$respuesta3 = $_POST['respuesta3'];
$respuesta4 = $_POST['respuesta4'];
$respuesta5 = $_POST['respuesta5'];
$comentario = $_POST['comentario'];
$fecha = date("d-m-Y");
$restaurante = 'Restaurante';
//conectamos a la base
$host = "localhost"; 
$usuario = "usuario"; 
$clave = "clave";
$bd = "bd01";
$connect=mysql_connect ($host, $usuario, $clave); 
// seleccionamos la base 
mysql_select_db ( $bd, $connect ); 

// definimos la consulta
$query = 	"INSERT INTO encuesta (id,pregunta1,pregunta2,pregunta3,pregunta4,pregunta5,comentario,fecha,restaurante)
			VALUES ('',$respuesta1','$respuesta2','$respuesta3','$respuesta4','$respuesta5','$comentario','$fecha','$restaurante')";
// hacemos la consulta
mysql_query ($query, $connect) or die (mysql_error());
?>

A ver en que he fallado jeje

Gracias =)
 

vicram10

Épsilon
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
8 May 2013
Mensajes
751
Edad
39
el campo respuesta que valor tiene?, el tipo hidden no puedes cargarlo por tanto deberas de llenarlo con algo, y cual es el motivo por el cual lo ocultas?.. si quieres guardar la respuesta deberias de mostrar el input y ahi ellos completan la respuesta..
 

Barakas

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
21 Ago 2013
Mensajes
78
el campo respuesta que valor tiene?, el tipo hidden no puedes cargarlo por tanto deberas de llenarlo con algo, y cual es el motivo por el cual lo ocultas?.. si quieres guardar la respuesta deberias de mostrar el input y ahi ellos completan la respuesta..

Gracias por tu respuesta, te cuento.

La encuesta se dividide en varios archivos (pregunta1.php, pregunta2.php,...pregunta5.php, comentario.php) y cada respuesta se va guardando en el tipo hidden para que se vaya pasando de uno a otro hasta llegar al último que lo envia a enviar.php que es el código php que he pegado arriba.

La idea era poder guardar las respuestas de un archivo a otro para finalmente enviarlo a la base de datos. Los únicos input que se muestran son los de la pregunta actual...por ejemplo: en pregunta3.php se muestra la pregunta 3 pero se ocultan los resultados de pregunta1.php y pregunta2.php para que no se pierdan.

Se que es rebuscado el método y que se hace con sesiones, pero estoy empezando en esto y es lo que tengo más a mano. De todas formas si mi método no se puede por cualquier caso ya tendré que meterle mano a las sesiones.

Saludos!
 

vicram10

Épsilon
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
8 May 2013
Mensajes
751
Edad
39
para pasar cada parte lo haces por get o por post?, de un formulario a otro?..

cuando pasas de un formulario a otro, imprime la respuesta de la anterior pregunta para visualizar que se pasen bien las variables.. sino algo estas haciendo mal..

pon aqui el codigo de tu formulario 1 y el codigo del 2, para ver que estas haciendo y como..
 

Barakas

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
21 Ago 2013
Mensajes
78
He llegado a imprimir las respuesta en el último archivo y han salido todas las variables.

Pego el código de pregunta1.php:

Insertar CODE, HTML o PHP:
            <form id="form1" name="form1" method="post" action="pregunta2.php">
                <label for="select"></label>
                <input type="submit" name="respuesta1" value="Bueno" />
            
                <input type="submit" name="respuesta1" value="Regular" />
             
                <input type="submit" name="respuesta1" value="Malo" />
              </p>
            </form>

pregunta2.php:

Insertar CODE, HTML o PHP:
<?php
$respuesta1 = $_POST['respuesta1'];
?>
            <form id="form1" name="form1" method="post" action="pregunta3.php">
                <label for="select"></label>
                <input type="submit" name="respuesta2" value="Bueno" />
            
                <input type="submit" name="respuesta2" value="Regular" />
             
                <input type="submit" name="respuesta2" value="Malo" />
                
                <input type="hidden" name="respuesta1" value="<?php echo $respuesta1; ?>" />
           
            </form>

Pongo pregunta3.php también:

Insertar CODE, HTML o PHP:
<?php
$respuesta1 = $_POST['respuesta1'];
$respuesta2 = $_POST['respuesta2'];
?>
            <form id="form1" name="form1" method="post" action="pregunta4.php">
                <label for="select"></label>
                <input type="submit" name="respuesta3" value="Bueno" />
            
                <input type="submit" name="respuesta3" value="Regular" />
             
                <input type="submit" name="respuesta3" value="Malo" />
                
                <input type="hidden" name="respuesta1" value="<?php echo $respuesta1; ?>" />
                <input type="hidden" name="respuesta2" value="<?php echo $respuesta2; ?>" />
           
            </form>

Y como decía antes, se imprime todo en la última página, el problema da cuando ya se mete en la base de datos. He intentado utilizar otra sintaxis para conectar con la bd de un tutorial que encontré, pero me da el mismo error :nonchalance:
 
Última edición:

vicram10

Épsilon
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
8 May 2013
Mensajes
751
Edad
39
puedes colocar una captura o imagen del error que te da?
 

Barakas

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
21 Ago 2013
Mensajes
78
Acabo de encontrar el error!!

Era una comilla simple de enviar.php

$query = "INSERT INTO encuesta (id,pregunta1,pregunta2,pregunta3,pregunta4,pregunta5,comentario,fecha,restaurante)
VALUES ('',$respuesta1','$respuesta2','$respuesta3','$respuesta4','$respuesta5','$comentario','$fecha','$restaurante')";

El problema que tengo es que me registra la fecha a 0 ¿Qué podría ser?


EDIT: Solucionado de nuevo al cambiar el formato de datetime a varchat en la base de datos!!
 
Última edición:

vicram10

Épsilon
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
8 May 2013
Mensajes
751
Edad
39
perfecto, que suerte lo encontraste, seria mejor que guardes en "int" la fecha..

para ello solo debes hacer asi

PHP:
$fecha = time();

y al visualizar conviertes la fecha a el formato que quieras ver.. es una opcion, pero si te funciona como esta, lo dejas asi simplemente ;)
 
Arriba