Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Como hacer varios insert a la vez?

Estas en el tema de Como hacer varios insert a la vez? en el foro de PHP en Foros del Web. Hola a todos muy buenos días, estoy realizando un sistema web y en un apartado, el usuario final deberá registrar un informe semanal de actividades ...
  #1 (permalink)  
Antiguo 21/08/2014, 10:18
Avatar de Pedromg1  
Fecha de Ingreso: agosto-2014
Ubicación: Tabasco
Mensajes: 12
Antigüedad: 9 años, 8 meses
Puntos: 0
Pregunta Como hacer varios insert a la vez?

Hola a todos muy buenos días, estoy realizando un sistema web y en un apartado, el usuario final deberá registrar un informe semanal de actividades y posteriormente registrarlos a la BD(MySQL), y mi pregunta es, ¿como le hago para guardar todos esos datos pulsando un solo botón? Lo habia echo de la siguiente forma pero tengo que crear 6 variables para poder recibir los valores de las cajas de texto, y pues es mucho codigo, quisiera saber si existe alguna otra forma de hacer lo mismo pero con menos codigo, acontinuacion anexo el codigo PHP en donde hago el insert a mi BD.


<?php
include("config.php");
$c = new Buscador();
$c->Conectar();
setlocale(LC_ALL,'es_ES');
//$usuario = $_POST['usuario'];
$nombreCabo = $_POST['nombre'];
$fecha1 = $_POST['fecha1'];
$problema1 = $_POST['problema1'];
$plantas1 = $_POST['plantas1'];
$producto1 = $_POST['producto1'];
$dosis1 = $_POST['dosis1'];
$cantidad1 = $_POST['cantidad1'];//////tomando los valores de la primera columna
$reporte1 = $_POST['reporte1'];
$vivero1 = $_POST['vivero'];

$nombreCabo = $_POST['nombre'];
$fecha2 = $_POST['fecha2'];
$problema2 = $_POST['problema2'];
$plantas2 = $_POST['plantas2'];
$producto2 = $_POST['producto2'];
$dosis2= $_POST['dosis2'];
$cantidad2 = $_POST['cantidad2'];//////tomando los valores de la primera columna
$reporte2 = $_POST['reporte2'];
$vivero1 = $_POST['vivero'];

$nombreCabo = $_POST['nombre'];
$fecha3 = $_POST['fecha3'];
$problema3 = $_POST['problema3'];
$plantas3 = $_POST['plantas3'];
$producto3 = $_POST['producto3'];
$dosis3 = $_POST['dosis3'];
$cantidad3 = $_POST['cantidad3'];//////tomando los valores de la primera columna
$reporte3 = $_POST['reporte3'];
$vivero1 = $_POST['vivero'];

$nombreCabo = $_POST['nombre'];
$fecha4 = $_POST['fecha4'];
$problema4 = $_POST['problema4'];
$plantas4 = $_POST['plantas4'];
$producto4 = $_POST['producto4'];
$dosis4 = $_POST['dosis4'];
$cantidad4 = $_POST['cantidad4'];//////tomando los valores de la primera columna
$reporte4 = $_POST['reporte4'];
$vivero1 = $_POST['vivero'];

$nombreCabo = $_POST['nombre'];
$fecha5 = $_POST['fecha5'];
$problema5 = $_POST['problema5'];
$plantas5 = $_POST['plantas5'];
$producto5 = $_POST['producto5'];
$dosis5 = $_POST['dosis5'];
$cantidad5 = $_POST['cantidad5'];//////tomando los valores de la primera columna
$reporte5 = $_POST['reporte5'];
$vivero1 = $_POST['vivero'];

$nombreCabo = $_POST['nombre'];
$fecha6 = $_POST['fecha6'];
$problema6 = $_POST['problema6'];
$plantas6 = $_POST['plantas6'];
$producto6 = $_POST['producto6'];
$dosis6 = $_POST['dosis6'];
$cantidad6 = $_POST['cantidad6'];//////tomando los valores de la primera columna
$reporte6 = $_POST['reporte6'];
$vivero1 = $_POST['vivero'];

