Foros del Web » Programando para Internet » PHP »

problema con session y arreglos

Estas en el tema de problema con session y arreglos en el foro de PHP en Foros del Web. Hola a todos, estoy teniendo un poblemita medio raro y que ya mi cabeza no encuentra solución jeje. Tengo este código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: ...
  #1 (permalink)  
Antiguo 16/05/2013, 16:42
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
problema con session y arreglos

Hola a todos,
estoy teniendo un poblemita medio raro y que ya mi cabeza no encuentra solución jeje.
Tengo este código:
Código PHP:
Ver original
  1. public function manos_agregar(){
  2.         $presupuesto = array();
  3.         $items = array();
  4.         $data =  array();
  5.  
  6.         $item = $this->mano->searchPk($this->uri->segment(3));
  7.  
  8.         $presupuesto = $this->session->userdata('presupuesto');
  9.  
  10.         $total_items = count($presupuesto['items']);
  11.  
  12.         if( $total_items != 0 ){
  13.             $item['item_id'] = $total_items + 1;
  14.         }
  15.         else{
  16.             $item['item_id'] = 1;
  17.         }
  18.  
  19.         $item['cantidad'] = 1;
  20.         $item['precio_o'] = $item['precio'];
  21.         //valido si tiene descuento y lo aplico al importe de la mano de obra
  22.         if($item['descuento']!=''){
  23.             $item['precio'] = $item['precio'] - ($item['precio']*$item['descuento']) / 100;
  24.         }
  25.         //agrego el item a la session
  26.  
  27.         array_push($presupuesto['items'],$item);
  28.         $this->session->set_userdata('presupuesto',$presupuesto);
  29.         $data['presupuesto'] = $presupuesto;
  30.  
  31.         echo $this->load->view('presupuestos/tabla_items',$data, true);
  32.     }

Esta funcion es llamada por ajax cada vez que agrego un nuevo item a una tabla html. La misma lo que hace es bucar un valor en la base de datos y despues agregarlo al array de session $presupuesto['items'].

El error o la cosa extraña que esta pasando es que cuando tengo 3 elementos en el arreglo y quiero agregar uno mas este no se agrega sino que sobreescribe el último indice del arreglo, manteniendo siempre la cantidad de 3 indices.

La verdad que probe de todo y no logro dar con la solución, alguien me podra dar una mano.
Desde ya muchas gracias!
  #2 (permalink)  
Antiguo 17/05/2013, 00:32
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: problema con session y arreglos

Comprueba esta linea:
$item = $this->mano->searchPk($this->uri->segment(3));
y además el resultado que devuelve array_push().
Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 17/05/2013, 11:39
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
Respuesta: problema con session y arreglos

Cita:
Iniciado por repara2 Ver Mensaje
Comprueba esta linea:
$item = $this->mano->searchPk($this->uri->segment(3));
y además el resultado que devuelve array_push().
Salu2
ya lo comprobe previamente de escribir el post
$item = $this->mano->searchPk($this->uri->segment(3));
me devuelve el registro de la base de datos.
Y el array_push hasta cuando agrego un tercer item a la tabla me lo devuelve bien, pero al querer agregar un cuarto item no lo hace sino que lo reemplaza por ello me llama la atencion.

antes del array push tengo esto cuando agrego un tercer elemento:
Cita:
array(
['nro'] =>
1
['items'] =>
array(

[0] =>
array(

['mano_id'] =>
7
['parent_id'] =>
4
['nombre'] =>
'Electricidad Industrial'
['texto'] =>
['precio'] =>
1500
['impuesto'] =>
0.00
['descuento'] =>
0.00
['estado'] =>
0
['item_id'] =>
1
['cantidad'] =>
1
['precio_o'] =>
1500
)
[1] =>
array(

['mano_id'] =>
5
['parent_id'] =>
1
['nombre'] =>
'Cloacas'
['texto'] =>
['precio'] =>
495
['impuesto'] =>
0.00
['descuento'] =>
1.00
['estado'] =>
0
['item_id'] =>
2
['cantidad'] =>
1
['precio_o'] =>
500
)
)
)
y despues de del array_push agrega el tercer elemento:
Cita:
array(
[0] =>
array(

['mano_id'] =>
7
['parent_id'] =>
4
['nombre'] =>
'Electricidad Industrial'
['texto'] =>
['precio'] =>
1500
['impuesto'] =>
0.00
['descuento'] =>
0.00
['estado'] =>
0
['item_id'] =>
1
['cantidad'] =>
1
['precio_o'] =>
1500
)
[1] =>
array(

['mano_id'] =>
5
['parent_id'] =>
1
['nombre'] =>
'Cloacas'
['texto'] =>
['precio'] =>
495
['impuesto'] =>
0.00
['descuento'] =>
1.00
['estado'] =>
0
['item_id'] =>
2
['cantidad'] =>
1
['precio_o'] =>
500
)
[2] =>
array(

['mano_id'] =>
6
['parent_id'] =>
2
['nombre'] =>
'Plomeria de Altura'
['texto'] =>
['precio'] =>
150
['impuesto'] =>
10.00
['descuento'] =>
0.00
['estado'] =>
0
['item_id'] =>
3
['cantidad'] =>
1
['precio_o'] =>
150
)
)
ahora agrego un cuarto elemento y antes del push sale:
Cita:
['items'] =>
array(

[0] =>
array(

['mano_id'] =>
7
['parent_id'] =>
4
['nombre'] =>
'Electricidad Industrial'
['texto'] =>
['precio'] =>
1500
['impuesto'] =>
0.00
['descuento'] =>
0.00
['estado'] =>
0
['item_id'] =>
1
['cantidad'] =>
1
['precio_o'] =>
1500
)
[1] =>
array(

['mano_id'] =>
5
['parent_id'] =>
1
['nombre'] =>
'Cloacas'
['texto'] =>
['precio'] =>
495
['impuesto'] =>
0.00
['descuento'] =>
1.00
['estado'] =>
0
['item_id'] =>
2
['cantidad'] =>
1
['precio_o'] =>
500
)
)
y despues del push me pone:
Cita:
array(
[0] =>
array(

['mano_id'] =>
7
['parent_id'] =>
4
['nombre'] =>
'Electricidad Industrial'
['texto'] =>
['precio'] =>
1500
['impuesto'] =>
0.00
['descuento'] =>
0.00
['estado'] =>
0
['item_id'] =>
1
['cantidad'] =>
1
['precio_o'] =>
1500
)
[1] =>
array(

['mano_id'] =>
5
['parent_id'] =>
1
['nombre'] =>
'Cloacas'
['texto'] =>
['precio'] =>
495
['impuesto'] =>
0.00
['descuento'] =>
1.00
['estado'] =>
0
['item_id'] =>
2
['cantidad'] =>
1
['precio_o'] =>
500
)
[2] =>
array(

['mano_id'] =>
3
['parent_id'] =>
2
['nombre'] =>
'Plomeria centrifugada'
['texto'] =>
['precio'] =>
225
['impuesto'] =>
0.00
['descuento'] =>
10.00
['estado'] =>
0
['item_id'] =>
3
['cantidad'] =>
1
['precio_o'] =>
250
)
)
  #4 (permalink)  
Antiguo 17/05/2013, 23:50
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: problema con session y arreglos

No creo que array_push sirva para arrays asociativos como los que usas tú, por eso cambia la estructura y pierdes elementos. Deberás utilizar la sintaxix [] para estar seguro, comprueba el manual. Salu2
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: arreglos, html, session, 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 00:02.