Registrando uma enquete no banco de dados

  • Autor Autor Barakas
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
B

Barakas

Beta
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
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:

Inserir CODE, HTML ou 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 =)
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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..
 
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!
 
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..
 
He llegado a imprimir las respuesta en el último archivo y han salido todas las variables.

Pego el código de pregunta1.php:

Inserir CODE, HTML ou 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:

Inserir CODE, HTML ou 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:

Inserir CODE, HTML ou 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 edição:
puedes colocar una captura o imagen del error que te da?
 
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 edição:
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 😉
 
Voltar
Topo