Foros del Web » Programando para Internet » PHP »

De arrays y sesiones

Estas en el tema de De arrays y sesiones en el foro de PHP en Foros del Web. Hola a todos; No tengo demasiada idea de matrices (aunque estoy en ello) y trato de hacer una tienda virtual. El problema es el siguiente: ...
  #1 (permalink)  
Antiguo 26/05/2003, 10:24
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 21 años, 10 meses
Puntos: 0
De arrays y sesiones

Hola a todos;

No tengo demasiada idea de matrices (aunque estoy en ello) y trato de hacer una tienda virtual.

El problema es el siguiente:

Tengo un formulario con los campos: marca, modelo, pais, año.

<INPUT NAME='marca' TYPE='Text' value=''>
<INPUT NAME='modelo' TYPE='Text' value=''>
<INPUT NAME='pais' TYPE='Text' value=''>
<INPUT NAME='año' TYPE='Text' value=''>

Esto se manda a un archivo que guarda las variables en la sesión del siguiente modo:

<?php session_start
$marca_ses="$marca";
session_register('marca_ses');
$modelo_ses[$i]="$modelo";
session_register('modelo_ses');
$pais_ses[$i]="$pais";
session_register('pais_ses');
$año_ses[$i]="$año";
session_register('año_ses');
?>

Y claro está, cuando el usuario manda un formulario va de maravilla, pero cuando lo vuelve a mandar para hacer otro pedido (seguidamente se entiende) lo que pasa es que se los nuevos datos se superponen a los anteriores.

Tengo que usar arrays, pero no sé muy bien como hacerlo en este caso, ya que en los resultados en vez de aparecerme el dato me pone "array".

¿Pueden echarme una mano?

Gracias
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #2 (permalink)  
Antiguo 26/05/2003, 16:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usa un array bidimensional (matriz) tipo:

$carrito[$item]['marca']=$marca;
$carrito[$item]['modelo']=$modelo;
$carrito[$item]['pais']=$pais;
$carrito[$item]['year']=$year;

(lo del year es para no usar Ñ como nombre de variables .. La verdad que no sé porqué te funciona .. pero no es recomendable usar caracteres acentuados ni Ñ entre otros como nombres de variables ..)

La variable $item .. es la que identifica el "item" de tu carrito de compra. Eso (esa variable) has de enviarsela desde tu formulario según el item que modifique o actualice para que corresponda ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 26/05/2003, 19:01
 
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 85
Antigüedad: 21 años, 1 mes
Puntos: 2
Primero te diria que revisaras el valor de la variable $i .. me tinca que inconcientemente estas reemplazando el mismo *casillero* del array

....en vez de ponerle un indice prueba usando...
$modelo_ses[]="$modelo";
session_register('modelo_ses');
$pais_ses[]="$pais";
session_register('pais_ses');
$año_ses[]="$año";
session_register('año_ses');

*Aqui viene la Recomendacion de Usar $_SESSION*

Saludos!
__________________
http://www.zypper.cl/blues.gif
(web-hosting)

  #4 (permalink)  
Antiguo 26/05/2003, 20:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Una definicion de un array via $nombre[] .. tomará como indice autoincremental partiendo desde cero .. cada vez que se llame a dicha array ($nombre[] ) ..

Pero, si está haciendo "recargas" de página para que tome los valores de su formulario .. siempre va a ser definido el indice [0] de sus arrays ..

Lo que no se vé en el código de muestra que puso es que valor le dá a $i (su indice de sus arrays ) .. Por eso ya comenté que ese "indice" ha de ser generado en tu formulario para que se lo propagues junto con el resto de datos ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 27/05/2003, 06:00
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 21 años, 10 meses
Puntos: 0
Veamos, el código que tengo es + o - el siguiente:

session_start();

$marca_ses="$marca";
session_register('marca_ses');
$modelo_ses="$modelo";
session_register('modelo_ses');
$carroceria_ses="$carroceria";
session_register('carroceria_ses');
...

(sin el [$i]), hasta aquí todo funciona.

Ahora me encuentro con el problema que les comenté, si el usuario quiere rellenar de nuevo el mismo form para añadir otro pedido, lo que ocurre es que me actualiza las variables de sesión (obviamente).
Y entonces pienso en hacer lo siguiente:

Código PHP:
//cuento cuantas variables hay metidas en la variable de sesion 
//$marca_ses (por contar alguna de las variables)
$contador=count($marca_ses);
$contador++;
$marca_ses[$contador]="$marca";
session_register('marca_ses');
$modelo_ses[$contador]="$modelo";
session_register('modelo_ses'); 
Pero ya con la primera vez que envío el formulario los datos obtenidos no aparecen, estando en su lugar la palabra "array"

¿Que hago mal?

¿El problema puede estar a la hora de leer los arrays?

Ya lo conseguí!!!

El problema estaba al leer los arrays... tenía un lío encima... no sabía que tenía que hacer un bucle con el "for".

Muchas gracias a todos
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.

Última edición por ferent; 27/05/2003 a las 06:00
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 18:00.