Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Arrays como Variables de Sesion (https://www.clubdelphi.com/foros/showthread.php?t=32263)

Alexis De la Cr 01-06-2006 01:32:48

Arrays como Variables de Sesion
 
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.

Código PHP:

$_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

Código PHP:

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

Código PHP:

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, 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

Cita:

Empezado por Alexis De la Cr
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.

Cita:

Empezado por D-MO
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...

Código PHP:

$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

Cita:

Empezado por Alexis De la Cr
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

Cita:

Empezado por D-MO
10-4 Emilio.
:cool:

No caigo :confused:

Mejor me lo explicas.

D-MO 01-06-2006 23:10:06

Cita:

Empezado por Emilio
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.

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

Código PHP:

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


La franja horaria es GMT +2. Ahora son las 16:01:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi