Foros del Web » Programando para Internet » PHP »

Creación multiples registros por un solo insert

Estas en el tema de Creación multiples registros por un solo insert en el foro de PHP en Foros del Web. Hola compañeros, tiempo sin saludarles. Requiero de sus conocimientos y experiencias programando con PHP, pues deseo hacer algo y no tengo idea cómo, se trata ...
  #1 (permalink)  
Antiguo 17/06/2016, 15:02
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 10 años, 5 meses
Puntos: 0
Pregunta Creación multiples registros por un solo insert

Hola compañeros, tiempo sin saludarles. Requiero de sus conocimientos y experiencias programando con PHP, pues deseo hacer algo y no tengo idea cómo, se trata de los siguiente:

Tengo un formulario php cualquiera que funciona adecuadamente e inserta datos a mi tabla mysql sin problemas; los campos en donde los datos son insertados son id, titulo, actividad, asignado_a, asignado_por, fecha_cumplimiento, fecha_asignacion... pero el punto es que en ese solo formulario desearia poder hacer varias asignaciones de la misma actividad a distintos usuarios, es decir escribir en el campo de "asignado a" varios nombres separados por espacios o comas y esa tarea que se creaba antes para una sola persona, cree nuevos registros (la misma tarea o actividad) dependiendo de los nombres escritos... ejemplo: actividad: estudiar más PHP, asignado a: jlopez,jpachecho,opertuz y esa actividad cree tres nuevos registros a partir de las tres asignaciones. Espero haberme explicado bien y gracias de antemano por leer esta consulta y su colaboración.
  #2 (permalink)  
Antiguo 17/06/2016, 15:27
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 9 años
Puntos: 39
Respuesta: Creación multiples registros por un solo insert

Debes convertir la cadena a un array, y recorrerla para hacer los insert.

Código PHP:
Ver original
  1. $cadena = "pancho,pedro,juan";
  2. $personas = explode(",", $cadena);
  3.  
  4. foreach($personas as $persona){
  5.     $sql = "INSERT INTO tabla (actividad,usuario) VALUES ('$actividad','$persona')";
  6.     mysqli_query($con,$sql);
  7. }

Por ejemplo, así.
  #3 (permalink)  
Antiguo 17/06/2016, 16:11
 
Fecha de Ingreso: septiembre-2015
Ubicación: caracas
Mensajes: 75
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Creación multiples registros por un solo insert

Saludos Jlopez2014
chequea esto es un insert de multiples registros te mando el archivo input y el de proceso, creo que esto es lo que buscar quita los controles que realizan los calculos que no te interesa dicha parte y aplica lo relativo a la carga de solo los campos que nombras, espero que sea algo como esto suerte, revisa ya que hay dos insert uno de la persona que registra y el otros es de la data el que te interesa ha menos que te interesen los dos

////////////////////// input.php


<?PHP
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>FORMULARIO DINAMICO</title>
<meta name= "viewport" content= "width=device-width, user-scalable=no, initial-scale=1.0, maximun-scale=1.0, minimun-scale=1.0">

<link rel="stylesheet" href="ccs/bootstrap.min.css">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">

<script type="text/javascript" src="js/bootstrap.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/jquery.js"></script>


</head>

<body>
<div class="container">
<form action="procesar.php" method="post">

<div class= "box box-primary">
<div class="box-header">
<h3 class="box-title">Invoice</h3>
</div>
<div class="box-body">
<div class="form-group">
ReceptName
<input type="text" name="re_name" class="form-control ">
</div>

<div class="form-group">
Location
<input type="text" name="location" class="form-control">
</div>
</div>
<input type="submit" class="btn btn-primary" name="save" value="Guiardar Registro">

</div><br/>


<table class="table table-bordered table-hover">

<thead>
<tr>
<th>No</th>
<th>ProductName</th>
<th>Quantity</th>
<th>Price</th>
<th>Discount</th>
<th>Ammount</th>
<th><input type="button" value="+" id="add" class="btn btn-primary"></th>
</tr>
</thead>

<tbody class="detail">
<tr>
<td class="no">1</td>
<td><input type="text" class="form-control productname" name="productname[]"></td>
<td><input type="text" class="form-control quantity" name="quantity[]"></td>
<td><input type="text" class="form-control price" name="price[]"></td>
<td><input type="text" class="form-control discount" name="discount[]"></td>
<td><input type="text" class="form-control amount" name="amount[]"></td>
<td><a href="#" class="remove">Delete</a></td>
</tr>
</tbody>


