Foros del Web » Programando para Internet » PHP »

Cargar multiples registros a la misma tabla

Estas en el tema de Cargar multiples registros a la misma tabla en el foro de PHP en Foros del Web. Hola como estan amigos? La pregunta es simple, no se la respuesta, ja! Tengo una tabla con 4 campos en la cual yo una vez ...
  #1 (permalink)  
Antiguo 20/04/2011, 05:45
 
Fecha de Ingreso: agosto-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 2
Cargar multiples registros a la misma tabla

Hola como estan amigos?
La pregunta es simple, no se la respuesta, ja!

Tengo una tabla con 4 campos en la cual yo una vez por mes cargo 31 indices, los cuales voy a utilizar para el calculo de intereses.

La tabla tiene la siguiente estructura:

1-indice_id(autoincremental)
2-indice_fecha (date) - not null
3-indice_valor(decimal 10,8) - not null
4-indice_detalle (varchar 40)

Yo tenia un formulario donde iba cargando un indice por vez, o sea que repetia el mismo proceso 30 veces mas, por lo que se me ocurrio que se podrian cargar todos juntos, en un formulario con 31 campos para las fechas y 31 campos para los valores de los indices (campos indice_fecha e indice_valor respectivamente)...
y ... al presionar un boton almacenar 31 registros en la bd....

Se podria hacer eso? o tengo que hacerlo uno por uno? se puede con php y mysql?

Espero que puedan darme una mano... saludos!
  #2 (permalink)  
Antiguo 20/04/2011, 06:13
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Cargar multiples registros a la misma tabla

No entendí lo que quieres hacer. ¿Podrías mejor indicar el resultado de lo que quieres ver?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 20/04/2011, 06:24
 
Fecha de Ingreso: agosto-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Cargar multiples registros a la misma tabla

Cita:
Iniciado por abimaelrc Ver Mensaje
No entendí lo que quieres hacer. ¿Podrías mejor indicar el resultado de lo que quieres ver?
Claro, suponte que yo tengo en la tabla los siguientes datos ya cargados:

1 - 2011-02-06 - 35.96736750 - observacion 1
2 - 2011-02-07 - 35.98062590 - observacion 1
3 - 2011-02-08 - 35.99388920 - observacion 1
5 - 2011-02-09 - 36.00715730 - observacion 1
6 - 2011-02-10 - 36.02043040 - observacion 1

y yo tengo que cargar una vez al mes, 30 registros como esos que puse antes, y para no hacer uno por uno, quiero cargar en un formulario los 30 y al poner guardar que se carguen todos juntos.... se entendio ahora?
  #4 (permalink)  
Antiguo 20/04/2011, 06:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Cargar multiples registros a la misma tabla

Puedes hacerlo usando array en los nombres de los campos.
Código HTML:
Ver original
  1. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  2. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  3. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  4. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  5. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  6. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  7. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  8. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  9. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  10. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  11. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  12. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  13. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  14. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  15. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  16. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  17. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  18. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" /><br />
  19. <input type="text" name="foo[]" /> <input type="text" name="bar[]" /> <input type="text" name="candy[]" />
