Foros del Web » Programando para Internet » PHP »

introduccion informacion en varias tablas a la vez

Estas en el tema de introduccion informacion en varias tablas a la vez en el foro de PHP en Foros del Web. Soy un poco nuevo en este mundillo, os expongo lo que necesito realizar; Al registrar un nombre, tengo que introducir varias fechas con la id ...
  #1 (permalink)  
Antiguo 18/12/2012, 15:09
 
Fecha de Ingreso: noviembre-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
introduccion informacion en varias tablas a la vez

Soy un poco nuevo en este mundillo, os expongo lo que necesito realizar;

Al registrar un nombre, tengo que introducir varias fechas con la id del nombre. He creído que la mejor opción es realizar dos tablas distintas, la primera para el registro de: nombre y otros datos repetitivos, y una segunda tabla con el contenido de las fechas pero con el identificador de la primera tabla.

Según se especifica un número, a lo que llamé sesiones, el código devuelve ciertos campos. Mi problema es que no como se puede realizar la inserción de:
1º los datos de registro de nombre en una primera tabla
2º utilizar el id para insertarlo en la segunda tabla llamada fechas.
3º cada una de las fechas tendría una identificación única para poder recuperarla después.

el código php toma el número de sesiones en $sesiones, no se si es la mejor forma para hacerlo:
Código PHP:
<?php
$sesiones 
$_POST['sesiones'];
    if (
$sesiones <= 1) {
        echo 
"No es posible realizar menos de 2 sesiones";
    } else {
    echo 
"<p>Numero de sesiones $sesiones.</p>";
    echo 
"<p>Introduzca los días a realizar</p>";
    }
    for( 
$i=1$i <= $sesiones $i++) {
        echo 
"
        <form id=\"fecha_tabla2\" name=\"fecha_sesion\" method=\"post\" action=\"\">
        <label>$i Sesión:</label>
        <input name=\"sesiones\" type=\"text\" />
        </form>"
;
    }
?>
He visto este código en otro post para introducir varios datos, está sin modificar, porque creo que para poder dar la id de la tabla nombre se tendría que registrar una primera vez, o ¿se puede introducir en las dos tablas a la vez?

Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
    for (
$x=$primer_dato; $<=$ultimo_dato$x++) {
      
$insertSQL sprintf("INSERT INTO servicio_suministro (id_cita, codigo, descripcion, valor) VALUES (codigo, descripcion, valor),
    GetSQLValueString($_POST['id_cita'.$x.''], "
INT"));
    GetSQLValueString($_POST['codigo'.$x.''], "
INT"));
    GetSQLValueString($_POST['descripcion'.$x.''], "
INT"));
    GetSQLValueString($_POST['valor'.$x.''], "
INT"));
     
    mysql_select_db($database, $conexion);
     $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
    }
    } 
  #2 (permalink)  
Antiguo 18/12/2012, 20:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 6 meses
Puntos: 839
Respuesta: introduccion informacion en varias tablas a la vez

Bienvenido al foro.

Si te entendí bien lo que necesitas es insertar un dato (una consulta INSERT normal), luego, recuperar el id insertado (lo puedes hacer con mysqli_insert_id, por ejemplo, si es la extensión que utilizas) y realizar una nueva consulta INSERT con ese dato.

El problema del código que muestras al principio es que estás imprimiendo varios formularios, solo uno de ellos se enviará al servidor; si tu idea es que se envíen todos los datos deberás colocar los campos en un único formulario y tenerlos como arrays.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 19/12/2012, 06:54
 
Fecha de Ingreso: noviembre-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Respuesta: introduccion informacion en varias tablas a la vez

Muchas gracias por contestarme, la inserción en la segunda tabla la hace estupendamente con mysql_insert_id(), he usado dreamweaver para que me genere el código de inserción:

Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO tabla_nombre (nombre, sesiones) VALUES (%s, %s)",
                       
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($_POST['sesiones'], "int"));

  
mysql_select_db($database_pruebas$pruebas);
  
$Result1 mysql_query($insertSQL$pruebas) or die(mysql_error());
  
$id mysql_insert_id();
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO tabla_sesion (f_realizacion, id_servicio) VALUES (%s, $id)",
                       
GetSQLValueString($_POST['f_realizacion'], "date"));
  
  
mysql_select_db($database_pruebas$pruebas);
  
$Result1 mysql_query($insertSQL$pruebas) or die(mysql_error());

Ahora me queda hacer el bucle para que introduzca campo por campo, usaré el que había posteado anteriormente.
  #4 (permalink)  
Antiguo 19/12/2012, 08:08
 
Fecha de Ingreso: noviembre-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Respuesta: introduccion informacion en varias tablas a la vez

He podido registrar varias filas con este código:

Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO tabla_nombre (nombre, sesiones) VALUES (%s, %s)",
                       
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($_POST['sesiones_ins'], "int"));

  
mysql_select_db($database_pruebas$pruebas);
  
$Result1 mysql_query($insertSQL$pruebas) or die(mysql_error());
  
$id mysql_insert_id();
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$sesiones $_POST['sesiones_ins'];
  for (
$i=1$i<=$sesiones$i++) {
  
$insertSQL sprintf("INSERT INTO tabla_sesion (f_realizacion, id_servicio) VALUES (%s, $id)",
                       
GetSQLValueString($_POST['f_realizacion'], "date"));

  
mysql_select_db($database_pruebas$pruebas);
  
$Result1 mysql_query($insertSQL$pruebas) or die(mysql_error());
    }

y el formulario:
Código HTML:
<form action="<?php echo $editFormAction; ?><?php echo $editFormAction; ?>" id="form1" name="form1" method="POST">
  <label>Nombre</label>
  <input name="nombre" type="text" /><br/>
  <label>Numero de sesiones:</label>
  <input name="sesiones_ins" type="date"/><br/>
  <label>Fecha de sesion:</label><?php
	for ($i=1; $i <=$sesiones; $i++) {
	echo "	
	<label>Sesion: </label>
	<input name=\"f_realizacion\" type=\"date\" />";
  }
  ?>
  <input type="submit" name="enviar" id="enviar" value="Enviar" />
  <input type="hidden" name="MM_insert" value="form1" />
</form> 
pero al registrarlo todo, tanto en una tabla con en otra, me aparece este error:

Notice: Undefined index: sesiones in \ins_dosregistros.php on line 0

Etiquetas: informacion, introduccion, select, sql, tabla, tablas, vez, campos
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 11:18.