//$nombre_p = $_POST['productor'];
//$municipio_p = $_POST['municipio'];
//$anio_p = $_POST['anio'];
//$fact = date('Y-m-d');
//$id_tecnico = $_POST['id_tecnico']; ya no se hace el insert xk es autoincremento el campo
//$consulta_editar = mysql_fetch_assoc(mysql_query("select *from productores where id_productor=$nombre_p"));
//$nombre_p = $consulta_editar['nombre_productor'];

$insertar = mysql_query("INSERT INTO reporte_cabo
(nombre_cabo,fecha_cabo,problema,planta_tratadas,p roducto_correctivo,dosis_correctivo,
cantidad,reporte_cabocol,id_vivero)
VALUES

('$nombreCabo','$fecha1','$problema1','$plantas1', '$producto1','$dosis1','$cantidad1','$reporte1','$ vivero1'),

('$nombreCabo','$fecha2','$problema2','$plantas2', '$producto2','$dosis2','$cantidad2','$reporte2','$ vivero1'),

('$nombreCabo','$fecha3','$problema3','$plantas3', '$producto3','$dosis3','$cantidad3','$reporte3','$ vivero1'),

('$nombreCabo','$fecha4','$problema4','$plantas4', '$producto4','$dosis4','$cantidad4','$reporte4','$ vivero1'),

('$nombreCabo','$fecha5','$problema5','$plantas5', '$producto5','$dosis5','$cantidad5','$reporte5','$ vivero1'),

('$nombreCabo','$fecha6','$problema6','$plantas6', '$producto6','$dosis6','$cantidad6','$reporte6','$ vivero1')
");




if($insertar){
header ('Refresh:2; URL=reporte_cabo.php');
echo 'Insertado Correctamente..';
}else{
header ('Refresh:5; URL=reporte_cabo.php');
echo "Error".mysql_error();
}
?>


  #2 (permalink)  
Antiguo 21/08/2014, 10:36
 
Fecha de Ingreso: abril-2013
Mensajes: 60
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: Como hacer varios insert a la vez?

podrias usar arrays

como envias los datos?
tienes un formulario con todos esos campos?
  #3 (permalink)  
Antiguo 21/08/2014, 10:44
Avatar de Pedromg1  
Fecha de Ingreso: agosto-2014
Ubicación: Tabasco
Mensajes: 12
Antigüedad: 9 años, 8 meses
Puntos: 0
Pregunta Respuesta: Como hacer varios insert a la vez?

Si amigo asi es, tengo un formulario en el cual estoy tomando los valores para su almacenamiento, aqui le anexo el form.

este archivo lo he llamado reporteCabo.php es donde el usuario hace su reporte,

<form action="insertCabo.php" method="post" name="datos">
<!-- Three Column Content -->
<div class="cols two-cols"></div>
<p><td>Nombre de responsable:</td>
<select name="nombre" class="cajaEditar" style="font-family: Sans-Serif; width:25%; height:25px;">
<option value="">Selecciona un responsable</option>
<?php

$query = mysql_query("select *from usuario");
mysql_num_rows($query);
while($row = mysql_fetch_assoc($query)){
?>
<?php
print '
<option value="'.$row['id_usuario'].'">'.$row['nombre_completo_usuario'].'</option>
';
?>
<?php } ?>
</select>

</p>
<p>
<td> Nombre del Vivero:</td>
<select name="vivero" class="cajaEditar" id="vivero1" style="font-family: Sans-Serif; width:25%; height:25px;">
<option value="">Selecciona un vivero</option>
<?php

$query = mysql_query("select *from vivero");
mysql_num_rows($query);
while($row = mysql_fetch_assoc($query)){
?>
<?php
print '
<option value="'.$row['id_vivero'].'">'.$row['nombre_vivero'].'</option>
';
?>
<?php } ?>
</select>

</p>


<!-- END Three Column Content -->
<!-- Two Column Content -->
</p>

<div class="cols two-cols">
<table width="879" height="169" border="1">
<tr>
<th width="25" scope="col">Dia</th>
<th width="79" scope="col">Fecha</th>
<th width="199" scope="col">Problema</th>
<th width="73" scope="col">Plantas tratadas</th>
<th width="47" scope="col">Producto correctivo</th>
<th width="107" scope="col">Dosis Correctivo</th>
<th width="86" scope="col">Cantidad</th>
<th width="58" scope="col">Reporte cabocol</th>


</tr>
<tr>
<th scope="row"><label for="1">1</label></th>
<td><input type="text" name="fecha1" style="width: 80%" id="f1" />
<img src="../ima/calendario.png" width="16" height="16" border="0" title="f1" id="lanzador" /> </td>
<td><input type="text" name="problema1" /></td>
<td> <input type="text" name="plantas1" /> </td>
<td><input type="text" name="producto1" /> </td>
<td><input type="text" name="dosis1" /> </td>
<td><input type="text" name="cantidad1" /> </td>
<td><input type="text" name="reporte1" /></td>


</tr>
<tr>
<th scope="row">2</th>
<td><input type="text" name="fecha2" style="width: 80%" id="f2" />
<img src="../ima/calendario.png" width="16" height="16" border="0" title="fi" id="lanzador2" /></td>
<td><input type="text" name="problema2" /></td>
<td><input type="text" name="plantas2" /></td>
<td><input type="text" name="producto2" /></td>
<td><input type="text" name="dosis2" /></td>
<td><input type="text" name="cantidad2" /></td>
<td><input type="text" name="reporte2" /></td>
</tr>
<tr>
<th scope="row">3</th>
<td><input type="text" name="fecha3" style="width: 80%" id="f3" />
<img src="../ima/calendario.png" width="16" height="16" border="0" title="fi" id="lanzador3" /></td>
<td><input type="text" name="problema3" /></td>
<td><input type="text" name="plantas3" /></td>
<td><input type="text" name="producto3" /></td>
<td><input type="text" name="dosis3" /></td>
<td><input type="text" name="cantidad3" /></td>
<td><input type="text" name="reporte3" /></td>
</tr>
<tr>
<th scope="row">4</th>
<td><input type="text" name="fecha4" style="width: 80%" id="f4" />
<img src="../ima/calendario.png" width="16" height="16" border="0" title="fi" id="lanzador4" /></td>
<td><input type="text" name="problema4" /></td>
<td><input type="text" name="plantas4" /></td>
<td><input type="text" name="producto4" /></td>
<td><input type="text" name="dosis4" /></td>
<td><input type="text" name="cantidad4" /></td>
<td><input type="text" name="reporte4" /></td>
</tr>
<tr>
<th scope="row">5</th>
<td><input type="text" name="fecha5" style="width: 80%" id="f5" />
<img src="../ima/calendario.png" width="16" height="16" border="0" title="fi" id="lanzador5" /></td>
<td><input type="text" name="problema5" /></td>
<td><input type="text" name="plantas5" /></td>
<td><input type="text" name="producto5" /></td>
<td><input type="text" name="dosis5" /></td>
<td><input type="text" name="cantidad5" /></td>
<td><input type="text" name="reporte5" /></td>
</tr>
<tr>
<th scope="row">6</th>
<td><input type="text" name="fecha6" /></td>

<td><input type="text" name="problema6" /></td>
<td><input type="text" name="plantas6" /></td>
<td><input type="text" name="producto6" /></td>
<td><input type="text" name="dosis6" /></td>
<td><input type="text" name="cantidad6" /></td>
<td><input type="text" name="reporte6" /></td>
</tr>
</table>
<p>&nbsp;</p>
<p align="center">
<input type="submit" name="50" id="50" value="Guardar datos" />
</form>




..............y aqui es donde tomo los valores atraves de variables, a este lo he llamado insertCabo.php......




<?php
include("config.php");
$c = new Buscador();
$c->Conectar();
setlocale(LC_ALL,'es_ES');
//$usuario = $_POST['usuario'];
$nombreCabo = $_POST['nombre'];
$fecha1 = $_POST['fecha1'];
$problema1 = $_POST['problema1'];
$plantas1 = $_POST['plantas1'];
$producto1 = $_POST['producto1'];
$dosis1 = $_POST['dosis1'];
$cantidad1 = $_POST['cantidad1'];//////tomando los valores de la primera columna
$reporte1 = $_POST['reporte1'];
$vivero1 = $_POST['vivero'];

$nombreCabo = $_POST['nombre'];
$fecha2 = $_POST['fecha2'];
$problema2 = $_POST['problema2'];
$plantas2 = $_POST['plantas2'];
$producto2 = $_POST['producto2'];
$dosis2= $_POST['dosis2'];
$cantidad2 = $_POST['cantidad2'];//////tomando los valores de la primera columna
$reporte2 = $_POST['reporte2'];
$vivero1 = $_POST['vivero'];

$nombreCabo = $_POST['nombre'];
$fecha3 = $_POST['fecha3'];
$problema3 = $_POST['problema3'];
$plantas3 = $_POST['plantas3'];
$producto3 = $_POST['producto3'];
$dosis3 = $_POST['dosis3'];
$cantidad3 = $_POST['cantidad3'];//////tomando los valores de la primera columna
$reporte3 = $_POST['reporte3'];
$vivero1 = $_POST['vivero'];

$nombreCabo = $_POST['nombre'];
$fecha4 = $_POST['fecha4'];
$problema4 = $_POST['problema4'];
$plantas4 = $_POST['plantas4'];
$producto4 = $_POST['producto4'];
$dosis4 = $_POST['dosis4'];
$cantidad4 = $_POST['cantidad4'];//////tomando los valores de la primera columna
$reporte4 = $_POST['reporte4'];
$vivero1 = $_POST['vivero'];

$nombreCabo = $_POST['nombre'];
$fecha5 = $_POST['fecha5'];
$problema5 = $_POST['problema5'];
$plantas5 = $_POST['plantas5'];
$producto5 = $_POST['producto5'];
$dosis5 = $_POST['dosis5'];
$cantidad5 = $_POST['cantidad5'];//////tomando los valores de la primera columna
$reporte5 = $_POST['reporte5'];
$vivero1 = $_POST['vivero'];

$nombreCabo = $_POST['nombre'];
$fecha6 = $_POST['fecha6'];
$problema6 = $_POST['problema6'];
$plantas6 = $_POST['plantas6'];
$producto6 = $_POST['producto6'];
$dosis6 = $_POST['dosis6'];
$cantidad6 = $_POST['cantidad6'];//////tomando los valores de la primera columna
$reporte6 = $_POST['reporte6'];
$vivero1 = $_POST['vivero'];

//$nombre_p = $_POST['productor'];
//$municipio_p = $_POST['municipio'];
//$anio_p = $_POST['anio'];
//$fact = date('Y-m-d');
//$id_tecnico = $_POST['id_tecnico']; ya no se hace el insert xk es autoincremento el campo
//$consulta_editar = mysql_fetch_assoc(mysql_query("select *from productores where id_productor=$nombre_p"));
//$nombre_p = $consulta_editar['nombre_productor'];

$insertar = mysql_query("INSERT INTO reporte_cabo
(nombre_cabo,fecha_cabo,problema,planta_tratadas,p roducto_correctivo,dosis_correctivo,
cantidad,reporte_cabocol,id_vivero)
VALUES

('$nombreCabo','$fecha1','$problema1','$plantas1', '$producto1','$dosis1','$cantidad1','$reporte1','$ vivero1'),

('$nombreCabo','$fecha2','$problema2','$plantas2', '$producto2','$dosis2','$cantidad2','$reporte2','$ vivero1'),

('$nombreCabo','$fecha3','$problema3','$plantas3', '$producto3','$dosis3','$cantidad3','$reporte3','$ vivero1'),

('$nombreCabo','$fecha4','$problema4','$plantas4', '$producto4','$dosis4','$cantidad4','$reporte4','$ vivero1'),

('$nombreCabo','$fecha5','$problema5','$plantas5', '$producto5','$dosis5','$cantidad5','$reporte5','$ vivero1'),

('$nombreCabo','$fecha6','$problema6','$plantas6', '$producto6','$dosis6','$cantidad6','$reporte6','$ vivero1')
");




if($insertar){
header ('Refresh:2; URL=reporte_cabo.php');
echo 'Insertado Correctamente..';
}else{
header ('Refresh:5; URL=reporte_cabo.php');
echo "Error".mysql_error();
}
?>
  #4 (permalink)  
Antiguo 21/08/2014, 12:41
 
Fecha de Ingreso: abril-2013
Mensajes: 60
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: Como hacer varios insert a la vez?

bueno, lo q te recomendaría
1.-cambiar los nombres a tus inputs, de tal manera que estos sean arrays

<tr>
<th scope="row"><label for="<?php echo $i ?>"><?php echo $i ?></label></th>
<td><input type="text" name="fecha[]" style="width: 80%" id="f1" />
<img src="../ima/calendario.png" width="16" height="16" border="0" title="f1" id="lanzador" /> </td>
<td><input type="text" name="problema[]" /></td>
<td> <input type="text" name="plantas[]" /> </td>
<td><input type="text" name="producto[]" /> </td>
<td><input type="text" name="dosis[]" /> </td>
<td><input type="text" name="cantidad[]" /> </td>
<td><input type="text" name="reporte[]" /></td>
</tr>

2.- usar un bucle (for,while,...) para repetir tus rows de manera dinamica

<?php for($i=0,$i<4;$i++){ ?>
<tr>
<th scope="row"><label for="<?php echo $i ?>"><?php echo $i ?></label></th>
<td><input type="text" name="fecha[]" style="width: 80%" id="f1" />
<img src="../ima/calendario.png" width="16" height="16" border="0" title="f1" id="lanzador" /> </td>
<td><input type="text" name="problema[]" /></td>
<td> <input type="text" name="plantas[]" /> </td>
<td><input type="text" name="producto[]" /> </td>
<td><input type="text" name="dosis[]" /> </td>
<td><input type="text" name="cantidad[]" /> </td>
<td><input type="text" name="reporte[]" /></td>
</tr>
<?php } ?>

3.- en tu archivo donde recives los datos, estos llegarían dentro un array, por lo tanto el insert estaria dentro un bucle.

$nombreCabo = $_POST['nombre'];
$fecha = $_POST['fecha'];
$problema = $_POST['problema'];
$plantas = $_POST['plantas'];
$producto = $_POST['producto'];
$dosis = $_POST['dosis'];
$cantidad = $_POST['cantidad'];
$reporte = $_POST['reporte'];
$vivero = $_POST['vivero'];

foreach($fecha as $key => $value){

$insertar = mysql_query("INSERT INTO reporte_cabo
(nombre_cabo,fecha_cabo,problema,planta_tratadas,p roducto_correctivo,dosis_correctivo,
cantidad,reporte_cabocol,id_vivero)
VALUES
('$nombreCabo','".$fecha[$key]."','".$problema[$key]."','$plantas[$key]."', '".$producto[$key]."','".$dosis[$key]."','".$cantidad[$key]."','".$reporte[$key]."','".$ vivero[$key]."'),

}


esa es la idea...
espero sirva, salu2
  #5 (permalink)  
Antiguo 21/08/2014, 22:28
Avatar de Pedromg1  
Fecha de Ingreso: agosto-2014
Ubicación: Tabasco
Mensajes: 12
Antigüedad: 9 años, 8 meses
Puntos: 0
Pregunta Respuesta: Como hacer varios insert a la vez?

Gracias Amigo....lo checaré y le digo que pasa...

Etiquetas: Ninguno
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 20:07.