Luego para leerlo puedes hacer algo así
Código PHP:
Ver original
  1. <?php
  2. if(count($_POST['foo']) == count($_POST['bar']) && count($_POST['foo']) == count($_POST['candy'])){
  3.     for($i=0; $i<count($_POST['foo']); $i++){
  4.         echo 'foo: ' . $_POST['foo'][$i]
  5.              . ' bar: ' . 'bar: ' . $_POST['bar'][$i]
  6.              . 'candy: ' . $_POST['candy'][$i]
  7.              . '<br />';
  8.     }
  9. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 20/04/2011, 07:14
 
Fecha de Ingreso: agosto-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Cargar multiples registros a la misma tabla

Gracias amigo abimaelrc por tomarte la molestia de responder, pero la idea es trabajar con bases de datos, para dejar registro de todo.

Saludos
  #6 (permalink)  
Antiguo 20/04/2011, 07:15
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Cargar multiples registros a la misma tabla

Pues me perdí de nuevo, es que no entiendo la parte de que quieres cargar 30 registros de una sola vez, ¿tu quieres hacer un select que te muestre los 30 registros o es qu tienes 30 tablas diferentes con 30 columnas y quieres hacerlo en una sola petición, o es otra cosa?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 20/04/2011, 07:20
 
Fecha de Ingreso: agosto-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Cargar multiples registros a la misma tabla

Cita:
Iniciado por abimaelrc Ver Mensaje
Pues me perdí de nuevo, es que no entiendo la parte de que quieres cargar 30 registros de una sola vez, ¿tu quieres hacer un select que te muestre los 30 registros o es qu tienes 30 tablas diferentes con 30 columnas y quieres hacerlo en una sola petición, o es otra cosa?
Ja, no amigo... quizas es muy sencillo de explicar y yo doy vueltas.
  1. Tengo solo UNA tabla llamada indices.
  2. Dicha tabla tiene CUATRO campos (indice_id, indice_fecha, indice_valor, indice_obs)
  3. Una vez por mes tengo que cargar TREINTA registros y yo lo que quiero es que para no dar de alta de a un registro por vez, tener un formulario que me permita cargar los 30 registros de una sola vez, se entiende ahora?

Algo asi como un modulo de ABM pero en vez de dar de alta de aun registro por vez quiero dar de alta registros de a lotes, se entendio mejor?

Saludos y gracias por interesarte.
  #8 (permalink)  
Antiguo 20/04/2011, 07:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Cargar multiples registros a la misma tabla

Si pero el ejemplo que te coloqué es para que vieras como implemantarlo, solo tienes que crear la conexión y añadir en el for el insert.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 20/04/2011, 08:26
 
Fecha de Ingreso: agosto-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Cargar multiples registros a la misma tabla

Gracias amigo, vere como lo implemento, mientras tanto seguire buscando alguna respuesta que me pueda echar otra mano, un abrazo!
  #10 (permalink)  
Antiguo 20/04/2011, 12:20
 
Fecha de Ingreso: agosto-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Cargar multiples registros a la misma tabla

A ver, lo he logrado de la siguiente manera... pero a mi parecer se sobrecarga demasiado el servidor... quiero ver que opinan....

Código PHP:
Ver original
  1. $editFormAction = $_SERVER['PHP_SELF'];
  2. if (isset($_SERVER['QUERY_STRING'])) {
  3.   $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  4. }
  5.  
  6. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  7.   $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",
  8.                        GetSQLValueString($_POST['textfield'], "date"), GetSQLValueString($_POST['textfield31'], "double"));
  9.                        mysql_select_db($database_conexion, $conexion);
  10.                        $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
  11.   $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",                     
  12.                        GetSQLValueString($_POST['textfield2'], "date"), GetSQLValueString($_POST['textfield32'], "double"));
  13.  $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",
  14.                        GetSQLValueString($_POST['textfield3'], "date"), GetSQLValueString($_POST['textfield33'], "double"));
  15.                        mysql_select_db($database_conexion, $conexion);
  16.                        $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
  17.   $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",  
  18.                        GetSQLValueString($_POST['textfield4'], "date"), GetSQLValueString($_POST['textfield34'], "double"));
  19.                        mysql_select_db($database_conexion, $conexion);
  20.                        $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
  21.   $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",  
  22.                        GetSQLValueString($_POST['textfield5'], "date"), GetSQLValueString($_POST['textfield35'], "double"));
  23.                        mysql_select_db($database_conexion, $conexion);
  24.                        $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
  25.   $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",  
  26.                        GetSQLValueString($_POST['textfield6'], "date"), GetSQLValueString($_POST['textfield36'], "double"));                                                                               
  27.                        mysql_select_db($database_conexion, $conexion);
  28.                        $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
  29.   $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",  
  30.                        GetSQLValueString($_POST['textfield7'], "date"), GetSQLValueString($_POST['textfield37'], "double"));
  31.                        mysql_select_db($database_conexion, $conexion);
  32.                        $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
  33.   $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",  
  34.                        GetSQLValueString($_POST['textfield8'], "date"), GetSQLValueString($_POST['textfield38'], "double"));
  35.                        mysql_select_db($database_conexion, $conexion);
  36.                        $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
  37.   $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",  
  38.                        GetSQLValueString($_POST['textfield9'], "date"), GetSQLValueString($_POST['textfield39'], "double"));
  39.                        mysql_select_db($database_conexion, $conexion);
  40.                        $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
  41.   $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",  
  42.                        GetSQLValueString($_POST['textfield10'], "date"), GetSQLValueString($_POST['textfield40'], "double"));
  43.                        mysql_select_db($database_conexion, $conexion);
  44.                        $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
  45.   $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",  
  46.                        GetSQLValueString($_POST['textfield11'], "date"), GetSQLValueString($_POST['textfield41'], "double"));
  47.                        mysql_select_db($database_conexion, $conexion);
  48.                        $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
  49.   $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",  
  50.                        GetSQLValueString($_POST['textfield12'], "date"), GetSQLValueString($_POST['textfield42'], "double"));
  51.                        mysql_select_db($database_conexion, $conexion);
  52.                        $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
  53.   $insertSQL = sprintf("INSERT INTO indices (indice_fecha, indice_valor) VALUES (%s, %s)",  
  54.                        GetSQLValueString($_POST['textfield13'], "date"), GetSQLValueString($_POST['textfield43'], "double"));                                                                                                                          
  55.                        mysql_select_db($database_conexion, $conexion);
  56.                        $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());


No se sobrecarga demasiado el server?
  #11 (permalink)  
Antiguo 20/04/2011, 12:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Cargar multiples registros a la misma tabla

