Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Insertar datos con un WHILE PHP

Estas en el tema de Insertar datos con un WHILE PHP en el foro de PHP en Foros del Web. Hola a todos! siguiendo trabajando en un proyecto en el cual he tenido varias inquietudes (algunas aclaradas aqui) se me presento una nueva, que trata ...
  #1 (permalink)  
Antiguo 04/08/2014, 06:46
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 10 años, 4 meses
Puntos: 0
Exclamación Insertar datos con un WHILE PHP

Hola a todos! siguiendo trabajando en un proyecto en el cual he tenido varias inquietudes (algunas aclaradas aqui) se me presento una nueva, que trata de tomar los datos de una tabla traida por una consulta (los cuales obviamente varian en cantidad de filas por la los datos en la BD) y tomarlos e insertarlos en otra tabla, y se que puede hacer con un while más lo que e intentado no ha resultado... agradezco su colaboracion en poder hacer este proceso... este es parte de mi código:

Este es el Php con el que aparecen los datos de la BD en la tabla de mi pagina...
Código PHP:
Ver original
  1. <?php
  2. $sql="
  3. SELECT MAX(cotizaciones.nocotizacion), cotizaciones.idproducto, cotizaciones.cantidad, cotizaciones.observaciones
  4. FROM cotizaciones
  5. INNER JOIN pedidos
  6. GROUP BY cotizaciones.idproducto";
  7.         $cs=mysql_query($sql,$cn);
  8.         echo"<center>
  9. <table border='3'>
  10. <tr>
  11. <td>Desc. Producto</td>
  12. <td>Cantidad Cotizada</td>
  13. <td>Cantidad Solicitada</td>
  14. <td>Observaciones</td>
  15. </tr>";
  16.         while($resul=mysql_fetch_array($cs)){
  17.             $var=$resul[0];
  18.             $var1=$resul[1];
  19.             $var2=$resul[2];
  20.             $var3=$resul[3];
  21.            
  22.            
  23.             echo "<tr>
  24. <td><input name='txtnopro' type='text'  value='$var1' size='15' readonly/></td>
  25. <td><input name='txtcotiz' type='text'  value='$var2' size='15' readonly/></td>
  26. <td><input name='txtcantidad' type='text'  value='' size='15'/></td>
  27. <td><input name='txtobs' type='text'  value='' size='15'/></td>
  28.  
  29. </tr>";
  30.             }
  31.            
  32.             echo "</table><tr align='center'><td colspan='2'><input type='submit' name='btn1'value='Agregar'/>
  33. </center>";
  34. ?>

como tomaria todos los datos arrojados e insertarlos en otra tabla... porque con la siguiente linea solo logro insertar el ultimo:

Código PHP:
Ver original
  1. if($btn=="Agregar"){
  2.         $nopedido=$r[0];
  3.         $nopro=$_POST["txtnopro"];
  4.         $cantidad=$_POST["txtcantidad"];
  5.         $obs=$_POST["txtobs"];
  6.        
  7.        
  8.        
  9.         $sql="insert into contenidopedido values ($nopedido,'$nopro','$cantidad','$obs')";
  10.        
  11.         $cs=mysql_query($sql,$cn);
  12.         echo "<script> alert('Se inserto correctamente el pedido');</script>";
  13.        
  14.  
  15.         }
  #2 (permalink)  
Antiguo 04/08/2014, 12:34
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Insertar datos con un WHILE PHP

Revisa esta respuesta: http://www.forosdelweb.com/f18/recib...7/#post4290023
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 04/08/2014, 13:17
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Insertar datos con un WHILE PHP

Disculpa e intentado aplicar la posible solución de ese post pero no he llegado con exactitud hacerlo... o es que no es tan sencillo de aplicar como creo...?
  #4 (permalink)  
Antiguo 04/08/2014, 13:19
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Insertar datos con un WHILE PHP

