Foros del Web » Programando para Internet » PHP »

Carrito de la compra

Estas en el tema de Carrito de la compra en el foro de PHP en Foros del Web. Buenos días a todos (y calurosos); Me encuentro ante el problema siguiente, estoy realizando una tienda virtual en la que el sistema consiste en marcar ...
  #1 (permalink)  
Antiguo 23/06/2003, 06:13
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Carrito de la compra

Buenos días a todos (y calurosos);

Me encuentro ante el problema siguiente,
estoy realizando una tienda virtual en la que el sistema consiste en marcar (con un checkbox) el/los productos que deseas y añadirlos al carrito. ¿Original verdad? XXD

El caso es que el proceso para guardar estos productos en el carrito es el siguiente:
Código PHP:
// Esta función busca un elemento dentro del array $carrito y si
// lo encuentra lo elimina de dicho array
function buscar_y_eliminar(&$carrito$elemento)
       {
       
$i 0;
       
$encontrado false;
       while (
$i count($carrito) && !$encontrado)
          if (
$carrito[$i] == $elemento)
             {
             
$encontrado true;
             
$carrito[$i] = "";
             }
          else
             
$i++;
       } 
Código PHP:
// Función que inserta todos los productos contenidos en $tabla
// en la estructura $carrito
function incluir_en_carrito($tabla, &$carrito)
       {
       
$ultimo count($carrito);
        for (
$i 0$i count($tabla); $i++)
          {
          
$carrito[$ultimo] = $tabla[$i];
          
$ultimo++;
          }
       } 
Código PHP:
// Función que determina si existe algún producto escogido  
// por el usuario en la estructura $carrito  
function algun_producto_escogido($carrito)
       {
       
$i 0;
       
$encontrado false;
       while (
$i count($carrito) && !$encontrado)
          {
          
$encontrado $carrito[$i] != "";
          
$i++;
          }
       return 
$encontrado;
       } 
Código PHP:
// Damos valores a las variables iniciales a aquellas variables
// que no los tengan
    
if (!isset($tabla))
$tabla = array();
if (!isset(
$id_producto))
$id_producto ""
Código PHP:
// Recuperamos los datos de todos los productos de la categoría
// indicada en la variable $producto del formulario de pedidos
if (!($cursor mysql_query("SELECT *
        FROM MEDIDAS where ID_PRODUCTO='$id_producto'"
$conexion)))
       die( 
mysql_error() . "ERROR: SELECT no válido"); 
Código PHP:
//Y ejecutamos las funciones
while ($fila mysql_fetch_row($cursor))
buscar_y_eliminar($carrito$fila[0]);
incluir_en_carrito($tabla,$carrito);
$ir_a_pagar algun_producto_escogido($carrito);

if (
$ir_a_pagar) {echo "ok";}
else {echo 
"no compró nada";} 
Y la cuestión es la siguiente:
quiero además de que el cliente seleccione el producto, que pueda escribir el color correspondiente a cada producto seleccionado. He situado un campo de texto al lado de cada casilla de selección de productos (que se genera dinámicamente ya que todo tira de base de datos) pero lo que no sé es cómo hacer "que vayan de la mano" cada array "carrito" con cada "color".
Les confieso que no se me dá muy bien trabajar con funciones...

Gracias a todos

PD: Si no les quedó muy claro indíquenmelo, lo reescribiré. Es importante para mí. Gracias de nuevo.
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #2 (permalink)  
Antiguo 23/06/2003, 07:41
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Segun lo que entiendo, lo que necesitas es que $carrito sea un array bidimensional. Basicamente lo que tienes que hacer es que cada elemento de $carrito sea un array con dos elementos. En tu codigo no se que es $tabla, supongo que sera la lista de checkbox con los id de los productos. Supongo que tendras en otro array la lista de colores, siendo los indices de este ultimo array los id de los productos (para relacionar el color con el producto). Entonces para añadir seria algo como:
Código PHP:
// Función que inserta todos los productos contenidos en $tabla
// en la estructura $carrito
function incluir_en_carrito($tabla$colores, &$carrito)
       {
       
$ultimo count($carrito);
        for (
$i 0$i count($tabla); $i++)
          {
          
$carrito[$ultimo] = array($tabla[$i], $colores[$tabla[$i]]);
// el primer elemento seria el id del producto y el segundo el color
// habria primero que comprobar si existe ese elemento en el array $colores
          
$ultimo++;
          }
       } 
Luego en el carrito para acceder al id de producto debes usar $carrito[$i][0] y para el color $carrito[$i][1].

Bueno, espero haber aclarado algo.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 23/06/2003, 12:26
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Josemi, me has aclarado bastante las cosas, voy a seguir lo que dices pero si te no te parece mal, llendo pasito a pasito.

Veamos, no comprendo porqué se usa $carrito[$i][0] o $carrito[$i][1] para identificar a uno u otro, aunque investigaré al respecto.

El formulario con el que envío los arrays son los siguientes:
Código PHP:
// función que determina si un determinado valor coincide con 
// un elemento que pertenece al array que se pasa como parámetro  
function esta_en_array($objetos$elemento)
   {
   
$i 0;
   
$encontrado false;
   while ((
$i count($objetos)) && !$encontrado)
      {
      
$encontrado = ($objetos[$i] == $elemento);
      
$i++;
      }
   return 
$encontrado;  
   }
//formulario
echo "<form METHOD='Post' ACTION='productos.php'>";
//Mostramos las medidas correspondientes a cada referencia.
$medidas mysql_query ("SELECT *
                              FROM MEDIDAS
                              WHERE ID_REFERENCIA='$fila[0]'"
$conexion) or die (mysql_error());
$i=0;
while (
$fila_medida mysql_fetch_row($medidas)) {
$i++;
echo 
"<INPUT TYPE='Checkbox' NAME=tabla[] VALUE='$fila_medida[0]'";
   if (
esta_en_array($carrito[$i][0], $fila_medida[0])) {
   echo 
"CHECKED"; }

echo 
"<INPUT TYPE='text' NAME=colores[]";
   if (
esta_en_array($carrito[$i][1], $fila_medida[0])) {
   echo 
"value='$carrito[$i][1]'"; }
echo 
">";

Y esto es todo lo que hay, no puedo entender qué es lo que no marcha...

Disculpen mi ignorancia.

PD: En la función "incluir_en_carrito(...)" puse como me indicaste.
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
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 16:56.