elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Problema insert de datos en PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema insert de datos en PHP  (Leído 278 veces)
Victor26

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Problema insert de datos en PHP
« en: 8 Febrero 2020, 19:41 »

Buenas a todos, les pido el favor para una colaboracion para un tema que estoy haciendo y no se como solucionarlo.
ESTE ES EL INDEX:

Resulta que estoy realizando un formulario donde digito informacion acerca del usuario que voy a ingresar, el numero de factura, iva, fecha de creacion de la factura y fecha de entrega. Esa informacion no necesito repetirla, porque es unica.
Pero la informacion que tengo a la izquierda es el codigo y cantidad del producto que deseo anotar, Ahora.. Abajo tengo un boton llamado "+", el cual se encarga de cojer esos dos inputs del lado de la izquierda y repetirlos, para poder digitar otros codigos de productos, y todo eso me da normal...
El problema que veo es que al momento de yo mandar los datos a travez del boton "Submit", el los manda pero no se como hacer para que en el sistema del INSERT se pueda digitar las variables que ya estan asociadas (Numero de factura, Usuario, Iva, Fecha de Creacion y Entrega), con las que estoy repitiendo (Codigo y Cantidad).

PD: Ya encontre como mandar un grupo de array por php a mysql que seria asi
Código
  1. <?php
  2. include("../conexion_mysql.php");
  3. $numfact = $_POST['numfact'];
  4. $codigo  = $_POST['codigo'];
  5. $cantid  = $_POST['cantidad'];
  6. $usuari  = $_POST['user'];
  7. $iva = $_POST['iva'];
  8. $fc = $_POST['fc'];
  9. $fe = $_POST['fe'];
  10. $vtotal  = 0;
  11. $cadena  = "INSERT INTO factura (num_factura, codigo, usuario, cantidad, iva, fechacrea, fechaentre, vtotal) VALUES ";
  12.  
  13. for ($i=0; $i < count($codigo); $i++) {
  14. $cadena.= "(".$numfact[$i]."', '".$codigo[$i]."', '".$usuari[$i]."', '".$cantid[$i].",".$iva[$i]."', '".$fc[$i]."', '".$fe[$i]."', '".$vtotal[$i]."'),";
  15. }
  16.  
  17. echo json_encode(array('cadena' => $cadena));
  18. $cadena_final = substr($cadena, 0,-1);
  19. $cadena_final.=";";
  20. $sql = mysqli_query($conectar, $cadena_final);
  21. if ($sql) {
  22. header("location:index.php");
  23. }else {
  24. echo 'Error';
  25. }
  26. $mysqli = mysqli_close($conectar);
  27.  
  28. ?>

Pero ovbiamente al momento de mandar me sale un error que este.
Código:
<br />
<b>Notice</b>:  Trying to access array offset on value of type int in <b>/opt/lampp/htdocs/MiPagina/php/Facturacion/validarfactu.php</b> on line <b>15</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/lampp/htdocs/MiPagina/php/Facturacion/validarfactu.php</b> on line <b>15</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/lampp/htdocs/MiPagina/php/Facturacion/validarfactu.php</b> on line <b>15</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/lampp/htdocs/MiPagina/php/Facturacion/validarfactu.php</b> on line <b>15</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/lampp/htdocs/MiPagina/php/Facturacion/validarfactu.php</b> on line <b>15</b><br />
<br />
<b>Notice</b>:  Undefined offset: 1 in <b>/opt/lampp/htdocs/MiPagina/php/Facturacion/validarfactu.php</b> on line <b>15</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type int in <b>/opt/lampp/htdocs/MiPagina/php/Facturacion/validarfactu.php</b> on line <b>15</b><br />
{"cadena":"INSERT INTO factura (num_factura, codigo, usuario, cantidad, iva, fechacrea, fechaentre, vtotal) VALUES ('01', '1234', 'usuario', '5,5', '2020-02-08', '2020-02-20', ''),('', '1235', '', '6,', '', '', ''),"}