<tfoot>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<td colspan="1" align="right"><strong>Total:</strong></td>
<td colspan="5"><strong>$<b class="total"></b></strong></td>
</tr>
</tfoot>

</table>
</form>
</div>


<script src="js/jquery.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>

<script type="text/javascript">
$(function(){
$('#add').click(function(){
addnewrow();
});

$('body').delegate(' .remove' , 'click' ,function(){
$(this).parent().parent().remove();
});

$(' .detail').delegate(' .quantity,.price,.discount','keyup' ,function(){
var tr = $(this).parent().parent();
var qty = tr.find(' .quantity').val();
var price = tr.find(' .price').val();
var dis = tr.find(' .discount').val();
var amt = (qty * price) - (qty * price * dis)/100;
var text="$"
tr.find(' .amount').val(amt);
total()
});

});

function total()
{
var t = 0;
$('.amount').each(function(i,e)

{
var amt = $(this).val()-0;
t += amt;

});

$('.total').html(t);
}



function addnewrow()
{
var n= ($('.detail tr').length-0)+1;
var tr= '<tr>' +
'<td class="no">' + n + '</td>' +
'<td><input type="text" class="form-control productname" name="productname[]"></td>' +
'<td><input type="text" class="form-control quantity" name="quantity[]"></td>' +
'<td><input type="text" class="form-control price" name="price[]"></td>' +
'<td><input type="text" class="form-control discount" name="discount[]"></td>' +
'<td><input type="text" class="form-control amount" name="amount[]"></td>' +
'<td><a href="#" class="remove">Delete</td>' +
'</tr>';
$('.detail').append(tr);
}
</script>

/////////////// procesar.php


<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">

<?php

$server = "localhost";
$usuario = "root";
$contraseña = "";
$bd = "inv";


$conexion = mysqli_connect($server,$usuario,$contraseña,$bd)
or die ("error en conexión favor verificar la conexión");

$insertar = "INSERT INTO tbl_order (re_name,location) VALUES ('{$_POST['re_name']}',' {$_POST['location']}')";

$resultado = mysqli_query($conexion,$insertar)
or die ('erro al insertar ');

$id=mysqli_insert_id($conexion);



for($i = 0 ;$i < count($_POST['productname']);$i++)
{
$insertar = "INSERT INTO tbl_orderdetail SET order_id = '{$id}',product_name='{$_POST['productname'][$i]}',quantity='{$_POST['quantity'][$i]}',price='{$_POST['price'][$i]}',discount='{$_POST['discount'][$i]}',amount='{$_POST['amount'][$i]}' ";

$resultado = mysqli_query($conexion,$insertar)
or die ('erro al insertar ');

}


?>
__________________
ymanol caires z
  #4 (permalink)  
Antiguo 17/06/2016, 19:03
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Creación multiples registros por un solo insert

Tu puedes insertar varias registros en una sola consulta
Código SQL:
Ver original
  1. INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
cada nuevo registro va separado por coma y los campos involucrados en la consulta van entre parentesis. Lo que tienes que hacer es crear una cadena con la consulta y ejecutarla mediante mysqli en php.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 20/06/2016, 13:55
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Creación multiples registros por un solo insert

Hola colegas, revisé sus aportes y nada, sigo con el dilema, este es mi código de inserción que funciona para un usuario y registro general respectivamente. y mi deseo es que en ese solo formulario, pueda en el campo de nombre (usuarios), digitar varios y genere asi la misma cantidad de registros...

Código PHP:
Ver original
  1. ....
  2. if($btn=="Ingresar"){
  3.         $titulo=$_POST["txttitulo"];
  4.         $modulo=$_POST["txtmodulo"];
  5.         $saludo=$_POST["txtsaludo"];
  6.         $nombre=$_POST["txtnombre"];
  7.         $tel=$_POST["txttel"];
  8.         $cel=$_POST["txtcel"];
  9.         $email=$_POST["txtemail"];
  10.         $correo=$_POST["txtcorreo"];
  11.         $creacion=$_POST["txtcreacion"];
  12.         $info=$_POST["txtinfo"];
  13.         $nit=$_POST["txtnit"];
  14.         $direccion=$_POST["txtdireccion"];
  15.         $telemp=$_POST["txttelemp"];
  16.         $emailemp=$_POST["txtemailemp"];
  17.         $ciudad=$_POST["txtciudad"];
  18.         $dpto=$_POST["txtdpto"];
  19.         $pais=$_POST["txtpais"];
  20.         $sector=$_POST["txtsector"];
  21.         $fuente=$_POST["txtfuente"];
  22.         $info=$_POST["txtinfo"];
  23.         $fpcliente=$_POST["txtfecha"];
  24.         $descripcion=$_POST["txtdescripcion"];
  25.         $final=$_POST["txtfinal"];
  26.         $usuario= $_SESSION["usuarioactual"];
  27.  
  28.         $sql="insert into actividades values ('','$modulo','$titulo','$nombre','$final','$descripcion','$usuario','$creacion','Pendiente','0000-00-00','0000-00-00')";
  29.        
  30.         $cs=mysql_query($sql,$cn);
  31.         include("mailtarea.php");
  32.         echo "<script>window.location='actividadesG.php';</script>";
  33.         }
  34.        
  35.     }

De antemano gracias por la colaboración
  #6 (permalink)  
Antiguo 20/06/2016, 14:46
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 9 años
Puntos: 39
Respuesta: Creación multiples registros por un solo insert

Sería ver mejor el código que intentaste hacer, y dónde te marca el error. Lo que haz publicado nos deja en las mismas.
  #7 (permalink)  
Antiguo 20/06/2016, 15:06
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Creación multiples registros por un solo insert

actualmente no tengo error, pero si escribo con ese codigo que tengo en el campo usuario: "jlopez,jpacheco" obviamente crea un solo registro con ese usuario siendo dos, y yo deseo poder condicionar mi codigo que si escribo tal como expliqué, genere en mi tabla dos registros de la misma actividad, uno para jlopez y otro para jpacheco, se que ahi debo usar explode en un array o vectores pero esa parte no la domino casi y por eso mi consulta en este foro.
  #8 (permalink)  
Antiguo 20/06/2016, 15:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Creación multiples registros por un solo insert

Cita:
pero si escribo con ese codigo que tengo en el campo usuario: "jlopez,jpacheco" obviamente crea un solo registro con ese usuario siendo dos, y yo deseo poder condicionar mi codigo que si escribo tal como expliqué, genere en mi tabla dos registros de la misma actividad, uno para jlopez y otro para jpacheco,
Partamos de un detalle básico: Si tienes dos usuarios en in solo INPUT, entonces todo lo tienes mal, porque en cada INPUT sólo debería haber un único usuario, y cada usuario debería tener su propio set de datos para los restantes campos.
Si lo que quieres es ingresar los datos de varios usuarios desde un mismo formulario, tomados por ejemplo de una tabla de datos, entonces cada columna de la tabla debería ser enviada como array, y no como valores individuales.
Vale decir que cada uno de los $_POST de este ejemplo debería ser un array:
Código PHP:
Ver original
  1. $titulo=$_POST["txttitulo"];
  2.         $modulo=$_POST["txtmodulo"];
  3.         $saludo=$_POST["txtsaludo"];
  4.         $nombre=$_POST["txtnombre"];
  5.         $tel=$_POST["txttel"];
  6.         $cel=$_POST["txtcel"];
  7.         $email=$_POST["txtemail"];
  8.         $correo=$_POST["txtcorreo"];
  9.         $creacion=$_POST["txtcreacion"];
  10.         $info=$_POST["txtinfo"];
  11.         $nit=$_POST["txtnit"];
  12.         $direccion=$_POST["txtdireccion"];
  13.         $telemp=$_POST["txttelemp"];
  14.         $emailemp=$_POST["txtemailemp"];
  15.         $ciudad=$_POST["txtciudad"];
  16.         $dpto=$_POST["txtdpto"];
  17.         $pais=$_POST["txtpais"];
  18.         $sector=$_POST["txtsector"];
  19.         $fuente=$_POST["txtfuente"];
  20.         $info=$_POST["txtinfo"];
  21.         $fpcliente=$_POST["txtfecha"];
  22.         $descripcion=$_POST["txtdescripcion"];
  23.         $final=$_POST["txtfinal"];
  24.         $usuario= $_SESSION["usuarioactual"];
A los fines de ejecutar los INSERTS, cada set de datos, sólo puede contener los datos del usuario a quien pertenecen...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: arrays, explode
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:55.