Foros del Web » Programando para Internet » PHP »

carrito: datos de arrays por get

Estas en el tema de carrito: datos de arrays por get en el foro de PHP en Foros del Web. Buenas tardes, Tengo un pequeño inconveniente con los arrays; resulta que estoy intentando guardar varios datos en una misma variable, si los datos son introducidos ...
  #1 (permalink)  
Antiguo 21/11/2011, 11:08
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Pregunta carrito: datos de arrays por get

Buenas tardes,

Tengo un pequeño inconveniente con los arrays; resulta que estoy intentando guardar varios datos en una misma variable, si los datos son introducidos manualmente no tengo ningún inconveniente.

El problema se me presenta cuando dichos datos quiero agregarlos automáticamente, dependiendo del parámetro que pase por $_GET. Por ejemplo, get pasa dos parámetros para identificar el artículo (producto) y de ahí selecciono idproducto y lo agrego al array... pero solo me guarda el último, no encuentro manera de que vaya guardando los anteriores.

Con $_SESSION, puede que pueda hacerlo, pero así lo he intentado y nada. La otra manera que tengo es ir agregando cada artículo (producto) en la bd e irlos llamando de la bd, cada vez que los necesite.

Mi pregunta es: que me recomiendan, cual de las dos opciones planteadas? gracias de antemano.
  #2 (permalink)  
Antiguo 21/11/2011, 11:59
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: carrito: datos de arrays por get

seguramente el problema es el array se supone que si declaras un array

Código PHP:
Ver original
  1. $array = array();

y le agregas datos asi:

Código PHP:
Ver original
  1. $array[] = 'unvalor';
  2. $array[] = 'dosvalores';
  3. $array[] = 'tresvalores';
  4. $array[] = 'cuatrovalores';

este contendra todos esos datos si imprimes por ejemplo

Código PHP:
Ver original
  1. echo $array[0]

el resultado debe ser

unvalor

entonces quizas el problema puede ser en como añades datos a tu array y como lo lees.

puedes aplicarle un print_r para sbaer si lo haces bien.
  #3 (permalink)  
Antiguo 21/11/2011, 12:48
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: carrito: datos de arrays por get

fijate, estoy guardando los datos en el array de la siguiente manera

Código PHP:
    $datos= array( "idem" => $identificador "nombre" => "$nombreproducto");
$_SESSION['carrito'] = $datos

Guardo el array en la variable $datos. Luego, convierto esa variable en la variable de sesión. Ahora intento mostrar datos de la siguiente manera:

Código PHP:
echo "$_SESSION['carrito']" 
y me jala el siguiente error:

Código:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\crvstore\includes\carrito.php on line 10
paso el print_r y solo muestra el último resultado.

Para explicarme mejor, lo que quiero conseguir es guardar en una variable de sesión (array) la cantidad de artículos que el usuario agregue a su carrito de compra (solo dos datos: idproducto y nombre). El idproducto me ayudará a identificar el producto en la tabla y el nombre solo se mostrará en pantalla cuando el usuario quiera ver la totalidad de productos seleccionados en su carrito de compra.

Estoy trancado en la creación del array. Alguna idea?

Gracias de antemano.
  #4 (permalink)  
Antiguo 21/11/2011, 12:52
 
Fecha de Ingreso: agosto-2011
Ubicación: Montevideo
Mensajes: 44
Antigüedad: 13 años, 2 meses
Puntos: 5
Respuesta: carrito: datos de arrays por get

Yo la primera vez que quise hacer un carrito de compras me tropece exactamente con el mismo problema. Le di vueltas y vueltas y no encontre la forma.

Te recomiendo usar ajax (o no, pero queda mejor con ajax). E ir actualizando el carrito mediante get y guardar los datos en la base de datos con el ID de sesion del usuario. Entonces cuando el usuario se va o confirma la compra se borran los datos de la abse de datos de ese respectivo usuario y se borra la sesión.
  #5 (permalink)  
