Foros del Web » Programando para Internet » PHP »

Ayuda con carrito de la compra en tienda web con PHP

Estas en el tema de Ayuda con carrito de la compra en tienda web con PHP en el foro de PHP en Foros del Web. Hola a todos , soy nuevo en el foro , estoy haciendo una aplicacion de una tienda web, tengo una base de datos en mysql ...
  #1 (permalink)  
Antiguo 23/02/2009, 16:53
Avatar de saku39  
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
Ayuda con carrito de la compra en tienda web con PHP

Hola a todos , soy nuevo en el foro , estoy haciendo una aplicacion de una tienda web, tengo una base de datos en mysql con todos los productos.

Cuando selecciono los productos los envio al carrito de la compra a traves de la variable $_SESSION, donde envio los campos que quiero mostrar , el codigo del producto , el nombre , el precio y las unidades , lo muestro con variables $_SESSION tipo array, ejemplo ( $_SESSION["array_unidades"] ).

Para el carrito tengo una tabla donde muestro todos los productos que se van comprando con un bucle FOR y utilizando las variables session tipo array antes mencionadas , usando la variable contador del FOR como subindice del array , ejemplo ( $_SESSION["array_unidades"][$i] ), para que mientras existan productos en el carrito se vayan mostrando los diferentes campos , hasta ahi todo ok.

El problema viene ahora , cuando hago la compra , no se como hacer que me lo actualize en la BDD , es decir que me reste las unidades compradas al stock actual , esta claro que tiene que ser con una consulta SQL de UPDATE, pero para poder restar las unidades que compro $_SESSION["array_unidades"] , tendre que hacer antes una consulta SQL de SELECT , para saber cual es el stock actual para realizar la operacion.

Todo esto tengo pensado que ira en un bucle FOR , igual que el del carrito con la condicion de que se ejecute mientras existan productos, es decir hasta que el contador sea igual al numero de productos ( $_SESSION["num_productos"] ), mas o menos tengo la idea hacer el bucle , hacer una consulta de select para ver el stock , hacer una consulta de update y en el campo del stock poner la diferencia del stock actual (para eso guardo en una variable la consulta SELECT) y la variable sesion de unidades.

A ver si alguien puede darme una pequeña ayuda , muchas gracias.
  #2 (permalink)  
Antiguo 23/02/2009, 17:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda con carrito de la compra en tienda web con PHP

no es necesario saber el stock actual, para operar con el...

ejemplo
Código:
UPDATE tabla SET stock=stock-15
siendo 15, el numero de bajas... o algo así (eso te puede ser de utilidad, ya que no entiendo todo tu problema)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 23/02/2009, 18:53
Avatar de saku39  
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ayuda con carrito de la compra en tienda web con PHP

Muchas gracias por contestar tan rapido , pensaba que no se podia hacer asi ( lo de stock = stock - vendidos ), me estaba haciendo un lio yo mismo de meter el stock actual en otra variable antes , etc.

Sabiendo eso , a ver si consigo hacer que me lo actualize , mañana lo pruebo y comento que tal me ha ido , gracias !!
  #4 (permalink)  
Antiguo 24/02/2009, 12:12
Avatar de saku39  
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ayuda con carrito de la compra en tienda web con PHP

No consigo aclararme...

Cuando hago la consulta de actualizar , como consigo saber en cada interaccion del bucle cual es la clave primaria (codigo) de cada producto , para que lo actualize ?? , lo que he hecho:

Código:
<?php
session_start();

if ($_SESSION["num_productos"]==0)

{ 
  echo "<center>El carrito esta vacio.</center><br>";
}
else
{

    for($i=0;$i<$_SESSION["num_productos"];$i++)

    {
		mysql_db_query("tiendaweb","UPDATE tbproductos SET STOCKP_PRO=STOCK_PRO - $_SESSION['array_unidades_prod'][$i],WHERE CODPRO_PRO= ¿? ");

    }

}
  #5 (permalink)  
Antiguo 24/02/2009, 12:26
 
