Foros del Web » Programando para Internet » PHP »

Ayuda con carrito

Estas en el tema de Ayuda con carrito en el foro de PHP en Foros del Web. Miren tengo este script, lo encontre por el itnernet no recuerdo donde la cosa es que usando el METODO post estoy trayendo una ID de ...
  #1 (permalink)  
Antiguo 29/01/2010, 16:34
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Ayuda con carrito

Miren tengo este script, lo encontre por el itnernet no recuerdo donde la cosa es que usando el METODO post estoy trayendo una ID de otra pagina..... hasta ahi me funciona, el problema que el script esta hecho para traer todo los productos que hayan almacenados en una base de datos, y no va almacenando productos que se puedan ir agregando.....

Código PHP:
Ver original
  1. <?php
  2. ob_start("ob_gzhandler");
  3. //error_reporting(E_ALL);
  4. //@ini_set('display_errors', '1');
  5. //Las funciones ob_start y ob_end_flush te permiten escojer en qué momento enviar el resultado
  6. // de un script al navegador. Si no las utilizamos estamos
  7. //obligados a que nuestra primera línea de código sea session_start() u obtendremos un error
  8. //conectamos a la base de datos
  9. include("../db.php");
  10. $link=Conectarse();
  11.  
  12. //ID del POST
  13. $id = $_POST['id'];
  14. //rescatamos los valores guardados en la variable de sesión (si es que hay alguno, cosa que
  15. //comprobamos con isset) y los asignamos a $carro. Si no existen valores, ponemos a false el
  16. //valor de $carro
  17. if(isset($_SESSION['carro']))
  18. $carro=$_SESSION['carro'];else $carro=false;
  19.  
  20. //y hacemos la consulta
  21. $qry=mysql_query("select * from catalogo where id = $id",$link);
  22. ?>
  23. <html>
  24. <head>
  25. <title>Productos Seleccionados</title>
  26. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  27.  
  28. <link href="../css/catalogo.css" rel="stylesheet" type="text/css">
  29. </head>
  30. <body>
  31. <table width="80%" align="center" cellpadding="5" cellspacing="5" style="border: 1px solid #000000;">
  32.   <tr valign="middle" bordercolor="#FFFFFF" bgcolor="#DFDFDF" class="catalogo">
  33.     <td width="68"><strong>Imagen</strong></td>
  34.     <td width="513"><strong>Producto</strong></td>
  35.     <td width="124"><strong>Marca</strong></td>
  36.     <td width="109"><strong>Precio</strong></td>
  37.     <td width="102" align="left"><a href="vercarrito.php?<?php echo SID ?>" title="Ver el contenido del carrito"><img src="vercarrito.gif" width="25" height="21" border="0"></a></td>
  38.   </tr>
  39.   <?php
  40.  
  41.   $imagen= "../admin/productos/files/";
  42.   //mostramos todos nuestros artículos, viendo si han sido agregados o no a nuestro carro de compra
  43.   while($row=mysql_fetch_assoc($qry)){
  44.   ?>
  45.   <tr valign="middle" class="catalogo">
  46.    <td align="center"><img src="<?php echo $imagen.$row['img']?>" height="50" width="50" /></td>
  47.     <td><?php echo $row['titulo'] ?></td>
  48.     <td><?php echo $row['marca'] ?></td>
  49.     <td><?php echo $row['precio'] ?></td>
  50.     <td align="center"><?php
  51.     if(!$carro || !isset($carro[md5($row['id'])]['identificador']) || $carro[md5($row['id'])]['identificador']!=md5($row['id'])){
  52.     //si el producto no ha sido agregado, mostramos la imagen de no agregado, linkeada
  53.     // a nuestra página de agregar producto y transmitíéndole a dicha
  54.     //página el id del artículo y el identificador de la sesión
  55.     ?><a href="agregacar.php?<?php echo SID ?>&id=<?php echo $row['id']; ?>"><img src="productonoagregado.gif" border="0" title="Agregar al Carrito"></a><?php }
  56.     else
  57.     //en caso contrario mostramos la otra imagen linkeada., a la página que sirve para borrar el artículo del carro.
  58.     {?><a href="borracar.php?<?php echo SID ?>&id=<?php echo $row['id']; ?>"><img src="productoagregado.gif" border="0" title="Quitar del Carrito"></a><?php } ?></td>
  59.   </tr><?php } ?>
  60. </table>
  61. </body>
  62. </html>
  63. <?php
  64.  
  65. ?>

Espero su ayuda :D
  #2 (permalink)  
Antiguo 29/01/2010, 17:10
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 15 años, 4 meses
Puntos: 27
Respuesta: Ayuda con carrito

Imprime los datos del carro haber si realmente no te guarda o si esta mail hecho el if donde determinar si parece el link de agregar o qutar.
Código PHP:
# pones esto en para ver los datos de carrito antes de asignar la varible $carro.
echo "<hr><pre>";
print_r($_SESSION['carro']);
echo 
"</pre><hr>"
  #3 (permalink)  
Antiguo 30/01/2010, 12:25
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Ayuda con carrito

Miren les paso el link, http://peruguitar/tiendavirtual/ vallan donde dice celular y miren lo que pasa al dar click e comprar, se ALMACENA, pero SOLO uno.... y no puedo agregar mas articulos....

