Foros del Web » Programando para Internet » PHP »

Como insertar varios datos en la BD

Estas en el tema de Como insertar varios datos en la BD en el foro de PHP en Foros del Web. Hola, les comento el inconveniente que tengo, no se como hacerlo. Quiero hacer un form en donde se ponen destinos y origenes. En la base ...
  #1 (permalink)  
Antiguo 24/01/2006, 14:43
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 12 años, 1 mes
Puntos: 1
Como insertar varios datos en la BD

Hola, les comento el inconveniente que tengo, no se como hacerlo. Quiero hacer un form en donde se ponen destinos y origenes. En la base de datos hay una tabla que contiene el campo origen y destino... bien.
lo que yo quiero hacer es un form, que tenga 5 campos para rellenar con destinos y otros 5 con origenes, osea, seria insertar varios registros en una sola vez; pero no se como hacerlo.... si con arrays o no se me ocurre como.

Alguien me podria dar algun ejemplito asi me guio un poco mas?

Desde ya muchas gracias!
  #2 (permalink)  
Antiguo 24/01/2006, 15:38
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 11 años, 11 meses
Puntos: 0
ok, chekea esta URL

http://www.ametrade.com/eng/controls/request_quotes.php

y dime si es algo asi, OJO no envies el formulario ya que es la web de la empresa, pero esos son campos dinamicos y se insertan en la base de datos. si es eso te paso el code de los campos dinamicos y como los inserta en la BD saludos.
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #3 (permalink)  
Antiguo 24/01/2006, 15:43
 
Fecha de Ingreso: diciembre-2005
Mensajes: 122
Antigüedad: 12 años
Puntos: 0
nacho, no se me ocurre un ejemplo para darte pero lo que te puedo darte es una posible solución: cuando estes creando el form inserta en la propiedad name de los inputs algo como "destino[]". por ejemplo:

<input type="text" name="destino[]" />
<input type="text" name="destino[]" />
...

y así con todos los destinos. de la misma manera con los origenes:

<input type="text" name="origenes[]" />
<input type="text" name="origenes[]" />
...

cuando envies los datos (digamos por POST) tendras los datos en $_POST['destinos'] y $_POST['origenes'] respectivamente. estos 2 datos son en realidad arrays. desde aqui hacemos:

Código:
for ( $i = 0; $i < 5; $i++ )
{
       $result = mysql_query ( "INSERT INTO tabla VALUES ( .... );
}
insertando en cada pasada los datos $_POST['origen'][$i] y $_POST['destino'][$i]. espero te sea util.
  #4 (permalink)  
Antiguo 24/01/2006, 15:46
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 12 años, 1 mes
Puntos: 1
si carlos, seria algo asi como la aprte de ese form!
  #5 (permalink)  
Antiguo 24/01/2006, 15:50
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 12 años, 1 mes
Puntos: 1
plus, yo estaba pensando en hacer algo asi:

Código PHP:
$destino[0]= $_POST[idestino1];
$destino[1]= $_POST[idestino2];
$destino[2]= $_POST[idestino3];
$destino[3]= $_POST[idestino4];
$destino[4]= $_POST[idestino5];


for (
$r=0$r<5$r++){
mysql_query ("INSERT $tabla_aereos (destino)
VALUES ('$destino[r]')"
,$conexion);



pero no me funciona. Si uso While?
  #6 (permalink)  
Antiguo 24/01/2006, 15:57
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 11 años, 11 meses
Puntos: 0
Codigo que genera los campos dinamicos
Código HTML:
 <script type="text/javascript">
			<!--
			var i=0;
			function agregar(src)
			{
			i++
			
			src.innerHTML+='<tr>&nbsp;<input name="qcant'+i+'" type="text"   id="qcant'+i+'" value="" size="10" />&nbsp;&nbsp;&nbsp;&nbsp;<input name="qdescrip'+i+'" type="text"   id="qdescrip" value="" size="20" /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="qpart'+i+'" type="text"   id="qpart'+i+'" value="" size="10" />&nbsp;&nbsp;&nbsp; &nbsp;<input name="qfab'+i+'" type="text"   id="qfab" value="" size="15" /></tr><br><input type="hidden" name="item" value="'+i+'">';
			
			}
			var it = i;
			//-->
			            </script>
                                <div align="left" id="generado"></div>
                              <p><a href="#" onClick="agregar(document.getElementById('generado'));return false;">Add New Line Item </a></p> 
Codigo php que lee los campos dinamicos

Código PHP:
   $productos "=================== PRODUCTO 1  ===================\n " .    
            
"Quantity:            " $_POST[qcant]. "\n" .
            
"Description:        " $_POST[qdescrip]. "\n" .
            
"Part Number:        " $_POST[qpart]. "\n" 
            
"Manufacturer:        " $_POST[qfab]. "\n";
       
       for (
$a=;$a<=$_POST["item"];$a++){
         
$pqcant "qcant".$a;
          
$pqdescrip "qdescrip".$a;
          
$pqpart "qpart".$a;
          
$pqfab "qfab".$a;
          
$b $a 1;
        
       
$productos .= "=================== PRODUCTO ".$b."  ===================\n " .    
            
"Quantity:            " $_POST[$pqcant]. "\n" .
            
"Description:        " $_POST[$pqdescrip]. "\n" .
            
"Part Number:        " $_POST[$pqpart]. "\n" 
            
"Manufacturer:        " $_POST[$pqfab]. "\n";
        } 
ahora tienes que hacer un ciclo que te inyecte en la base de datos tantas veces esten generados los campos dinamicos, solamente tienes que hacer el for para inyectar y en tu base de datos tienes que hacer una relacion de datos, ejemplo, como yo, id_cliente es por ejemplo 1 entonces en la tabla productos_generales relaciono X cantidad de campos dinamicos con el ID_CLIENTE.

solo adpta el html que genera el dinamico por lo que deseas generar tu editanto estas lineas

Código HTML:
src.innerHTML+='<tr>&nbsp;<input name="qcant'+i+'" type="text"   id="qcant'+i+'" value="" size="10" />&nbsp;&nbsp;&nbsp;&nbsp;<input name="qdescrip'+i+'" type="text"   id="qdescrip" value="" size="20" /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="qpart'+i+'" type="text"   id="qpart'+i+'" value="" size="10" />&nbsp;&nbsp;&nbsp; &nbsp;<input name="qfab'+i+'" type="text"   id="qfab" value="" size="15" /></tr><br><input type="hidden" name="item" value="'+i+'">';
todo lo que esta despues de +=' es lo que se genera dinamico

SUERTE
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #7 (permalink)  
Antiguo 24/01/2006, 17:35
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 12 años, 1 mes
Puntos: 1
Carlos, muchisimas gracias por tu ayuda!
Muy buen codigo, me va a servir para otro tema que tengo que hacer . Y conr especto al tema del thread, ya lo solucione! lo hice de una manera sencilla, igual como lo habia mostrado antes pero tenia el error de que destino[$r] no le habia puesto el $.

Por si alguien quiere ver lo que hice para probar que ande, es esto:

Código PHP:
$destino[0]= $_POST[idestino1];
$destino[1]= $_POST[idestino2];
$destino[2]= $_POST[idestino3];
$destino[3]= $_POST[idestino4];
$destino[4]= $_POST[idestino5];



for (
$i=0$i<5$i++){
mysql_query ("INSERT $tabla_aereos (destino)
VALUES ('$destino[$i]')"
,$conexion);

Primero tomo los valores de los campos del form, luego, paso cada valor a un array. Despues hice un bucle para que los datos se inserten, empezando por el array con indice 0 y cuando guardo ese registro, suma 1 al valor del array hasta llegar a 4 que es el maximo de los indices de array.

Muchas gracias por su ayuda amigos!
  #8 (permalink)  
Antiguo 24/01/2006, 19:34
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 12 años, 1 mes
Puntos: 1
bueno, estoy con un nuevo inconveniente, ya logre que se guarden los registros en una sola accion, pero ahora tengo el problema de que si dejo espacios vacios me rellena la BD con espacios vacios; por ahi si no se usan los 5 campos y use 3 para rellenar informacion, a la base de datos se van a agregar dos registros vacios. Como puedo evitar esto?

El codigo usado es este:

Código PHP:
$idestino[0]= $_POST[idestino1];
$idestino[1]= $_POST[idestino2];
$idestino[2]= $_POST[idestino3];
$idestino[3]= $_POST[idestino4];
$idestino[4]= $_POST[idestino5];

$iorigen[0]= $_POST[iorigen1];           $iorigen2[0]= $_POST[iorigen21];        
$iorigen[1]= $_POST[iorigen2];           $iorigen2[1]= $_POST[iorigen22];
$iorigen[2]= $_POST[iorigen3];           $iorigen2[2]= $_POST[iorigen23];       
$iorigen[3]= $_POST[iorigen4];           $iorigen2[3]= $_POST[iorigen24];             
$iorigen[4]= $_POST[iorigen5];           $iorigen2[4]= $_POST[iorigen25];


$ndestino[0]= $_POST[ndestino1];           $norigen2[0]= $_POST[norigen1];        
$ndestino[1]= $_POST[ndestino2];           $norigen2[1]= $_POST[norigen2];
$ndestino[2]= $_POST[ndestino3];           $norigen2[2]= $_POST[norigen3];       
$ndestino[3]= $_POST[ndestino4];           $norigen2[3]= $_POST[norigen4];             
$ndestino[4]= $_POST[ndestino5];           $norigen2[4]= $_POST[norigen5];              



for (
$i=0$i<5$i++){
mysql_query ("INSERT $tabla_aereos (destino, origen, origen2, tipo)
VALUES ('$idestino[$i]', '$iorigen[$i]', '$iorigen2[$i]', 'internacional')"
,$conexion);
}

for (
$i=0$i<5$i++){
mysql_query ("INSERT $tabla_aereos (destino, origen, tipo)
VALUES ('$ndestino[$i]', '$norigen[$i]', 'nacional')"
,$conexion);

es para la pagina de una empresa de turismo, es el outlet de aereos nacionales e internacionales...

Gracias!
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 21:35.