Fecha de Ingreso: diciembre-2005
Ubicación: Vigo
Mensajes: 135
Antigüedad: 18 años, 4 meses
Puntos: 3
Respuesta: Ayuda con carrito de la compra en tienda web con PHP

Yo creo en la variable $session tienes que guardar el id_ del producto para despues realizar el update, no se si ya lo guardas en el array?
  #6 (permalink)  
Antiguo 24/02/2009, 12:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con carrito de la compra en tienda web con PHP

Tal vez seria mas facil si creas una sola matriz con los productos, donde almacenes codigo de producto y cantidad.

Código php:
Ver original
  1. // Para agregar productos, primero verificas que exista la matriz
  2. if(!isset($_SESSION['productos']))
  3.     $_SESSION['productos'] = array();
  4.  
  5. // Despues agregas producto:
  6. $_SESSION['productos'][] = array($codigo, $unidades);
  7.  
  8.  
  9. // Y cuando envias
  10. if(count($_SESSION['productos']) > 0) {
  11.     foreach($_SESSION['productos'] as $prod) {
  12.           list($codigo, $unidades) = $prod;
  13.           mysql_db_query("tiendaweb","UPDATE tbproductos SET STOCKP_PRO=STOCK_PRO - $unidades WHERE CODPRO_PRO= $codigo ");
  14.     }
  15. } else
  16.     echo 'El carrito esta vacio.';
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 24/02/2009, 16:49
Avatar de saku39  
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ayuda con carrito de la compra en tienda web con PHP

Hola muchas gracias por contestar , sois unos maquinas

Triby lo de crear una sola matriz para todos los campos en la variable session y tenerlos en variables estaria bien la verdad (creo que es lo que me quieres decir), lo que pasa es que ya tengo hecho que desde cada pagina de cada producto (son mas de 200 ) que me envie los distintos campos para ir guardandolos en diferentes arrays, entonces ya lo que quiero es conseguir el update con ellos.

Subirol en la variable session si que guardo en un array el id del producto , el caso es que cuando lo pongo en el update me da un error ...

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

En la linea donde hago la consulta:

Código:
for($i=0;$i<$_SESSION["num_productos"];$i++)

    {
         mysql_db_query("tiendaweb","UPDATE tbproductos SET STOCKP_PRO=STOCK_PRO - $_SESSION['array_unidades_prod'][$i],WHERE CODPRO_PRO=$_SESSION['array_id_prod'][$i]");
    }
Los arrays que tengo guardados de todos los productos en la variable session son los siguientes:

codigo:
$_SESSION["array_id_prod"]

nombre:
$_SESSION["array_nom_prod"]

unidades:
$_SESSION["array_unidades_prod"]

precio:
$_SESSION["array_precio_prod"]

Todo se envia desde los productos y se recoge en la variable session sin problemas , solo me falta hacer la maldita consulta para que al venderlos se quiten del stock.

Muchas gracias por vuestra ayuda
  #8 (permalink)  
Antiguo 24/02/2009, 16:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda con carrito de la compra en tienda web con PHP

agrega llaves, si usas variable con comillas...

Código PHP:
$sql "el foo - {$candy['bar']}"
lee lo siguiente, http://www.forosdelweb.com/f18/como-...1/#post2414268
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 26/02/2009, 11:01
Avatar de saku39  
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ayuda con carrito de la compra en tienda web con PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
agrega llaves, si usas variable con comillas...

Código PHP:
$sql "el foo - {$candy['bar']}"
lee lo siguiente, " "
He probado con las llaves pero de todas formas no me funciona la consulta.

Me da el siguiente error:

Código:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by ( ruta )

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (ruta)
No consigo realizar bien la consulta para actualizar
  #10 (permalink)  
Antiguo 26/02/2009, 12:07
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ayuda con carrito de la compra en tienda web con PHP

Eso no es problema de consulta sino que estas enviando contenido al navegador antes de session_start()... tal vez una etiqueta html, un header() un espacio, un salto de linea... algo estas enviando que no permite a session_start() enviar sus propios encabezados (cookie) para establecer la sesion.
__________________
- León, Guanajuato
- GV-Foto
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 23:51.