Foros del Web » Programando para Internet » PHP »

No me permite grabar las preguntas provenientes de un formulario

Estas en el tema de No me permite grabar las preguntas provenientes de un formulario en el foro de PHP en Foros del Web. Hola a todos .... Estoy haciendo unas encuestas para la cual tengo dos tablas, encuestas y respuestas. y tengo el primer formulario ************************ encuesta1.php ************************ ...
  #1 (permalink)  
Antiguo 07/12/2004, 16:28
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
No me permite grabar las preguntas provenientes de un formulario

Hola a todos ....
Estoy haciendo unas encuestas para la cual tengo dos tablas, encuestas y respuestas.
y tengo el primer formulario
************************
encuesta1.php
************************
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
<form name="form1" method="post" action="encuesta2.php">
<p>Titulo de la encuesta:
<input type="text" name="titulo">
</p>
<p>N&uacute;mero de respuestas:
<input type="text" name="respuestas">
</p>
<p>
<input type="submit" name="Submit" value="Enviar">
</p>
</form>
</body>
</html>
***********************************
encuesta2.php
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<form action="encuesta3.php" method="post">
<table border="0">
<?php
$titulo=$_POST["titulo"];
$respuestas=$_POST["respuestas"];
for($i=1;$i<=$respuestas;$i++){
?>
<tr>
<td>respuesta <?php echo $i; ?></td>
<td><input name="p<?php echo $i;?>" type="text" size="50" maxlength="50"></td>
</tr>
<?php } ?>
</table>

<input name="titulo" type="hidden" value="<?php echo $titulo;?>">
<input name="respuestas" type="hidden" value="<?php echo $respuestas;?>">
<input type="submit" name="Submit" value="Enviar"></p>
</form>
</body>
</html>
*************************
encuesta3.php
*************************
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?php

include ("configuracion.php");
$fecha = time();
$titulo=$_POST["titulo"];
$respuestas=$_POST["respuestas"];
//Insertamosla nueva encuesta
$sql = "INSERT INTO encuestas (titulo, fecha) VALUES ('$titulo', '$fecha') ";
$sql = mysql_query($sql);

//Ahora obtenemos el ID de la encuesta que acabamos de insertar
$sql = "SELECT id FROM encuestas ORDER BY fecha DESC LIMIT 0,1";
$sql = mysql_query($sql);
while($row = mysql_fetch_array($sql)){
$id=$row["id"];
}
//Recorremos todas las preguntas
for($i=1; $i<=$respuestas; $i++){
//Obtenemos el texto de la pregunta
$preg = p.$i;
$texto = $preg;

//Y lo insertamos
$sql = "INSERT INTO respuestas(texto, votos, idenc) VALUES ('$texto' , 0, $id)";
$sql = mysql_query($sql);
}
?>
<div align="center"><strong>Registro Exitoso e insertada!! </strong> </div>

</body>
</html>

El problema es que cuando quiero grabar las respuestas de la encuesta me lo graba como p1,p2,p3..... etc, como haria para recoger las preguntas proveniente del formulario de encuesta2.php

Por ejemplo pongo como encuesta(encuesta1.php):
Titulo = "Que lenguaje de programacion usas com frecuencia"
Respuestas = 5

En el Formulario encuesta2.php escribo

Resp. 1 = PHP
Resp. 2 = ASP
Resp. 3 = C++
Resp. 4 = Delphi
Resp. 5 = Pascal

En encuesta3.php

El nombre de la encuesta me lo graba muy bien pero las Resp 1 a la Resp 5 NO. me parece que no estoy recibiendo los valores de p[i]

Como se pordria hacer esto.

Gracias y suerte para todos.
  #2 (permalink)  
Antiguo 07/12/2004, 17:17
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
los nombre de radio tiene que ser iguales, y el valor que guardas es el de la opcion
por ejemplo el radio:
.nombre : p
.valor : 1 ,2,3,4 o 5

cuando recibis el form $_POST['p'] tiene el numero de la opcion.

espero haber ayudado.

Última edición por Nefertiter; 07/12/2004 a las 17:20
  #3 (permalink)  
Antiguo 07/12/2004, 17:58
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Cita:
El nombre de la encuesta me lo graba muy bien pero las Resp 1 a la Resp 5 NO. me parece que no estoy recibiendo los valores de p[i]
Pues casi te das la respuesta a ti mismo... lo mejor es, en lugar de generar variables p1, p2... generar un array p que tenga las posiciones p[1], p[2]... etc...
En encuesta2.php
Código PHP:
<?php
$titulo
=$_POST["titulo"];
$respuestas=$_POST["respuestas"];
for(
$i=1;$i<=$respuestas;$i++){
?>
<tr>
<td>respuesta <?php echo $i?></td>
<td><input name="p[]" type="text" size="50" maxlength="50"></td>
</tr>
<?php ?>
En encuesta3.php
Código PHP:
//Recorremos todas las preguntas
foreach($_POST['p'] as $resp){
//Obtenemos el texto de la pregunta
//Y lo insertamos
$sql "INSERT INTO respuestas(texto, votos, idenc) VALUES ('$resp' , 0, $id)";
$sql mysql_query($sql);
?> 
Saludos
  #4 (permalink)  
Antiguo 08/12/2004, 03:11
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Gracias amigo sabia que era mucho mejor con array, pero siempre estos array me causan problemas..Donde podia encontrar un tutorial de manejo de arreglos.

Gracias y me sirvio bastante.
  #5 (permalink)  
Antiguo 08/12/2004, 18:03
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
En el manual tienes todo un set de funciones para trabajar con arrays
http://www.php.net/array

También te dejo otro enlace:
http://www.rinconastur.com/php/php24.php

Saludos
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:47.