Pero para eso corre eso mismo en un bucle
Código PHP:
Ver original
  1. foreach($_POST as $value){
  2.     $inser.......... GetSQLValueString($value, 'double').....
  3. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 20/04/2011, 13:02
 
Fecha de Ingreso: agosto-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Cargar multiples registros a la misma tabla

Cita:
Iniciado por abimaelrc Ver Mensaje
Pero para eso corre eso mismo en un bucle
Código PHP:
Ver original
  1. foreach($_POST as $value){
  2.     $inser.......... GetSQLValueString($value, 'double').....
  3. }
Claro amigo, justamente eso es lo que preciso yo, ahora si hablamos el mismo idioma... me das una mano para como tendria que hacerlo? Como veras, tengo un formulario con 31 edits para el campo indice_fecha y 31 para indice_valor...
  #13 (permalink)  
Antiguo 20/04/2011, 13:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Cargar multiples registros a la misma tabla

Así mismo como te coloqué, trátalo para que veas que funciona.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #14 (permalink)  
Antiguo 20/04/2011, 15:16
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Cargar multiples registros a la misma tabla

Disculpa, ¿puedes enseñar el formulario?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #15 (permalink)  
Antiguo 21/04/2011, 14:45
 
Fecha de Ingreso: agosto-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Cargar multiples registros a la misma tabla

Cita:
Iniciado por abimaelrc Ver Mensaje
Disculpa, ¿puedes enseñar el formulario?
Si, claro amigo, me dices como tengo que hacer para subir una imagen.... porque me pide url... tengo que subir previamente la imagen a algun servidor de imagenes?
  #16 (permalink)  
Antiguo 21/04/2011, 16:25
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Cargar multiples registros a la misma tabla

En el área de aportes hay temas que te pueden ayudar como subir imagenes en PHP o en el wiki de este foro.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #17 (permalink)  
Antiguo 21/04/2011, 17:50
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Respuesta: Cargar multiples registros a la misma tabla

Prueba con esto, pero antes al primer textfield ponle de nombre textfield1
y pon el numero correcto en $i<=12 cambiando 12 por el oportuno.
Código PHP:
Ver original
  1. mysql_select_db($database_conexion, $conexion);
  2. for($i=1; $i<=12;$i++){
  3.   $b = $i+30;
  4.    $fecha = "textfield".$i;
  5.    $valor =  "textfield".$b;
  6.    $fechaL= $_POST[$fecha];
  7.    $valorL = $_POST[$valor];
  8.     $insertSQL= mysql_query("INSERT INTO indices (indice_fecha, indice_valor) VALUES('$fechaL', '$valorL')")or die(mysql_error());
  9. }
  10. mysql_close($conexion);
  #18 (permalink)  
Antiguo 22/04/2011, 07:20
 
Fecha de Ingreso: agosto-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Cargar multiples registros a la misma tabla

Cita:
Iniciado por abimaelrc Ver Mensaje
En el área de aportes hay temas que te pueden ayudar como subir imagenes en PHP o en el wiki de este foro.
Gracias abimaelrc, ahora no tengo a mano el formulario porque estoy en mi casa, pero cuando vaya al trabajo podre hacer una captura y subirlo, ya vere por "aportes" como tu dices para saber como subir una imagen....

Esnola, buenisimo lo que aportas, creo que es lo que mas se asemeja de lo que estaba buscando... de todas maneras como tampoco puedo probar ahora lo quiero ir comprendiendo de a poco... y quiero que me digas bien cual es el sentido de la variable "$b"... por que dice $b = $i+30?....

En cuanto a $i la idea es ponerlo en el bucle for para que complete 30 registros de la siguiente manera, dime si estoy en lo cierto...

Código PHP:
for($i=1$i<=30;$i++){ 
... ahora que me puse a mirarlo con detencion el valor de $b es para almacenar el valor en el textfield[i+30] ???


Muchas gracias, creo que este codigo ira de pelos...
  #19 (permalink)  
Antiguo 22/04/2011, 07:36
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Respuesta: Cargar multiples registros a la misma tabla

El $b=$i+30 lo saco de
GetSQLValueString($_POST['textfield2'], "date"), GetSQLValueString($_POST['textfield32']
la relación en la misma consulta es una diferencia de 30 en el nombre del textfield,
por lo tanto si al primero le asigno el valor de $i , en ese momento el segundo tiene que ser $i+30.

La idea del bucle la tienes bien siempre que se ajuste a:

textfield1...............textfield31
textfield2...............textfield32
.......................
......................
.........................
........................
.......................

textfield30...............textfield60


Saludos
  #20 (permalink)  
Antiguo 22/04/2011, 09:50
 
Fecha de Ingreso: agosto-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Cargar multiples registros a la misma tabla

Cita:
Iniciado por ESNOLA Ver Mensaje
El $b=$i+30 lo saco de
GetSQLValueString($_POST['textfield2'], "date"), GetSQLValueString($_POST['textfield32']
la relación en la misma consulta es una diferencia de 30 en el nombre del textfield,
por lo tanto si al primero le asigno el valor de $i , en ese momento el segundo tiene que ser $i+30.

La idea del bucle la tienes bien siempre que se ajuste a:

textfield1...............textfield31
textfield2...............textfield32
.......................
......................
.........................
........................
.......................

textfield30...............textfield60


Saludos


Si, genial, es eso mismo lo que yo estaba interpretando de tu ayuda... lo pondre en practica y te dire como fue amigo! Muchisimas gracias!

Etiquetas: inserción, múltiple
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 10:18.