Foros del Web » Programando para Internet » PHP »

Inserta varias veces desde php

Estas en el tema de Inserta varias veces desde php en el foro de PHP en Foros del Web. Hola buenos Días, tengo un problema y no se como solucionarlo, tengo una inserción en la base de datos. Tengo una tabla en php y ...
  #1 (permalink)  
Antiguo 26/09/2012, 07:54
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Inserta varias veces desde php

Hola buenos Días, tengo un problema y no se como solucionarlo, tengo una inserción en la base de datos.

Tengo una tabla en php y le agrego filas completas dinamicamente, para insertar en la base de datos los datos ingresados, el problema que se me presenta es que yo agrego una sola fila todo bien, pero si agrego varias a la ves todas las filas pero repetidas la cantidad de ves que haya agregado campos, si agrego 5 campos dinamicamente

campo1 medios, lotes, especificación, resultados
campo2 medios1, lotes1, especificación1, resultados1
campo3 medios2, lotes2, especificación2, resultados2
campo4 medios3, lotes3, especificación3, resultados3
campo5 medios4, lotes4, especificación4, resultados4

me inserta 5 veces campo1, 5 veces campo2, 5 veces campo3, 5 veces campo4, 5 veces el campos5, no necesito que me inserte tantas veces que me inserte normal solo 1 ves por campo, este es el codigo

tabla

Código PHP:
Ver original
  1. <table>  
  2. <tr>
  3.     <td><strong><input type="text" size="12" name="Analisis[]" value="MBE12 - <?php echo $filas2['No.Analisis']; ?>"/></strong></td>
  4.     <td><input type="text" name="Producto[]" size="30" value="<?php echo $filas2['Producto']; ?>"/></td>
  5.     <td><input type="text" name="Lote[]" size="9" value="<?php echo $filas2['No.Lote']; ?>"/></td>
  6.     <td><input type="text" name="Presentacion[]" size="15" value="<?php echo $filas2['Presentacion']; ?>"/></td>
  7.     <td><input type="text" name="Clientes[]" value="<?php echo $filas2['Clientes']; ?>"/></td>
  8.     <td><input type="text" name="Cantidad[]"  size="8" value="<?php echo $filas2['Cantidad']; ?>"/></td>
  9.     <td><input type="text" name="Forma[]" value="<?php echo $filas2['FormaFarma']; ?>"/></td>  
  10.     <td><input type="text" name="FechaRecep[]" size="10" value="    <?php echo $filas2['FechaRecep']; ?>"/></td>  
  11.     <td><input type="text" name="FechaSiembra[]" size="8" value="   <?php echo $filas2['FechaSiembra']; ?>"/></td>
  12.     <td><input type="text" name="FechaLectura[]" size="11" value="      <?php echo $filas2['FechaLectura']; ?>"/></td>
  13.     <td><input type="text" name="Metodo[]" size="18" value="<?php echo $filas2['Metodo']; ?>"/></td>
  14.     <td><input type="text" name="Formato[]" size="8" value="      <?php echo $filas2['Abreviatura']; ?>"/></td>
  15.   </tr>
  16. </table>


y asi estoy insertando

Código PHP:
Ver original
  1. $val_chkis = $_REQUEST['Anali'];
  2.     foreach ($val_chkis as $key => $valll){
  3.        
  4. $sql= mysql_query("insert into `recuentomrexternos`(`No.Analisis`,`Producto`,`Clientes`,`FormaFarma`,`No.Lote`,`FechaRecep`, `FechaSiembra`,`FechaLectura`,`Metodo`,`Presentacion`,`Abreviatura`,`Cantidad`) values ('{$valll}','{$_REQUEST['Produc'][$key]}', '{$_REQUEST['Clien'][$key]}','{$_REQUEST['For'][$key]}','{$_REQUEST['Lot'][$key]}','{$_REQUEST['FechaRec'][$key]}' ,'{$_REQUEST['FechaAn'][$key]}','{$_REQUEST['FechaRes'][$key]}','{$_REQUEST['Meto'][$key]}','{$_REQUEST['Presen'][$key]}', '{$_REQUEST['Abre'][$key]}','{$_REQUEST['Canti'][$key]}')",$Conexion) or die("eRROR EN EL oPCIONeXTERNO ".mysql_error());     
  5.  
  6. $val_chkisddd = $_REQUEST['Codig'];
  7. foreach ($val_chkisddd as $key => $valllssss){
  8.            
  9. $insert2="insert into `confirmacion`(`Codigo`,`Analisis`,`Abreviatura`) values('{$valllssss}','{$valll}','MBE')";
  10.  
  11. $res=mysql_query($insert2,$Conexion) or die ('error en confrimacion2'.mysql_error());
  12.    
  13. }
  14.  
  15. }