Última edición por HiToGoRoShi; 30/01/2010 a las 12:57
  #4 (permalink)  
Antiguo 30/01/2010, 12:56
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 8 meses
Puntos: 77
Respuesta: Ayuda con carrito

Ehh.. "localhost" es tu maquina.. no podemos verlo -.-
  #5 (permalink)  
Antiguo 30/01/2010, 12:58
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Ayuda con carrito

Cita:
Iniciado por darkasecas Ver Mensaje
Ehh.. "localhost" es tu maquina.. no podemos verlo -.-
jajaj me emocione este es el ink

http://peruguitar/tiendavirtual/
  #6 (permalink)  
Antiguo 30/01/2010, 13:06
Avatar de dasuve  
Fecha de Ingreso: marzo-2007
Ubicación: Gijón
Mensajes: 71
Antigüedad: 17 años, 8 meses
Puntos: 2
Respuesta: Ayuda con carrito

Oops! This link appears to be broken.
__________________
Novato hablando, corregir si es necesario...
  #7 (permalink)  
Antiguo 30/01/2010, 13:23
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Ayuda con carrito

AHHHHHHHHHHHHHHHHHHHH nose que me pasa, debe estar cansado ya... este es e link

http://peruguitar.net/tiendavirtual/
  #8 (permalink)  
Antiguo 30/01/2010, 15:40
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años, 6 meses
Puntos: 11
Respuesta: Ayuda con carrito

Hola

Qué hay en agregacar.php?
  #9 (permalink)  
Antiguo 30/01/2010, 16:20
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Ayuda con carrito

ahi va el codigo

Código PHP:
Ver original
  1. <?php
  2. ob_start("ob_gzhandler");
  3. //error_reporting(E_ALL);
  4. //@ini_set('display_errors', '1');
  5. //con session_start() creamos la sesión si no existe o la retomamos si ya ha sido creada
  6. extract($_REQUEST);
  7. //la función extract toma las claves de una matriz asoiativa y las convierte en nombres de variable,
  8. //asignándoles a esas variables valores iguales a los que tenía asociados en la matriz. Es decir, convierte a $_GET['id'] en $id,
  9. //sin que tengamos que tomarnos el trabajo de escribir $id=$_GET['ID'];
  10. include("../db.php");
  11. $link=Conectarse();
  12. //incluímos la conexión a nuestra base de datos
  13. if(!isset($cantidad)){$cantidad=1;}
  14. //Como también vamos a usar este archivo para actualizar las cantidades,
  15. //hacemos que cuando la misma no esté indicada sea igual a 1
  16. $qry=mysql_query("select * from catalogo where id='".$id."'",$link);
  17. $row=mysql_fetch_array($qry);
  18. //Si ya hemos introducido algún producto en el carro lo tendremos guardado temporalmente
  19. //en el array superglobal $_SESSION['carro'], de manera que rescatamos los valores de dicho array
  20. //y se los asignamos a la variable $carro, previa comprobación con isset de que $_SESSION['carro']
  21. //ya haya sido definida
  22. if(isset($_SESSION['carro']))
  23. $carro=$_SESSION['carro'];
  24. //Ahora introducimos el nuevo producto en la matriz $carro, utilizando como índice el id del producto
  25. //en cuestión, encriptado con md5. Utilizamos md5 porque genera un valor alfanumérico que luego,
  26. //cuando busquemos un producto en particular dentro de la matriz, no podrá ser confundido con la posición
  27. //que ocupa dentro de dicha matriz, como podría ocurrir si fuera sólo numérico.
  28. //Cabe aclarar que si el producto ya había sido agregado antes, los nuevos valores que le asignemos reemplazarán
  29. //a los viejos.
  30. //Al mismo tiempo, y no porque sea estrictamente necesario sino a modo de ejemplo, guardamos más de un valor
  31. //en la variable $carro, valiéndonos de nuevo de la herramienta array.
  32. $carro[md5($id)]=array('identificador'=>md5($id),'cantidad'=>$cantidad,'producto'=>$row['producto'],'precio'=>$row['precio'],'id'=>$id);
  33. //Ahora dentro de la sesión ($_SESSION['carro']) tenemos sólo los valores que teníamos (si es que teníamos alguno) antes de ingresar
  34. //a esta página y en la variable $carro tenemos esos mismos valores más el que acabamos de sumar. De manera que
  35. //tenemos que actualizar (reemplazar) la variable de sesión por la variable $carro.
  36. $_SESSION['carro']=$carro;
  37. //Y volvemos a nuestro catálogo de artículos. La cadena SID representa al identificador de la sesión, que, dependiendo
  38. //de la configuración del servidor y de si el usuario tiene o no activadas las cookies puede no ser necesario pasarla por la url.
  39. //Pero para que nuestro carro funcione, independientemente de esos factores, conviene escribirla siempre.
  40. header("Location:catalogo.php?".SID);
  41. ?>
  #10 (permalink)  
Antiguo 30/01/2010, 16:34
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años, 6 meses
Puntos: 11
Respuesta: Ayuda con carrito

Deberías agregar más productos para poder probar de agregar varios al carrito.

Un saludo

Etiquetas: 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




La zona horaria es GMT -6. Ahora son las 05:00.