Utilizo Jquery por el metodo JSON para mandar los datos de html a php
el HTML es este:
Código
  1. <section class="cuerpo">
  2. <form method="POST" action="validarfactu.php" class="factura">
  3. <div class="container">
  4. <div class="row">
  5. <div class="col-12 col-sm-6">
  6. <br><label for="nf">Numero de Factura</label>
  7.    <br><input type="number" id="nf" name="numfact[]">
  8.    <br><label for="code">Cliente</label>
  9.    <br><select name="user[]">
  10.     <option>Seleccione el cliente</option>
  11.     <?php
  12.     $sql = "SELECT usuario FROM usuario";
  13.     $consulta = mysqli_query($conectar, $sql);
  14.     while ($mover = mysqli_fetch_array($consulta)){
  15.     ?>
  16.     <option value="<?php echo $mover['usuario']; ?>"><?php echo $mover['usuario']; ?></option>
  17.    <?php }?>
  18.    </select>
  19.    <br><label for="iva">IVA</label>
  20.    <br><input type="number" id="iva" name="iva[]">
  21.    <br><label for="fc">Fecha de Creacion</label>
  22.    <br><input type="date" id="fc" name="fc[]">
  23.    <br><label for="fe">Fecha de Entrega</label>
  24.    <br><input type="date" id="fe" name="fe[]">
  25. </div>
  26.  
  27. <div class="col-12 col-sm-6 repetido">
  28.    <label for="code">Codigo</label>
  29.    <br><input id="code" type="number" name="codigo[]">
  30.    <br><label for="cantidad">Cantidad</label>
  31.    <br><input type="number" id="cantidad" name="cantidad[]">
  32. </div>
  33.  <button type="submit" class="btn btn-primary submit">Submit</button>
  34. </div>
  35. </div>
  36. </form>
  37. <center><input type="submit" id="agregar" value="+"></center>
  38. </section

el Jquery
Código
  1. // CLONAR Y ELIMINAR INPUT
  2.  
  3. $(document).ready(function(e){
  4. // VARIABLES
  5. var html = '<center><div><label for="code">Codigo</label><br><input id="code" type="number" name="codigo[]"><br><label for="cantidad">Cantidad</label><br><input type="number" id="cantidad" name="cantidad[]"><br> <hr><button id="exit">X</button></div></center>';
  6. // CLONAR
  7. $("#agregar").click(function(){
  8. $(".repetido").append(html);
  9. });
  10. // ELIMINAR
  11. $(".repetido").on('click','#exit',function(){
  12. $(this).parent('div').remove();
  13. });
  14. });
  15.  
  16.  
  17.  
  18. // PETICION TIPO AJAX
  19.  
  20. jQuery(document).on('submit','.factura',function(event){
  21. event.preventDefault();
  22. jQuery.ajax({
  23. url: 'validarfactu.php',
  24. type: 'POST',
  25. dataType: 'json',
  26. data: $(this).serialize(),
  27. })
  28. .done(function(respuesta){
  29. console.log(respuesta);
  30. if(!respuesta.error) {
  31. alert("Los datos se ingresaron correctamente");
  32. }else {
  33. alert("Los datos NO se ingresaron correctamente");
  34. }
  35. })
  36. .fail(function(resp){
  37. console.log(resp.responseText);
  38. })
  39. .always(function(){
  40. console.log("complete");
  41. })
  42. });

Alguna persona que me pueda colaborar?, por favor gracias  :D


En línea

WHK
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.328


The Hacktivism is not a crime


Ver Perfil WWW
Re: Problema insert de datos en PHP
« Respuesta #1 en: 9 Febrero 2020, 01:32 »

El problema erstá acá:

Código:
for ($i=0; $i < count($codigo); $i++) {
$cadena.= "(".$numfact[$i]."', '".$codigo[$i]."', '".$usuari[$i]."', '".$cantid[$i].",".$iva[$i]."', '".$fc[$i]."', '".$fe[$i]."', '".$vtotal[$i]."'),";
}

Estás haciendo un for con una cantidad de vueltas igual a la longitud de $codigo, pero no todos los campos ingresados tienen la misma longitud, por lo cual cuando php intenta acceder al itemd e un array a traves del valor de $i este arroja un error porque el array no tiene esa cantidad de datos. Lo que no se sabe es cual de todos los datos exactamente no tiene la misma cantidad de registros, pero por otro lado tampoco tienes un control que indique que todos los arrays deben tener la misma cantidad de datos.

Haz algo, haz un print_r() a todos los datos antes de procesarlos y cuentalos. Tambien puedes probar con count($codigo)-1 ya que debes contar el valor 0 del array.

Saludos.


En línea

Telegram: @WHK102 - Semáforo Epidemiologico Chile
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con INSERT de MySQL
PHP
H4RR13R 5 2,303 Último mensaje 8 Febrero 2008, 00:17
por eLank0
Problema con insert de SQL en JAVA
Java
4815162342 2 6,594 Último mensaje 1 Octubre 2008, 03:48
por 4815162342
insert de de varios textbox auna base de datos
PHP
proteus8 0 966 Último mensaje 5 Febrero 2013, 20:50
por proteus8
Problema con el INSERT
Bases de Datos
yoelrodguez 1 859 Último mensaje 27 Junio 2014, 19:41
por #!drvy
problema con insert dinamico
Bases de Datos
d91 1 752 Último mensaje 5 Noviembre 2015, 14:26
por d91
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines