Foros del Web » Programando para Internet » PHP »

Como insertar varios array en una session

Estas en el tema de Como insertar varios array en una session en el foro de PHP en Foros del Web. Hola a todos, estoy trantado de hacer una especie de carrito de compras, cuando se da click a book now en alguno de nuestros productos ...
  #1 (permalink)  
Antiguo 04/07/2013, 12:27
 
Fecha de Ingreso: julio-2013
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 1
Pregunta Como insertar varios array en una session

Hola a todos, estoy trantado de hacer una especie de carrito de compras, cuando se da click a book now en alguno de nuestros productos (hotel, tour, circuito) tengo una función que se llama checkout se toma lo que viene por POST y se mete a una session, de la siguiente manera:

$info = array(
'id_room' => $id,
'rooms' => Yii::app()->session['hotel_data']["rooms"],
'checkin' => Yii::app()->session['hotel_data']["checkin"],
'checkout' => Yii::app()->session['hotel_data']["checkout"],
'adultos' => Yii::app()->session['hotel_data']["adults"],
'ninos' => Yii::app()->session['hotel_data']["kids"],
);

Yii::app()->session['Hotel'] = $info['hotel'];

Ahora bien necesito hacer que si quiere agregar otro hotel, tour o circuito lo meta dentro de su session, en este caso se llama session HOTEL, pero puede ser TOUR.

estoy intentando hacer lo siguiente:

$info['hotel'][] = array(
'id_room' => $id,
'rooms' => Yii::app()->session['hotel_data']["rooms"],
'checkin' => Yii::app()->session['hotel_data']["checkin"],
'checkout' => Yii::app()->session['hotel_data']["checkout"],
'adultos' => Yii::app()->session['hotel_data']["adults"],
'ninos' => Yii::app()->session['hotel_data']["kids"],
);

Yii::app()->session['Hotel'] = $info['hotel'];

pero no mete el nuevo array mas bien sobre escribe el existente.

alguien me podría indicar que es lo que tengo que hacer. Muchas Gracias
  #2 (permalink)  
Antiguo 04/07/2013, 13:44
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como insertar varios array en una session

lo hiciste al reves en vez de

$info['hotel'][]

deberia ser en la session

Código PHP:
Ver original
  1. $info = array(
  2. 'id_room' => $id,
  3. 'rooms' => Yii::app()->session['hotel_data']["rooms"],
  4. 'checkin' => Yii::app()->session['hotel_data']["checkin"],
  5. 'checkout' => Yii::app()->session['hotel_data']["checkout"],
  6. 'adultos' => Yii::app()->session['hotel_data']["adults"],
  7. 'ninos' => Yii::app()->session['hotel_data']["kids"],
  8. );
  9.  
  10. Yii::app()->session['Hotel'][] = $info['hotel'];
  #3 (permalink)  
Antiguo 05/07/2013, 09:39
 
Fecha de Ingreso: julio-2013
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 1
De acuerdo Respuesta: Como insertar varios array en una session

Muchas Gracias webankenovi, intente lo que me mencionaste pero aun así no insertaba el nuevo arreglo, despues de probar varias combinaciones y estudiar un poco más pude resolverlo de la siguiente manera. Agradezco la ayuda y seguimos al pendiente.

//Asignamos las parametros del formulario de busqueda a variables
$info = array(
'id_room' => $id,
'rooms' =>Yii::app()->session['hotel_data']["rooms"],
'checkin' =>Yii::app()->session['hotel_data']["checkin"],
'checkout' =>Yii::app()->session['hotel_data']["checkout"],
'adultos' =>Yii::app()->session['hotel_data']["adults"],
'ninos' =>Yii::app()->session['hotel_data']["kids"],
);
//Si existe la session HOTEL a $tmp le asignamos su valor o en su defecto FALSE
$tmp = (isset(Yii::app()->session['Hotel'] )) ? Yii::app()->session['Hotel'] : FALSE;

//Si existe o tiene valor $tmp hacemos un array_push del array existente con la nueva info y lo volvemos asignar a la session
if($tmp){
array_push($tmp, $info);
Yii::app()->session['Hotel'] = $tmp;
} else {
//Si no existe la creamos con el primer info
Yii::app()->session['Hotel'] = array($info);
}

Etiquetas: arrays, framework, session, yii
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:38.