Foros del Web » Programando para Internet » PHP »

sistema de pedidos

Estas en el tema de sistema de pedidos en el foro de PHP en Foros del Web. Necesito de su ayuda ya que ando un tanto perdido. estoy creando un sistema de pedidos, que sigue los siguientes pasos: 1_Realiza una busqueda de ...
  #1 (permalink)  
Antiguo 07/06/2006, 09:39
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 6 meses
Puntos: 2
sistema de pedidos

Necesito de su ayuda ya que ando un tanto perdido.
estoy creando un sistema de pedidos, que sigue los siguientes pasos:

1_Realiza una busqueda de articulos en una tabla de la BD.
2-El resultado de la busqueda muestra una lista de articulos con la posibilidad de elegirlos mediante un checkbox y agregarles la cantidad deseada con un drop combo.
3_ al dar submit, pasa a otra pagina que muestra los pedidos elegidos con sus subtotales y el total del pedido.

aca es donde me trabo, si el cliente quiere mantener esa lista activa y elegir otros productos para agregarlos a la misma, como hago?
se me ocurren sessiones, pero no se como.

Agradeceria mucho su aporte ya que me urge.
saludos
  #2 (permalink)  
Antiguo 07/06/2006, 11:00
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 6 meses
Puntos: 2
vengo probando con esto que creo que sería una solucion, un array bidimensional.


Código PHP:
$cantidad=$_POST["numCantidad"];
$articulos=$_POST["articulo"];

$bandera=false;

while (list (
$clave$val) = each ($articulos)) {
$arr[$clave]['cantidad']=$cantidad[$clave];
}

$_SESSION['VECTOR']=$arr
de esta forma tendria el id del articulo y la cantidad, el resto lo traigo de la base de datos cuando lo necesite.
voy bien encaminado?
Voy a tener además que ir checkeando cuando entren nuevos articulos, si existe ya en la variable de session, que sume la cantidad y si no existe que cree uno nuevo.

voy mas o menos en camino o me estoy mndando cualquiera?
Alguien sabe de documentacion al respecto, la que ví no me convence.

saludos
  #3 (permalink)  
Antiguo 07/06/2006, 14:31
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 6 meses
Puntos: 2
Ya está lo solucione de otra manera, gracias.
  #4 (permalink)  
Antiguo 07/06/2006, 14:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por moron
Ya está lo solucione de otra manera, gracias.
No está de más que indiques la solución a tu problema .. le servirá a otra persona a futuro que se encuentre en tu misma situación.

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 07/06/2006, 16:20
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 6 meses
Puntos: 2
como no don Cluster.
aunque me estoy dando la cabeza contra la pared con la nueva implementación.

resulta que ahora cuando elijo un articulo este se carga en la session y lomuestra bien por pantalla, pero no se modifica cuando agrego un articulo nuevo, solo se suman los totales en caso de que sea el mismo, pero no le da bola a los nuevos.
Los echo con numeros que agregué son guias para saber por donde va pasando, cuando mando un nuevo articulo para agregar, me muestra el primer registro ingresado e imprime:
0127

codigo:
Código PHP:
session_start();
session_register('itemsEnCesta');

$articulos=$_POST['articulo'];
$cantidad=$_POST["numCantidad"];

$itemsEnCesta=$_SESSION['itemsEnCesta'];
if(isset(
$articulos)){
    echo 
"0";
while (list (
$clave$val) = each ($articulos)) {
    
$item=$clave;
    echo 
"1";
    if (
$item){
        echo 
"2";
        if (!isset(
$itemsEnCesta)){
            
$itemsEnCesta[$item]=$cantidad[$item];
            echo 
"3";
    }
    }else{
        foreach(
$itemsEnCesta as $k => $v){
            echo 
"4";
            if (
$item==$k){
            
$itemsEnCesta[$k]+=$cantidad[$item];
            
$encontrado=1;
            echo 
"5";
            }
        }
        
        if (!
$encontrado) {
            echo 
"6";
             
$itemsEnCesta[$item]=$cantidad[$item];
                            }
    }
}
echo 
"7";
$_SESSION['itemsEnCesta']=$itemsEnCesta;

}

//armo la lista de id para el in() del sql
if (isset($itemsEnCesta)){
    foreach(
$itemsEnCesta as $k => $v){
        if (
$bandera){
        
$busc=$busc.",".$k;
    }else{
    
$busc=$k;
    
$bandera=true;
        }
    }        
    }
    if(
$busc==""){
        echo 
"No hay Articulos seleccionados";
        exit;
    }
aca hago el sql y muestro el ciclo de registros.. 
  #6 (permalink)  
Antiguo 08/06/2006, 09:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
El uso que haces de sesiones definitivamente no es correcto .. por ahí podrías tener problemas.

No puedes mezclar session_register() con el uso de las variables superglobales: $_SESSION (que en el fondo es un simple "array" pero con la virtud en ese caso que sus datos quedan almacenados en el servidor ...)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 08/06/2006, 09:25
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 6 meses
Puntos: 2
gracias Cluster.
Postéo como me quedó al final, esto esta funcionando.
Espero le sirva a alguien.

Código PHP:
session_start();

$articulos=$_POST['articulo'];
$cantidad=$_POST["numCantidad"];
$encontrado=false;
$itemsEnCesta=$_SESSION['itemsEnCesta'];

if(isset(
$articulos))
{
    foreach (
$articulos as $ka => $va)
        {
        foreach (
$itemsEnCesta as $k=>$v)
        {    
$encontrado=false;
            if(
$k==$ka)
            {    
$itemsEnCesta[$ka]+=$cantidad[$ka];
                
$encontrado=true;
                
            }
        }
        
    if(
$encontrado==false)
        {    
            
$itemsEnCesta[$ka]=$cantidad[$ka];    
            
$encontrado=false;
        }
        }
        
$_SESSION['itemsEnCesta']=$itemsEnCesta;    
}

 
$URL='carrito.php';
             
header("Location: http://" $_SERVER['HTTP_HOST'] . "/" $URL); 
saludos

Última edición por moron; 08/06/2006 a las 11:11
  #8 (permalink)  
Antiguo 08/06/2006, 10:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Insito ..

Según el uso que ya haces de $_SESSION .. no corresponde usar session_register('itemsEnCesta');

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 08/06/2006, 11:12
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 6 meses
Puntos: 2
Corregido.

Gracias Cluster
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 12:10.