Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] do while insert

Estas en el tema de do while insert en el foro de PHP en Foros del Web. No sé cómo recoger la información de un select variable para luego poder hacer un insert múltiple en la base de datos. De lo que ...
  #1 (permalink)  
Antiguo 19/09/2013, 11:30
 
Fecha de Ingreso: abril-2013
Mensajes: 6
Antigüedad: 11 años
Puntos: 0
Pregunta do while insert

No sé cómo recoger la información de un select variable para luego poder hacer un insert múltiple en la base de datos. De lo que se trata, es de que hay una tabla que tiene una serie de preguntas, y otra tabla que tiene la posibilidad de respuestas para cada pregunta. Se construye el formulario de forma variable dependiendo del número de preguntas, cada una de ellas con su lista de selecciones posibles. Esto en el formulario funciona bien. Luego en el insert, se graba un registro por cada pregunta con la respuesta que ha sido seleccionada. Si por ejemplo el número de preguntas han sido 20, se deberán de grabar 20 registros con la información de la pregunta y su respuesta, siendo común una serie de campos. El name del select es un número en la variable $p.
¿Podría ayudarme alguien, ya que mi nivel de php es muy bajo?
Gracias.

Este es el código:

<?php require_once('databaseClass.php'); ?>
<?php
session_start();
header("Content-Type: text/html;charset=utf-8");
$db = new DataBase();
include('conexionDB.php');
$hoy = date("Y-m-d H:i:s");

$id1 = $_GET['id1_usuario'];
$id2 = $_GET['id2_secuencia'];
$id3 = $_GET['UE_escala'];

$opcion = 'Añadir';
$currentPage = $_SERVER["PHP_SELF"];
$funcion = substr($currentPage, 8, -7); // _XX.php

// buscar nombre función
$sql = "SELECT * FROM db_ayuda_funcion WHERE id1_funcion = '".$funcion."' AND id2_lengua = '".$_SESSION['lengua']."';";
$consulta = mysqli_query($link, $sql) or die(mysqli_error());
$row_consulta = mysqli_fetch_assoc($consulta);
/* free consulta set */
mysqli_free_result($consulta);

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

$sql = "SELECT * FROM db_escalas_preguntas WHERE id1_escala = '".$id3."' AND ES_estado = 'ACTIVO';";
$consulta = mysqli_query($link, $sql) or die(mysqli_error());
$row_cnt = mysqli_num_rows($consulta);
mysqli_free_result($consulta);

$s = 1;

while($s <= $row_cnt) {

$usuario = $_POST['id1_usuario'];
$secuencia = $_POST['id2_secuencia'];
$escala = $_POST['UE_escala'];


$data = array(
'id1_usuario' => $usuario,
'id2_secuencia' => $secuencia,
'UE_escala' => $escala,
'UE_cod_pregunta' =>
'UE_pregunta' =>
'UE_cod_respuesta' =>
'UE_respuesta' =>
'UE_valor' =>
'UE_fecha_add' => $_POST['UE_fecha_add'],
'UE_estado' => $_POST['UE_estado']
);


$db->insert('db_usuarios_escalas_respuestas', $data);

$s = $s + 1;


}


$goTo = "formreturnP3.php?var=usuario_escala_respuesta_in. php&opc=añadido&id1=$id1&id2=$id2&id3=$id3";

header(sprintf("Location: %s", $goTo));

}


?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="css/estiloform.css">
</head>

<body>

<p>Añadir Respuestas a Usuario</p>

<h5><a href="usuario_escala_respuesta_in.php?id1=<?php echo $id1; ?>&id2=<?php echo $id2; ?>&id3=<?php echo $id3; ?>">Cancelar sin añadir </a></h5>
<form method="post" name="form1">
<table>

<tr>
<td>Usuario:</td>
<td><input type="text" name="id1_usuario" value="<?php echo $id1; ?>" readonly></td>
</tr>
<tr>
<td>Secuencia:</td>
<td><input type="text" name="id2_secuencia" value="<?php echo $id2; ?>" readonly></td>
</tr>
<tr>
<td>Escala:</td>
<td><input type="text" name="UE_escala" value="<?php echo $id3; ?>" readonly>
<?php
$sql = "SELECT * FROM `db_escalas` WHERE id_escala = '".$id3."' AND ES_estado = 'ACTIVO';";
$consulta = mysqli_query($link, $sql) or die(mysqli_error());
while ($row = mysqli_fetch_assoc($consulta))
echo $row['ES_descripcion'];
mysqli_free_result($consulta);
?>
</td>
</tr>
<tr>

<?php

$p = 0;

$sql = "SELECT * FROM `db_escalas_preguntas` WHERE id1_escala = '".$id3."' AND ES_estado = 'ACTIVO';";
$consulta = mysqli_query($link, $sql) or die(mysqli_error());
while ($result = mysqli_fetch_assoc($consulta)) {

$p = $p + 1;

echo "<tr>";
echo "<td>Cod.Pregunta:";
echo $p;
echo $result['id2_cod_pregunta'];
echo $result['ES_pregunta'];

echo "<td><select name=\"$p\">";
$sql = "SELECT * FROM `db_escalas_respuestas` WHERE id1_escala = '".$id3."' AND id2_cod_pregunta = '".$result['id2_cod_pregunta']."' AND ES_estado = 'ACTIVO';";
$consulta2 = mysqli_query($link, $sql) or die(mysqli_error());
while ($row = mysqli_fetch_assoc($consulta2)) {
echo "<option value=\"".$row['id3_cod_respuesta']."\">".$row['id3_cod_respuesta']." - ".$row['ES_respuesta']." valor ".$row['ES_valor']."</option>";
}
echo "</select>";
echo "</td>";
echo "</tr>" . "\n";
}
?>

</tr>
<tr>
<td>Fecha Alta:</td>
<td><?php echo $hoy; ?></td>
</tr>
<tr>
<td>Estado:</td>
<td>
<SELECT NAME="UE_estado" SIZE="1">
<OPTION SELECTED="ACTIVO">ACTIVO</OPTION>
<OPTION VALUE="ACTIVO">ACTIVO</OPTION>
<OPTION VALUE="INACTIVO">INACTIVO</OPTION>
</select>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" value="Añadir registro"></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
<input type="hidden" name="UE_fecha_add" value="<?=$hoy?>"
<input type="hidden" name="UE_fecha_mod" value="0000-00-00 00:00:00">
</form>
</body>
</html>
<?php
mysqli_free_result($consulta);
mysqli_free_result($consulta2);
?>
  #2 (permalink)  
Antiguo 19/09/2013, 13:44
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: do while insert

Hola, debes revisar como crear arrays con HTML y recibirlos en php.

Aca la informacion.

http://www.php.net/manual/es/faq.html.php
http://www.php.net/manual/es/languag...s.external.php

Saludos
  #3 (permalink)  
Antiguo 20/09/2013, 07:15
 
Fecha de Ingreso: abril-2013
Mensajes: 6
Antigüedad: 11 años
Puntos: 0
Respuesta: do while insert

Lo primero darte las gracias, y como siempre es necesario esforzarse para buscar la solución, ya que es el mejor método para el aprendizaje.
No obstante, uno de los aspectos que me ha sido clave, es dónde mirar, y tus enlaces han sido definitivos.
Muchas gracias.

Vicente

Etiquetas: fecha, formulario, html, mysql, registro, select, sql, tabla, usuarios, variable
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 13:44.