Muéstranos como queda tu código aplicando esa posible solución; en verdad que es fácil, solo necesitas entenderlo.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 04/08/2014, 14:04
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Insertar datos con un WHILE PHP

ya voy entendiendo mas la dinamica, más los datos los lee e imprime en el mismo formulario pero no se insertan en la base de datos, asi quedó mi código:

Código PHP:
Ver original
  1. if($btn=="Agregar"){
  2.         $nopedido=$r[0];
  3.         $nopro=$_POST["foo"];
  4.         $cantidad=$_POST["foo"];
  5.         $obs=$_POST["foo"];
  6.        
  7.         foreach($_POST['foo'] as $k => $v){
  8.     echo $k . ' ' . $v . '<br />';
  9. }
  10.        
  11.         $sql="insert into contenidopedido values ($nopedido,'$nopro','$cantidad','$obs')";

y esta es la linea que trae los datos a la tabla basado en la consulta

Código PHP:
Ver original
  1. <?php
  2. $sql="
  3. SELECT MAX(cotizaciones.nocotizacion), cotizaciones.idproducto, cotizaciones.cantidad, cotizaciones.observaciones
  4. FROM cotizaciones
  5. INNER JOIN pedidos
  6. GROUP BY cotizaciones.idproducto";
  7.         $cs=mysql_query($sql,$cn);
  8.         echo"<center>
  9. <table border='3'>
  10. <tr>
  11. <td>Desc. Producto</td>
  12. <td>Cantidad Cotizada</td>
  13. <td>Cantidad Solicitada</td>
  14. <td>Observaciones</td>
  15. </tr>";
  16.         while($resul=mysql_fetch_array($cs)){
  17.             $var=$resul[0];
  18.             $var1=$resul[1];
  19.             $var2=$resul[2];
  20.             $var3=$resul[3];
  21.            
  22.            
  23.             echo "<tr>
  24. <td><input name='foo[]' type='text'  value='$var1' size='15' readonly/></td>
  25. <td><input name='foo[]' type='text'  value='$var2' size='15' readonly/></td>
  26. <td><input name='foo[]' type='text'  value='' size='15'/></td>
  27. <td><input name='foo[]' type='text'  value='' size='15'/></td>
  28.  
  29. </tr>";
  30.             }
  31.            
  32.             echo "</table><tr align='center'><td colspan='2'><input type='submit' name='btn1'value='Agregar'/>
  33. </center>";
  34. ?>
  #6 (permalink)  
Antiguo 04/08/2014, 14:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Insertar datos con un WHILE PHP

No se trata de que todos los input tengan el mismo nombre, solo hacerlos funcionar como array:

Código HTML:
Ver original
  1. <td><input name='txtnopro[]' type='text'  value='$var1' size='15' readonly/></td>
  2. <td><input name='txtcotiz[]' type='text'  value='$var2' size='15' readonly/></td>
  3. <td><input name='txtcantidad[]' type='text'  value='' size='15'/></td>
  4. <td><input name='txtobs[]' type='text'  value='' size='15'/></td>

Luego, al procesar el formulario, todos los campos tendrán la misma cantidad de elementos, por lo que el índice de uno te servirá para los demás:

Código PHP:
Ver original
  1. foreach($_POST['txtnopro'] as $key => $txtnopro) {
  2.     // Ya tienes la variable $txtnopro, no necesitas crearla
  3.     $txtcotiz = $_POST['txtcotiz'][$key];
  4.     $txtcantidad = $_POST['txtcantidad'][$key];
  5.     $txtobs = $_POST['txtobs'][$key];
  6.  
  7.     // Aquí ejecutas la consulta para insertar y listo.
  8. }
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 04/08/2014, 15:42
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Insertar datos con un WHILE PHP

Gracias por la aclaración!!!... soy nuevo en esto pero me he aventurado solo a ir más allá de donde me estan enseñando y al final la curiosidad y ganas de aprender estan dando frutos, gracias por tu colaboración....

Etiquetas: bucle, mysql, tablas
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:44.