Foros del Web » Programando para Internet » PHP »

Problemas con inserción de datos dinamicos

Estas en el tema de Problemas con inserción de datos dinamicos en el foro de PHP en Foros del Web. Buenos dias a todos, tengo algunas sesiones que necesito insertar el contenido de ellas en una tabla de la base de datos, imprimiendo las sesiones, ...
  #1 (permalink)  
Antiguo 25/07/2014, 10:25
 
Fecha de Ingreso: febrero-2009
Mensajes: 32
Antigüedad: 15 años, 2 meses
Puntos: 0
Busqueda Problemas con inserción de datos dinamicos

Buenos dias a todos, tengo algunas sesiones que necesito insertar el contenido de ellas en una tabla de la base de datos, imprimiendo las sesiones, les muestro el contenido de las mismas:
Código:
Array ([id] => 1 [login] => tholin [contar] => 2
       [liquidar] => Array ( [0] => 1 [1] => 2 )
       [liqcantidad] => Array ( [0] => 50 [1] => 75 )
       [lfinicio] => Array ( [0] => 150 [1] => 125 )
       [lffinal] => Array ( [0] => 200 [1] => 200 ) )
como podran observar recibo esos valores por medio de un array, y esos mismos valores necesito realizar un insert en mi bd por medio del siguiente codigo