Antiguo 21/11/2011, 13:02
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: carrito: datos de arrays por get

Elfede171 Gracias por comentar.

Me agrada tu recomendación, pero seguiré intentando solucionarlo sin utilizar ajax. Nuevamente, gracias por comentar.
  #6 (permalink)  
Antiguo 21/11/2011, 13:24
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: carrito: datos de arrays por get

Pues claro que te da error

por que lo entrecomillas?

Código PHP:
Ver original
  1. echo $_SESSION['carrito'];

aparte eso te va a dovolver array.

estas convirtiendo a session en un array multidimensional.

por lo que debes pasar un segundo parámetro

Código PHP:
Ver original
  1. echo $_SESSION['carrito']['idem'];
  #7 (permalink)  
Antiguo 21/11/2011, 13:31
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: carrito: datos de arrays por get

Si, exactamente de eso me di cuenta hace unos minutos. Pero sigue mostrando un solo valor, el último que le mando. Es decir, no guarda los anteriores.
  #8 (permalink)  
Antiguo 21/11/2011, 13:33
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: carrito: datos de arrays por get

Para ser más específico, tengo el código de la siguiente manera:

Código PHP:
<?php 
session_start
();
include 
'../coneccion/coneccion.php';
if(isset(
$_SESSION["email"]))
{
    
$numero 1;
    
$nombreproducto $_GET['n'];
    
$identificador $_GET['i'];
    
$datos = array( "idem" => $identificador "nombre" => "$nombreproducto");
    
$_SESSION['carrito'.$numero] = $datos;
    echo 
$_SESSION['carrito'.$numero]['idem'];
    echo 
$_SESSION['carrito'.$numero]['nombre'];
    
print_r($_SESSION['carrito'.$numero]);
    
$numero += 1;
}
?>
El problema: solo muestra el último dato. No guarda los anteriores.
  #9 (permalink)  
Antiguo 21/11/2011, 13:55
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: carrito: datos de arrays por get

cual es el ultimo dato y que esperas obtener?

al pasarle valores y hacerle un print_r a tu código me devuelve esto:
Cita:
Array ( [idem] => 3 [nombre] => juan )
  #10 (permalink)  
Antiguo 21/11/2011, 14:05
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: carrito: datos de arrays por get

Eso es precisamente lo que obtengo del array. El print_r es solo de prueba. Cuando paso el

Código PHP:
    echo $_SESSION['carrito'.$numero]['idem']; 
    echo 
$_SESSION['carrito'.$numero]['nombre']; 
Me devuelve el nombre e identificador del último elemento que se ejecuto por GET. Que quiero obtener? bueno, guardar todos los valores que pasen por get en el array: $_SESSION['carrito']
  #11 (permalink)  
Antiguo 21/11/2011, 14:22
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: carrito: datos de arrays por get



necesitas un array tridimensional

Código PHP:
Ver original
  1. <?php
  2. $datos = array(
  3.     "idem" => '30',
  4.     "nombre" => 'Secadora',
  5. );
  6. $_SESSION['carrito'][1] = $datos;
  7. $datos = array(
  8.     "idem" => '15',
  9.     "nombre" => 'Mostaza',
  10. );
  11. $_SESSION['carrito'][2] = $datos;
  12. ?>
  13. <pre>
  14. <?php
  15. print_r($_SESSION['carrito']);
  16. ?>
  17. </pre>

la primera dimension es carrito el cual abarca todo

la segunda es el numero del producto

la tercera contien la info del producto

si quieres conocer el id del producto 3

Código PHP:
Ver original
  1. echo $_SESSION['carrito'][3]['idem']
  #12 (permalink)  
Antiguo 21/11/2011, 15:00
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: carrito: datos de arrays por get

Ya lo voy captando!

Gracias memoadian

Etiquetas: arrays, carrito
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 04:45.