y asi creo los campos dinamicos

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript"> /* Abrimos etiqueta de código Javascript */
  2.  
  3.     /* Partimos por definir una variable llamada posicionCampo. Esta variable servirá como índices para marcar cuantos campos se han agregado dinámicamente. La inicializamos en 1, ya que la primera llamada ocurrirá cuando no hayan campos agregados */
  4.  
  5.     var posicionCampo=1;
  6.  
  7.     /* Declaramos la función agregarUsuario( ) */
  8.  
  9.     function agregarUsuario(){
  10.  
  11.     /* Declaramos una variable llamada nuevaFila y a ella le asignamos la recuperación del elemento HTML designado por el id tablaUsuarios. En este caso, la tabla en la que manejamos los campos dinámicamente y llamamos a la función insertRow para agregar una fila */
  12.  
  13.     nuevaFila = document.getElementById("tabla").insertRow(-1);
  14.  
  15.     /* Asignamos a la propiedad id de nuevaFila el valor de posicionCampo, que inicializamos en 1 */
  16.     nuevaFila.id=posicionCampo;
  17.  
  18.     /* Luego en otra variable llamada nuevaCelda, agregaremos una celda a la tabla, mediante la función insertCell */
  19.     nuevaCelda=nuevaFila.insertCell(-1);
  20.  
  21.     /* Con la celda creada, insertamos dinámicamente un campo de texto, el cual almacenaremos en un array llamado nombre, con una posición equivalente a la variable posicionCampo. Una vez terminado, repetimos la acción para el sitio Web y correo, asignando al array respectivo */
  22.  
  23.     nuevaCelda.innerHTML="<td><input type='text' size='12' name='Anali["+posicionCampo+"]' ></td>";
  24.  
  25.     nuevaCelda=nuevaFila.insertCell(-1);
  26.  
  27.     nuevaCelda.innerHTML="<td> <input type='text' size='30' name='Produc["+posicionCampo+"]' ></td>";
  28.  
  29.     nuevaCelda=nuevaFila.insertCell(-1);
  30.    
  31.     nuevaCelda.innerHTML="<td> <input type='text' size='9' name='Lot["+posicionCampo+"]' value=''></td>";
  32.  
  33.     nuevaCelda=nuevaFila.insertCell(-1);
  34.  
  35.     nuevaCelda.innerHTML="<td> <input type='text' size='15' name='Presen["+posicionCampo+"]'  ></td>";
  36.  
  37.     /* Finalmente añadimos una última celda para las acciones y ahí agregamos un botón llamado Eliminar, el cual al ser presionado (definiendo la propiedad onClick), llamará a una función eliminarUsuario, pasando como parámetro la fila correspondiente */
  38.  
  39.     nuevaCelda=nuevaFila.insertCell(-1);
  40.  
  41. /*////////////////////////////////////////////////////////////////////////////////*/
  42.     nuevaCelda.innerHTML="<td> <input type='text' size='20' name='Clien["+posicionCampo+"]' value=''></td>";
  43.  
  44.     nuevaCelda=nuevaFila.insertCell(-1);
  45.  
  46.     nuevaCelda.innerHTML="<td> <input type='text' size='8' name='Canti["+posicionCampo+"]' value=''></td>";
  47.  
  48.     nuevaCelda=nuevaFila.insertCell(-1);
  49.  
  50.     nuevaCelda.innerHTML="<td> <input type='text' size='20' name='For["+posicionCampo+"]' value=''></td>";
  51.  
  52.     nuevaCelda=nuevaFila.insertCell(-1);
  53.    
  54.     nuevaCelda.innerHTML="<td> <input size='10' id='fc_1348595831' type='text' name='FechaRec["+posicionCampo+"]' title='YYMMDD' onClick='displayCalendar(this);'></td>";
  55.  
  56.     nuevaCelda=nuevaFila.insertCell(-1);
  57.  
  58.     nuevaCelda.innerHTML="<td> <input size='10' id='fc_1348596085' type='text' name='FechaAn["+posicionCampo+"]' title='YYMMDD' onClick='displayCalendar(this);'></td>";
  59.  
  60.     nuevaCelda=nuevaFila.insertCell(-1);
  61.  
  62.     nuevaCelda.innerHTML="<td><input size='10' id='fc_1348596150' type='text' name='FechaRes["+posicionCampo+"]' title='YYMMDD' onClick='displayCalendar(this);'></td>";
  63.  
  64.     nuevaCelda=nuevaFila.insertCell(-1);
  65.  
  66.     nuevaCelda.innerHTML="<td> <input type='text' size='18' name='Meto["+posicionCampo+"]' value=''></td>";
  67.  
  68.     nuevaCelda=nuevaFila.insertCell(-1);
  69.    
  70.     nuevaCelda.innerHTML="<td> <select name='Abre["+posicionCampo+"]'><option value='MDE'>MDE</option><option value='MB'>MB</option><option value='MR'>MR</option></select>";
  71.  
  72.     nuevaCelda=nuevaFila.insertCell(-1);
  73.    
  74.     nuevaCelda.innerHTML="<td> <select name='Codig["+posicionCampo+"]'><option value='CT-09F3'>CT-09F3</option><option value='CT-09F4'>CT-09F4</option><option value='CT-09F6'>CT-09F6</option></select>";
  75.  
  76.     nuevaCelda=nuevaFila.insertCell(-1);
  77.  
  78.     nuevaCelda.innerHTML="<td><input type='button' value='Eliminar' onclick='eliminarUsuario(this)'></td>";
  79.     /*----------------------------------------------------------------------*/
  80.  
  81.     /* Incrementamos el valor de posicionCampo para que empiece a contar de la fila siguiente */
  82.  
  83.     posicionCampo++;
  84.     }

