PDA

Ver la Versión Completa : Arrays como Variables de Sesion


Alexis De la Cr
01-06-2006, 01:32:48
Estimados colegas del foro:

Aqui molestandolos con un problema que tengo. Requiero programar un carrito de compras, para ellos requiero utilizar un array como variable de seion. el problema es que por mas que intento introducir datos al arreglo no puedo hacerlo.


$_SESSION['id_carr'] = array();


$_SESSION['id_carr'][1] = $_GET['id'];//deseo que el arreglo empieze en 1 y no en cero



le buscado por varios metodos, pero nada de nada.

Quee stoy haciendo mal??

este tipo de carrito ya lo habia programado, pero haciendo session register(), y todo eso, pero el nuevo servidor no me acepta este tipo de programacion.

Gracias por la ayuda

Alexis de la Cruz
Puebla Mexico

roman
01-06-2006, 02:20:02
Si pones

$_SESSION['id_carr'] = array();

cada vez pues destruyes cualquier cosa que hayas tenido al sustituirlo por un nuevo arreglo.

// Saludos

Alexis De la Cr
01-06-2006, 06:21:10
Estimado Roman:

Claro que asi es, lo que tu dices, por eso antes de crear el arreglo verifico si existe dicha variable, te muestro el codigo original


if(!isset($id)){
session_register("id");
$id = array();}

if(isset($codigo)){if(empty($id)){$id[1] = $codigo;}
else {$id[] = $codigo;}
}



Desafortunadamente este codigo ya no trabaja correctamente en un servidor con una version php mas actualizada.

mi version del codigo actualizado es el siguiente


if (!isset($_SESSION['id_carrito'])) {$_SESSION['id_carrito'] = array();}
else{if (empty($_SESSION['id_carrito'])) {$_SESSION['id_carrito'][1] = $_GET['codigo'];}
else {$_SESSION['id_carrito'][] = $_GET['codigo'];}
}



La duda que tengo, es si es correca la forma de registrar una variable asi como de leerla y escribirla, porque si es asi, el error esta en otra parte entonces.

Gracias por la ayuda de antemano.

D-MO
01-06-2006, 06:28:29
Como recien hablabamos en este hilo (http://www.clubdelphi.com/foros/showthread.php?t=32155), en el que gracias a kayetano pude salir del apuro, si utilizas el arreglo $_SESSION, deberás olvidarte de session_register('variable'), pero debemos de iniciar siempre con session_start(), en tu segundo código no encuentro esta función, a no ser que la tengas mucho antes de el fragmento de código que colocaste y en este no se vea.

Saludos.

Alexis De la Cr
01-06-2006, 06:35:14
Estimado d-mo:

Te agradezco tu interes en mi problemilla. Efectivamente utilizo session_start() solo que al principio del codigo, aqui solo copie la parte de declarar las variables. Estoy, revisando otra mes mi codigo, espero que despues de 1 dia de no trabajar en el y ya con la cabeza mas fria, puedo localizar el error.

D-MO
01-06-2006, 06:47:51
Pues la verdad que ya me imaginaba que estuvieras haciendo uso de esta función, solo que no queria quedarme con la espina de no haberlo dicho.

Mi pregunta ahora es, ¿Por que los corchetes vacios al final del script?, ¿Que pretendes lograr con ellos?

Se que en algun momento talvez he dicho algo tonto pero acá ya es media noche y sigo trabajando, asi que cualquier cosa solo dimelo ok;).

Saludos.

Emilio
01-06-2006, 07:40:48
La duda que tengo, es si es correca la forma de registrar una variable asi como de leerla y escribirla, porque si es asi, el error esta en otra parte entonces.

En principio ese código se ve bien, posiblemente te viene de otro lado.

Haz un print_r($carrito) igual te ayuda meter algún chivato.

Mi pregunta ahora es, ¿Por que los corchetes vacios al final del script?, ¿Que pretendes lograr con ellos?

Para incrementar el array, si todavia no tiene elelemtos empezará en cero, por tanto será lo mis hacer...


$a[0] = 'CERO';
// que esto otro
$a[] = 'CERO';

// Más claro con esto...
for ($i = 0; $i = 24; $i++) {
$a[]='Posición: '.$i;
echo $a[$i];
}

D-MO
01-06-2006, 07:46:20
10-4 Emilio.
:cool:

roman
01-06-2006, 17:32:27
Efectivamente utilizo session_start() solo que al principio del codigo, aqui solo copie la parte de declarar las variables.

Sí, pero lo que te dice D-MO y te lo repito yo, es que no mezcles session_register con $_SESSION. Aun cuando no sea esta la fuente exacta del problema, évitate dolores posteriores de cabeza. Si usas el arreglo $_SESSION- y es lo recomendable -no uses session_register.

// Saludos

Emilio
01-06-2006, 22:37:14
10-4 Emilio.
:cool:


No caigo :confused:

Mejor me lo explicas.

D-MO
01-06-2006, 23:10:06
No caigo :confused:

Mejor me lo explicas.
Pues la verdad nunca he sido bueno para explicar:D pero aqui voy,

10-4 es algo asi como una clave (por llamarlo de ese modo) que usan los policias al recibir una indicacion por medio de radiotransmisores para indicar que han comprendido y recibido la información.

Saludos.

Alexis De la Cr
02-06-2006, 00:43:12
Estimados Colegas:

Reciban un Cordial Saludo y mi agradecimiento por contestar. Finalmente encontre el error, el codigo esta bien, el problema fue un misero y detestable error de dedo. Despues de descansar todo un dia, ya con la cabeza fria, pude descubrir el bendito error, y todo funciona ya correctamente.

Gracias Amigos!

Emilio
02-06-2006, 01:47:54
Sería interesante para todos y para finalizar el hilo en condiciones, que dijeses cual era el error y la forma en que lo solucionaste

De paso pega un vistazo a la guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).

Alexis De la Cr
02-06-2006, 22:09:26
Bueno, como les comente fue un error de dedo lo que me generaba el problema


if (!isset($_SESSION['id_carrto'])) {$_SESSION['id_carrito'] = array();}
else{if (empty($_SESSION['id_carrito'])) {$_SESSION['id_carrito'][1] = $_GET['codigo'];}
else {$_SESSION['id_carrito'][] = $_GET['codigo'];}
}



la primera instruccion verifica que no exista la variable id_carrito, que es un array, si no existe, entonces la crea. el error de dedo esta en esa primera instruccion, que verificaba que no existiera la variable id_carrto (faltaba la i). Obviamente nunca existia y por lo tanto siempre estaba creando la variable id_carrito, de tal forma que se destruia cualquier dato que se hubiese instroducido. Ahi estaba el detalle, ahi estuvo todo el problema, pero no se si solo a mi me pasa, que aunque me esfuerzo por encontrar el error, nunca lo veo, hasta que me despejo totalmente de la cabeza.

Saludos Colegas y Amigos