Código PHP:
Ver original
  1. for ($i=0; $i < $_SESSION['contar']; $i++) {
  2.             $sql="insert into liquidar values (NULL, '".$_SESSION['id_dotacion']."', '".$_SESSION['liquidar'][$i]."', '".$_SESSION['lfinicio'][$i]."','".$_SESSION['lffinal'][$i]."','".$_SESSION['liqcantidad'][$i]."')";
  3.          
  4.            //echo $sql;exit;
  5.             $res=mysqli_query($conexion, $sql)or die(mysql_error());

el problema aqui es que a la hora de hacer el insert into solo hace la insercion con el primer indice y los demas indices no los refleja

alguien podria ayudarme por favor

Última edición por Triby; 25/07/2014 a las 17:00 Razón: Código en highlight
  #2 (permalink)  
Antiguo 25/07/2014, 17:17
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Problemas con inserción de datos dinamicos

lo que se inserta como NULL permite NULL?
o es un autoincrement?
  #3 (permalink)  
Antiguo 26/07/2014, 00:02
 
Fecha de Ingreso: febrero-2009
Mensajes: 32
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problemas con inserción de datos dinamicos

es autoincrementable y si permite null
  #4 (permalink)  
Antiguo 26/07/2014, 07:28
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 6 meses
Puntos: 38
Respuesta: Problemas con inserción de datos dinamicos

Hola, estoy escribiendo desde el móvil, luego si puedo miro de ponerte el código.
El problema esta en que estas haciendo arrays multidimensionales.
Entonces cuando haces el.for solo te accede al primer par valor de ese array.
Pra recuperar todos los valores que tienes en los arrays dentro de otros arrays tienes que poner otro for dentro.
Un saludo!
  #5 (permalink)  
Antiguo 26/07/2014, 08:54
 
Fecha de Ingreso: febrero-2009
Mensajes: 32
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problemas con inserción de datos dinamicos

gracias por la molestia, seguire buscando posbiles soluciones y cualquier ayuda bienvenida
  #6 (permalink)  
Antiguo 26/07/2014, 08:57
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Problemas con inserción de datos dinamicos

ya te atudamos pero no respondiste a ninguna
  #7 (permalink)  
Antiguo 26/07/2014, 11:05
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 6 meses
Puntos: 38
Respuesta: Problemas con inserción de datos dinamicos

Cita:
Iniciado por israel_u Ver Mensaje
gracias por la molestia, seguire buscando posbiles soluciones y cualquier ayuda bienvenida
A ver me lo estoy volviendo a mirar .. y a parte de lo que te dije .. ( que debes recorrer con un for dentro de otro for para recorrer los arrays multidimiensionales ) me estoy dando cuenta que tienes un problema de diseño en la lógica :

Código PHP:
Ver original
  1. $sql="insert into liquidar values (NULL, '".$_SESSION['id_dotacion']."', '".$_SESSION['liquidar'][$i]."', '".$_SESSION['lfinicio'][$i]."','".$_SESSION['lffinal'][$i]."','".$_SESSION['liqcantidad'][$i]."')";

En el supuesto que recorrieras bien el array , esto nunca iría bien!

Porque solo puedes insertar 1 valor por cada row en tu bd ...

Esta claro que se puede concatenar ... pero eso ya depende de los usos que requieras de la info en tu bd.

Así .. que tomate un respiro y planifica que necesitas insertar exactamente , prepara la bd, define un algoritmo sencillo de: que quieres hacer y como.
Te ayudamos , pero debes planificarlo antes , porque si no así nunca lo solucionaras.

Un saludo!
  #8 (permalink)  
Antiguo 26/07/2014, 13:24
 
Fecha de Ingreso: febrero-2009
Mensajes: 32
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problemas con inserción de datos dinamicos

Muy bien, te explico desde el principio en la primera parte de proyecto realizo esta misma acción pero desde cero, es decir, yo creo un pedido y se lo entrego a x persona, x persona sale a venderlo en su turno y cuando regresa, ciertos productos ya los vendio, por lo que solo editar este pedido y volver insertar en otra tabla con el mismo numero de pedido, mismas lineas de pedido, y logicamente lo que cambiaria seria la cantidad de producto que en base a un algoritmo que tengo, me arroja las cantidades que pongo como ejemplo al principio del post, la unica diferencia que hay en este algoritmo es que esta parte es una actualizacion del pedido ya entregado, y que los datos los tomo de mi tabla pedido de la bd, por lo demas todo es exactamente igual, de hecho tengo una tabla donde inserto lineas de pedido con esa query y obtengo lo siguiente


asi es como lo inserta en la primera parte, y asi es como necesito insertarlo en esta segunda parte, y siendo repetitivo, los datos de esta segunda parte son recuperados de esa tabla que te muestro.

ojala
  #9 (permalink)  
Antiguo 26/07/2014, 13:51
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 6 meses
Puntos: 38
Respuesta: Problemas con inserción de datos dinamicos

Perdona pero estoy espeso ...

A ver :

Cita:
, yo creo un pedido y se lo entrego a x persona, x persona sale a venderlo en su turno
Entonces la foto que adjuntas es la tabla pedidos . No ?

Cita:
y cuando regresa, ciertos productos ya los vendio, por lo que solo editar este pedido y volver insertar en otra tabla con el mismo numero de pedido,
Ok
como es la otra tabla?

Cita:
y logicamente lo que cambiaria seria la cantidad de producto
en la misma tabla pedidos no?

Cita:
de hecho tengo una tabla donde inserto lineas de pedido con esa query y obtengo lo siguiente

el problema aqui es que a la hora de hacer el insert into solo hace la insercion con el primer indice y los demas indices no los refleja
A que indice te refieres? a que hace solo una vuelta de for ?? o que
cuando llega aquí :
Código PHP:
Ver original
  1. [liqcantidad] => Array ( [0] => 50 [1] => 75 )

solo te muestra el valor del primer indice?

Te explico :

con :
Código PHP:
Ver original
  1. .$_SESSION['liquidar'][$i].
siempre te dará el el primer valor porque $i vale lo que valga
Código PHP:
Ver original
  1. $_SESSION['contar'];
pero si haces :
Código PHP:
Ver original
  1. .$_SESSION['liquidar'][$i][0]. = te dara el primer valor
  2. .$_SESSION['liquidar'][$i][1]. = te dara el segudo valor
  3. .$_SESSION['liquidar'][$i][2]. = te dara el  tercer valor

Es por eso que te digo que como vas a insertar en el mismo campo 3 valores??

Saludos!

Última edición por Djoaq; 26/07/2014 a las 14:11 Razón: amplio info!
  #10 (permalink)  
Antiguo 26/07/2014, 21:38
 
Fecha de Ingreso: febrero-2009
Mensajes: 32
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problemas con inserción de datos dinamicos

Respuesta a primer pregunta es no, la tabla que muestro es lineas_pedidos ya que la tabla pedidos me guarda informacion del pedido como numero de pedido, quien entrego el pedido, quien lo recibe, la fecha y el valor del pedido.

Respuesta a segunda pregunta es la otra tabla es exactamente la misma solo le incluyo la letra "L" en minuscula para que no se llamen igual los mismos campos y cambio el nombre de la tabla de lineas_pedidos a liq_lineas_pedidos

Respuesta a pregunta tres la tabla pedidos no aplica en este momento ya que la que estamos afectando es la tabla liq_lineas_pedidos

Respuesta a pregunta cuatro en la siguiente respuesta si observamos el inicio de este post muestro las diferentes sesiones que recibo asi como su contenido que es el siguiente:
Código PHP:
Array ([id] => [login] => tholin [contar] => 2
       
[liquidar] => Array ( [0] => [1] => )
       [
liqcantidad] => Array ( [0] => 50 [1] => 75 )
       [
lfinicio] => Array ( [0] => 150 [1] => 125 )
       [
lffinal] => Array ( [0] => 200 [1] => 200 ) ) 
Respuesta a pregunta cinco es que solo inserta el indice con el valor cero de cada una de las sesiones que en ese momento requiero introducir a mi tabla
Código PHP:
Array ([id] => [login] => tholin [contar] => 2
       
[liquidar] => Array ( [0] => 1  )
       [
liqcantidad] => Array ( [0] => 50 )
       [
lfinicio] => Array ( [0] => 150  )
       [
lffinal] => Array ( [0] => 200  ) ) 
[/PHP]

en cuanto a la ultima pregunta te explico que $i es la que incrementa por medio del for y de esa manera en la primera parte del proyecto logre insertarlo lo extraño y por algun motivo eso no me esta resultado
los indices con valor de 1 en adelante no se insertan en la tabla, si te das cuenta la tabla que te muestro se llama lineas_pedidos y se insertan los valores sin ningun problema y eso mismo quiero lograr en la tabla que se llamaria liq_lineas_pedidos, pogamos un ejemplo el de la tabla


Los lineas 1 y dos corresponden a una misma dotacion que es la 1 con dos tipos de boletos el de id 1 y el de id 2
El boleto id 1 tiene un folio inicial de 150 y un folio final de 200 entregado la cantidad de 50 boletos mismos que estan reflejados en el campo unidades
El boleto id 2 tiene el folio inicial de 100 y el folio final de 200 entregando la cantidad de 100 los cuales seran reflejados en el campo unidades

en mi segunda parte lo que busco es que la dotacion 1, recupero la informacion en una tabla entonces dependiendo de lo vendido serian los campos que afectarian, por decir:
del boleto id 1 me devuelven el folio inial 175 y sigue siendo el folio final 200 entonces la cantidad debera de cambiar a 25;
en el segundo indice me entregan el id 2 con folio inicial 125 y el final igual 200 entonces la cantidad es 75.

los campos marcados con negrita son los afectados y que deberan cambiar, y dependiendo de tantos tipos de boletos o id de boletos seran los renglones que se incrusten en la bd

que he logrado hasta ahorita: solo que se incruste el valor con el indice 0 o el primer renglon de cada una de las sesiones que necesito insertar en la bd

Ya en primera parte del proyecto se realizo la operacion bastante bien se insertaron la totalidad de los datos requeridos y cabe hacer mencion que estoy utilizando los mismos metodos para las inserciones,
  #11 (permalink)  
Antiguo 27/07/2014, 08:17
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 6 meses
Puntos: 38
Respuesta: Problemas con inserción de datos dinamicos

Si hago tantas preguntas es porque o no has explicado con detalle o no te he entendido bién, pretendo ayudarte :

Código PHP:
Ver original
  1. foreach ($_SESSION['contar'] as $idSession) {
  2.     foreach ($idSession as $datosDeSession) {
  3.         echo "idSession : ". $idSession."  DatosDeSessión :".$datosDeSession;
  4.            //haces el insert!
  5.     }
  6. }
  #12 (permalink)  
Antiguo 27/07/2014, 13:34
 
Fecha de Ingreso: febrero-2009
Mensajes: 32
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problemas con inserción de datos dinamicos

No te preocupes Djoaq, aqui el interesado soy yo, y trato de ser lo más explicito adelante toda la información que se necesite, lo que pasa es que si tengo mas de dos semanas atorado con este problema y no lo he podido resolver, en cuanto al código que me proporcionas me dice que estoy tratando de recorrer un array vacio Warning: Invalid argument supplied for foreach() in , aqui es donde me desubico ya que si hago un print_r($_SESSION); me muestra
Código PHP:
Array ([id] => [login] => tholin [contar] => 2
       
[liquidar] => Array ( [0] => [1] => )
       [
liqcantidad] => Array ( [0] => 50 [1] => 75 )
       [
lfinicio] => Array ( [0] => 150 [1] => 125 )
       [
lffinal] => Array ( [0] => 200 [1] => 200 ) ) 
pero si realizo la inserción con el siguiente código solo se inserta los indices de cada sesión que tienen el valor 0

Código PHP:
for ($i=0$i $_SESSION['contar']; $i++) { 
            
$sql="insert into liquidar values (NULL, '".$_SESSION['id_dotacion']."', '".$_SESSION['liquidar'][$i]."', '".$_SESSION['lfinicio'][$i]."','".$_SESSION['lffinal'][$i]."','".$_SESSION['liqcantidad'][$i]."')";
          
           
//echo $sql;exit;
            
$res=mysqli_query($conexion$sql)or die(mysql_error());

y no realiza el recorrido para seguir insertando los demas indices
  #13 (permalink)  
Antiguo 27/07/2014, 13:44
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 6 meses
Puntos: 38
Respuesta: Problemas con inserción de datos dinamicos

Prueba esto a ver
Código PHP:

foreach $_SESSION as $indice) {
    foreach (
$indice as $valor) {
        echo 
"idSession : "$indice."  DatosDeSessión :".$valor;
           
//haces el insert!
    
}

Ya nos dices y si no funciona probamos otras soluciones
Saludos

Última edición por Djoaq; 01/08/2014 a las 03:03

Etiquetas: Ninguno
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:24.