Gracis por toda la ayuda :)
  #2 (permalink)  
Antiguo 26/09/2012, 10:28
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años
Puntos: 79
Respuesta: Inserta varias veces desde php

algo así te puede servir, ocupa DOM para insertar...
al final tendrás un array de datos y de ahí extraes para cada insert,
lo hice para dos campos, pero le puedes agregar los que faltan.

Código PHP:
Ver original
  1. <style>
  2. body, pre{margin:0;padding:0;font-family:Verdana, Geneva, sans-serif;font-size:12px}
  3. .nb{border: none;}
  4. table{border-collapse:collapse;margin:10px 0;font-size:12px;}
  5. table th{padding:4px 2px; background-color:FFFF80}
  6. table td{padding:1px 2px;}
  7. </style>
  8. <script>
  9. var numRow = 1;
  10. window.onload = function(){ tabla = document.getElementById("t").getElementsByTagName("tbody")[0];}
  11.  
  12. function addRow(){
  13.     crearTR = document.createElement("tr");
  14.     for(col=0 ; col<4; col++){
  15.         crearTD = document.createElement("td");
  16.         crearBoton = document.createElement("input");
  17.         crearBoton.setAttribute("type", "button");
  18.         crearBoton.setAttribute("value", "-");
  19.         crearBoton.onclick = function(){delRow(this.parentNode.parentNode)};
  20.         nRw = document.createTextNode(numRow);
  21.         tt = document.createTextNode("hola");
  22.         crearINP1 = document.createElement("input");
  23.         crearINP2 = document.createElement("input");
  24.         crearINP1.className = "nb";crearINP2.className = "nb";
  25.         crearINP1.setAttribute("size", 10);crearINP2.setAttribute("size", 10);
  26.         crearINP1.setAttribute("name", "datos[campo1][]");crearINP2.setAttribute("name", "datos[campo2][]");
  27.         if(col==0) crearTD.appendChild(crearBoton)
  28.         else if(col==1) crearTD.appendChild(nRw)
  29.         else if(col==2) crearTD.appendChild(crearINP1);
  30.         else if(col==3) crearTD.appendChild(crearINP2);
  31.         crearTR.appendChild(crearTD);
  32.     }
  33.     tabla.appendChild(crearTR);
  34.     numRow++;
  35. }
  36.  
  37. function delRow(obj){tabla.removeChild(obj);}
  38.  
  39. function delAll(){while (tabla.childNodes[0]){tabla.removeChild(tabla.childNodes[0]);}
  40. }
  41. </script>
  42. <form method="post">
  43. <input type="button" value="Agregar Fila" onClick="addRow()">
  44. <input type="button" value="Eliminar Todo" onClick="delAll()">
  45. <input type="submit" >
  46. <table width="0" border="1" cellpadding="0" cellspacing="0" id="t" >
  47.   <thead>
  48.   <tr>
  49.     <th width="24">-</th>
  50.     <th width="24">num</th>
  51.     <th>campo_1</th>
  52.     <th>campo_2</th>
  53.   </tr>
  54.   </thead>
  55.   <tbody>
  56.   </tbody>
  57. </table>
  58. </form>
  59. <?
  60. echo "<hr>codigo para insertar<br>";
  61. if(!$_POST["datos"] || !is_array($_POST["datos"])) exit;
  62. echo "<pre>";print_r($_POST["datos"]);echo "</pre>";
  63. ?>

salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #3 (permalink)  
Antiguo 26/09/2012, 12:19
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Inserta varias veces desde php

que pena contigo pero no entendí, lo siento
  #4 (permalink)  
Antiguo 02/10/2012, 07:37
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Inserta varias veces desde php

Gracias!!! por toda la ayuda

Última edición por JeMaGa; 03/10/2012 a las 08:38

Etiquetas: html, inserta, mysql, sql, tabla, veces, variables, usuarios
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 15:01.