Foros del Web » Programando para Internet » PHP »

Php Insertar Objetos de Arrays en Tabla de Mysql

Estas en el tema de Php Insertar Objetos de Arrays en Tabla de Mysql en el foro de PHP en Foros del Web. - Buenas a todos tengo problema con los Arrays espero alguien pueda iluminarme... Bueno tengo un formulario donde sus campos se cargan dinamicamente ( los ...
  #1 (permalink)  
Antiguo 04/10/2016, 16:57
 
Fecha de Ingreso: marzo-2013
Mensajes: 32
Antigüedad: 11 años
Puntos: 0
Php Insertar Objetos de Arrays en Tabla de Mysql

- Buenas a todos tengo problema con los Arrays espero alguien pueda iluminarme... Bueno tengo un formulario donde sus campos se cargan dinamicamente ( los Tr, Td e Input) insertando en los input resultados obtenidos de una BD.



- Hay todo bien, pero yo estoy intentando hacer una especie de registro de compra ya sea para luego imprimir nuevamente el Ticket o comprobante de compra, para ver el registro en pantalla de las compras del dia o para exportarlo a Excel. Donde esta mi problema? pues que estoy intentando guardar todos esos datos en la BD y no he podido lograrlo.

- Los avances que logre fueron los siguientes cambien un poco la estructura de la tabla he inserte todo en un formulario quedando como la imagen anterior y en codigo asi.

Código HTML:
Ver original
  1. <tr>
  2.         <?php
  3.           foreach ((array)$pro as $fila):
  4.         ?> 
  5.             <td id="ver"></td>
  6.             <td>1</td>
  7.             <td><input class="cant" type="number" min="1" name="cant[]"></td>
  8.             <td><input type="text" class="product" name="product[]" value="<?php echo $fila['producto'];?>" style="border: none;text-align: center"></td>
  9.             <td class="marc"><input type="text" name="marc[]" value="<?php echo $fila['marca'];?>" style="border: none;text-align: center"></td>
  10.             <td class="preci"><input type="text" name="preci[]" class="precio" value="<?php echo $fila['precio'];?>" style="border: none;text-align: center"></td>
  11.             <td ><input type="text" name="importe[]" class="importe" value="" style="border: none;text-align: center"></td>
  12.             <td><button class="btn btn-danger fa fa-times drop" type="reset"></button></td>
  13.             <td><input class="subtotal" type="hidden" name="subtotal[]" value="0"></td>
  14.         <?php
  15.          endforeach;
  16.         ?>
  17.     </tr>


- Eso se inserta aqui a traves de una funcion en Jquery.
Código HTML:
Ver original
  1. <form id="form_form">
  2.                                 <table class="table text-center table-hover table-reflow">
  3.                                   <thead>
  4.                                     <tr>
  5.                                     <th class="text-center"></th>
  6.                                       <th class="text-center">ITEM</th>
  7.                                       <th class="text-center">Cant.</th>
  8.                                       <th class="text-center">Producto</th>
  9.                                       <th class="text-center">Marca</th>
  10.                                       <th class="text-center">Precio</th>
  11.                                       <th class="text-center">Importe</th>
  12.                                       <th class="text-center">Trash</th>
  13.                                     </tr>
  14.                                   </thead>
  15.                                     <tbody id="resulsetp">
  16.                                       <!--
  17.                                         SE SUPONE QUE AQUI VAN A CAER LOS DATOS DE UN FOREACH TRAIDOS DESDE UN AJAX
  18.                                         Y TODO LO DEMAS EN CADA TD PARA ASIGNAR LOS DATOS CORRESPONDIENTES
  19.                                         EN CADA ITERACION Y MAS O MENOS SE VERA ASI
  20.                                       -->
  21.                                     </tbody>
  22.                                 </table>
  23.                               </div>
  24.                             </form>


- Ok lo hice de ese modo porque vi unos ejemplos de .serialize() pero no pude encontrar alguno en el cual se creen campos dinamicos o como es la recepcion de los datos dinamicos en Php. Entonces del lado de php he intentado recibir estos datos de muchas formas pero solo logro obtener el primer elemento del array o serialize los envio a traves de un Ajax asi.

Código Javascript:
Ver original
  1. $('.genera').click(function(e){
  2.                 e.preventDefault();
  3.                 var selectic = $('.selectic').val();
  4.                 var selectpa = $('.selectpa').val();
  5.                 var serie_m = $('.serie-m').val();
  6.  
  7.                 if (selectic == '0' || selectpa == '0' || serie_m === '') {
  8.                     alert(" Por Favor Complete El Campo Faltante.");
  9.                 } else
  10.                     {  
  11.                         var dataString = $('#form_form').serialize();
  12.                        
  13.                         $.ajax({
  14.                             url: 'insprmtick.php',  
  15.                             type: 'POST',
  16.                             data: dataString,
  17.                             success: function(data){
  18.                                 if (data!="") {
  19.                                     $('#retick').hide().html(data).fadeToggle();
  20.                                 }
  21.                             },
  22.                         });
  23.                     }        
  24.             });


- Y estoy tratando de procesarlos con Php asi, intente primero imprimirlos a ver como se vea la informacion y obtuve lo siguiente.

Código PHP:
Ver original
  1. foreach($_POST as $posicion=>$valor) {
  2.      echo "<pre>";
  3.       print_r("El " . $posicion . " es: " . $valor[1]);
  4.     echo "</pre>";
  5.    }


- Eso me da esto. Osea solo el ultimo valor.



- Intente esto pero no quiero me lo exprese de esa forma.
Código PHP:
Ver original
  1. echo "<pre>";
  2.       print_r($_POST);
  3.     echo "</pre>";



- Ahora bien ni siquiera he intentado insertarlo en la BD porque si ni puedo imprimirlos como yo quiero no tiene caso tratar de insertarlos. Pero los Insert que suelo usar son de este tipo.

Código PHP:
Ver original
  1. public function inswinner($numeral, $interes)
  2.   {
  3.     $model = new Stock();
  4.     $conexion = $model->conec();
  5.     $sql = "INSERT INTO ganador VALUES('null','".$_POST['x']."','".$_POST['z']."','".$numeral."','".$interes."')";
  6.     $consulta = $conexion->prepare($sql);
  7.     $consulta->execute();
  8.   }


- Se agradece infinitimanete todo el conocimiento que puedan aprotarme. Saludos.
  #2 (permalink)  
Antiguo 04/10/2016, 22:23
 
Fecha de Ingreso: octubre-2013
Mensajes: 10
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Php Insertar Objetos de Arrays en Tabla de Mysql

Hola :D

Bueno mira podrías usar lo siguiente suponiendo que solo tuvieras el dato de count

Código PHP:
<?php
    $datos 
$_POST['cant'];
    
$i 0;
    foreach (
$datos as $encuentro) {
        
$cantidad $encuentro[$i];

        
$conecta_base = new mysqli(localhos,root,user,pass);
        
$script_inserta "INSERT INTO tabla(valor)VALUES('".$cantidad."')";
        if(
$ejecutar $conecta_base->query($script_inserta)){

        }else{

        } 

        
$i++;
    }
?>
Espero te sirva cualquier cosa manda un mensaje :D
  #3 (permalink)  
Antiguo 05/10/2016, 06:45
 
Fecha de Ingreso: marzo-2013
Mensajes: 32
Antigüedad: 11 años
Puntos: 0
Respuesta: Php Insertar Objetos de Arrays en Tabla de Mysql

- Buenos dias semplet3, gracias por responder intente usar tu codigo y me dio un error pero lo solucione agregandole a $encuentro un [$i] en el foreach me refiero a esta parte " foreach ($datos as $encuentro[$i])"... Pero eso eso me sa como dijiste los valores de cant unicamente y yo necesito todos los valores del formulario incluso de cada campo que se agregue dinamicamente... De igual forma muchas gracias.
  #4 (permalink)  
Antiguo 05/10/2016, 08:13
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Php Insertar Objetos de Arrays en Tabla de Mysql

Como la cantidad de datos es variable, te convendría utilizar una estructura cíclica para recorrer el array $_POST y elaborarías un grupo de datos que insertarías en la base de datos.

Por ejemplo:
Código PHP:
Ver original
  1. <?php
  2. $datos = [
  3.     'productos' => [
  4.         0 => 'Libro',
  5.         1 => 'Lápiz'
  6.     ],
  7.     'precios' => [
  8.         0 => 18.50,
  9.         1 => 7.35
  10.     ],
  11.     'cantidad' => [
  12.         0 => 5,
  13.         1 => 3
  14.     ]
  15. ];
  16.  
  17. $productos = $datos['productos'];
  18. $precios = $datos['precios'];
  19. $cantidad = $datos['cantidad'];
  20. $valores = [];
  21.  
  22. for ($i = 0, $l = count($productos); $i < $l; $i++){
  23.     $valores[] = "('" . $productos[$i] . "', " . $precios[$i] . ", " . $cantidad[$i] . ")";
  24. }
  25.  
  26. echo "INSERT INTO tblProductos (strProducto, floatPrecio, intCantidad) VALUES " . implode(', ', $valores);

Con lo cual, el resultado sería el siguiente:
Código HTML:
Ver original
  1. INSERT INTO tblProductos (strProducto, floatPrecio, intCantidad) VALUES ('Libro', 18.5, 5), ('Lápiz', 7.35, 3)

Como siempre habrá la misma cantidad de elementos por cada ítem, basta con que utilices el tamaño de uno de los arrays para recorrer a todos.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 05/10/2016, 12:08
 
Fecha de Ingreso: marzo-2013
Mensajes: 32
Antigüedad: 11 años
Puntos: 0
Respuesta: Php Insertar Objetos de Arrays en Tabla de Mysql

- Saludos Alexis88, con tu aporte creo que he avanzado en lo que queria pero ahora tengo un problema que no logro ver ni entender y es que los valores dinamicos gracias a ti ya los puedo imprimir como queria pero a la hora de insertarlos en la BD no se insertan. Te muestro lo que tengo, en un archivo proceso los datos serializados como sugeriste con un ligero cambio asi:

Código PHP:
Ver original
  1. require_once("php/clases/conexion/conexion.class.php");
  2.   require_once("php/fuction/class_crud.php");
  3.  
  4.     $cant = $_POST['cant'];
  5.     $product = $_POST['product'];
  6.     $marc = $_POST['marc'];
  7.     $valores = [];
  8.     $l = count($product);
  9.      
  10.     for ($i = 0; $i < $l; $i++){
  11.        $valores[] = "('" . $cant[$i] . "', " . $product[$i] . ", " . $marc[$i] . ")";
  12.     }
  13.        $modelo = new Crud();
  14.        $modelo->rventa($valores);

- Y en otro trato de insertarlos asi:
Código PHP:
Ver original
  1. public function rventa($valores)
  2.   {
  3.     $model = new Stock();
  4.     $conexion = $model->conec();
  5.     $sql = "INSERT INTO prueba (cant, product, marc) VALUES " . implode(', ', $valores);
  6.     var_dump($sql);
  7.     $consulta = $conexion->prepare($sql);
  8.     $consulta->execute();
  9.   }

- El var_dump me muestra lo siguiente:

Código HTML:
Ver original
  1. string 'INSERT INTO prueba (cant, product, marc) VALUES ('2', Aceite Vegetal, Carbonell)' (length=80)

- En la BD prueba solo tengo esos 3 campos unicamente como varchar de 45... Ahora duda, porque en lo que muestra el var_dump el primer elemento de los Values es el unico con comillas simples?... Espero puedas ayudarme.
  #6 (permalink)  
Antiguo 05/10/2016, 12:58
 
Fecha de Ingreso: marzo-2013
Mensajes: 32
Antigüedad: 11 años
Puntos: 0
Respuesta: Php Insertar Objetos de Arrays en Tabla de Mysql

- Alexis88 listo ya soluciones muchas gracias por ahora a ver si no tengo mas problemas jaja... El error era como pensaba en las comillas simples en el for que me pases lo tienes asi:

Código PHP:
Ver original
  1. for ($i = 0, $l = count($productos); $i < $l; $i++){
  2.     $valores[] = "('" . $productos[$i] . "', " . $precios[$i] . ", " . $cantidad[$i] . ")";
  3. }

- Y alli faltaban las comillas simples, solo tuve que agregarselas quedando asi y listo:

Código PHP:
Ver original
  1. for ($i = 0, $l = count($productos); $i < $l; $i++){
  2.     $valores[] = "('" . $productos[$i] . "', '" . $precios[$i] . "', '" . $cantidad[$i] . "')";
  3. }
  #7 (permalink)  
Antiguo 07/10/2016, 12:14
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Php Insertar Objetos de Arrays en Tabla de Mysql

Si necesitas comillas para almacenar valores numéricos, quiere decir que dichos campos en la BD han sido establecidos como VARCHAR o uno similar. Deberían ser de tipo numérico, como INT, DECIMAL, entre otros.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: arrays, formulario, html, mysql, objetos, registro, select, sql, tabla
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 06:13.