Foros del Web » Programando para Internet » PHP »

crear un stock

Estas en el tema de crear un stock en el foro de PHP en Foros del Web. Hola a todos Estoy creando un tienda donde vendo un determinado producto. Le quiero implementar un campo donde se ve cuantos productos me quedan en ...
  #1 (permalink)  
Antiguo 11/09/2006, 03:53
Avatar de Kalili  
Fecha de Ingreso: enero-2002
Ubicación: Gate 69
Mensajes: 210
Antigüedad: 22 años, 3 meses
Puntos: 0
crear un stock

Hola a todos

Estoy creando un tienda donde vendo un determinado producto.
Le quiero implementar un campo donde se ve cuantos productos me quedan en stock.
Hasta hay no hay problema. Este llega cuando le quiero restar a los productos que voy vendiendo.
Esto es: Si tengo en stock 20 productos y vendo 6 se los tengo que restar.

Como hago eso pensando que pueden ser diferentes productos a la vez los que venda?
x ejemplo
Carrito
producto 1 vendo 6 tengo en stock 20 me quedan 14
producto 2 vendo 3 tengo en stock 10 me quedan 7
y asi sucesivamente. Esto en una misma operacion se entiende.

gracias
__________________
saludos
  #2 (permalink)  
Antiguo 11/09/2006, 04:16
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Pues tendrás q hacer un UPDATE del campo stock por cada idproducto de los vendidos. No sé cómo almacenas los datos así q no sé cómo podría seguir orientándote...

Expón el código donde quieres q una vez registre la venta reste los productos del stock si no te sirve sólo con la idea expuesta arriba.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #3 (permalink)  
Antiguo 11/09/2006, 05:41
Avatar de Kalili  
Fecha de Ingreso: enero-2002
Ubicación: Gate 69
Mensajes: 210
Antigüedad: 22 años, 3 meses
Puntos: 0
Mira, es aqui donde quiero que despues de comprobar que el pago x los productos se ha producido me redirecciona a esta pagina succes.php donde primero hago un update en la tabla orders para que me ponda que el order-status es ok. Despues quiero restar a la tabla products en el campo stock el numero de productos de cada que me quedan

el codigo esta aqui:

Código PHP:
<?php
    
include("invoice_mail.php");
    
session_start();

        
//$srt_sql ="delete from cart where IDCOOKIE = '" . GetCartId() . "'";
        //mysql_query($srt_sql) or die("Error en el query $str_sql... Mysql dice: ".mysql_error());
        
$sql mysql_query("select max(idorder) from orders where IDKLANT='".$_SESSION['login_session']['idklant']."'");
        
$row mysql_fetch_row($sql);
        
$idorder =$row[0];
        
$status ="OK";
        
mysql_query("update orders set STATUS = '$status' where IDORDER = '$idorder'");
?>
el include es un script para mandar un email al comprador con el recibo

Añadir que en la tabla productos tengo los campos Idproducto, nombre, etc y stock, asi que si el cliente me compra diferentes productos tengo que modificar el campo stock en difrentes productos. Este es mi principal problema

gracias
__________________
saludos
  #4 (permalink)  
Antiguo 11/09/2006, 05:53
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Bueno, en algún lado almacenarás la cantidad de productos y el id de cada producto correspondiente a la compra, no?

Haz la select correspondiente, recórrela con un bucle y q vaya haciendo los updates dentro del bucle...

Código PHP:
$sql=mysql_query ("SELECT idproducto,unidades FROM tabla_en_la_que_registres_los_detalles_de_la_compra WHERE idfactura=$idfactura"); //Esto es un pekeño ejemplo... segun lo tengas tu distribuido tendras q tomarlo de una forma u otra
while ($row=mysql_fetch_row ($sql)) {
    
$idprod=$row[0];
    
$cantidad=$row[1];
    
$sql2=mysql_query ("UPDATE productos SET stock=stock-$cantidad WHERE idproducto=$idprod");

Espero q con eso te baste para orientarte.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #5 (permalink)  
Antiguo 11/09/2006, 06:49
Avatar de Kalili  
Fecha de Ingreso: enero-2002
Ubicación: Gate 69
Mensajes: 210
Antigüedad: 22 años, 3 meses
Puntos: 0
mira he hecho como tu decias
Código PHP:
<?php
    
include("invoice_mail.php");
    
session_start();

        
//$srt_sql ="delete from cart where IDCOOKIE = '" . GetCartId() . "'";
        //mysql_query($srt_sql) or die("Error en el query $str_sql... Mysql dice: ".mysql_error());
        
$sql mysql_query("select max(idorder) from orders where IDKLANT='".$_SESSION['login_session']['idklant']."'");
        
$row mysql_fetch_row($sql);
        
$idorder =$row[0];
        
$status ="OK";
        
mysql_query("update orders set STATUS = '$status' where IDORDER = '$idorder'");
        
        
        
$sql mysql_query ("select * from cart inner join products on cart.IDPRODUCT = products.IDPRODUCT where cart.IDCOOKIE = '" GetCartId() . "");
        while (
$row mysql_fetch_row($sql)){
        
$idproduct $row["IDPRODUCT"]; 
        
$newstock $row["STOCK"] - $row["QTY"];
        
mysql_query ("UPDATE products SET STOCK = '$newstock' WHERE IDPRODUCT = '$idproduct'"); 
        } 
?>
pero me da este error

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/httpd/vhosts/linse-webshop.nl/httpdocs/succes.php on line 15
__________________
saludos
  #6 (permalink)  
Antiguo 11/09/2006, 08:29
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Usa mysql_fetch _array... por el que el row..accedes a los campos poniendo el numero del campo.. y con array es una matriz asociativa o de igual forma numerica.
Saludos !
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #7 (permalink)  
Antiguo 11/09/2006, 08:52
Avatar de Kalili  
Fecha de Ingreso: enero-2002
Ubicación: Gate 69
Mensajes: 210
Antigüedad: 22 años, 3 meses
Puntos: 0
Cita:
Iniciado por B** Ver Mensaje
Usa mysql_fetch _array... por el que el row..accedes a los campos poniendo el numero del campo.. y con array es una matriz asociativa o de igual forma numerica.
Saludos !
Pues me da el mismo error con mysql_fetch _array
gracias
__________________
saludos
  #8 (permalink)  
Antiguo 11/09/2006, 09:03
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
De todos modos esta linea esta mal:
$newstock = $row["STOCK"] - $row["QTY"];
Tienes que hacer un delete de la tabla.. para quitar del stock
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #9 (permalink)  
Antiguo 11/09/2006, 09:06
 
Fecha de Ingreso: septiembre-2006
Mensajes: 18
Antigüedad: 17 años, 7 meses
Puntos: 0
De acuerdo si puedes poner mas info para poder ayudarte...

Hola, yo tambien estoy haciendo una quepe tienda en linea y bueno ya sabes el modulo de aministracion y todo.... como dices en la parte de aumentar los niveles de stock no hay prolema verdad...

si mas no me equivoco debes estar haciendo un carro de compras para que el usuario o los compradores realizen el pedido y todo eso no es verdad...

esa informacion del carro al momento de realizar el pedido y enviar los datos del modulo de pagos se deben almacenar en alguna tabla o dbe realizar algun registro si no me equivoco, eso son el fin de lurgo a la verificacion del pago se proceda a despachar la mercaderia si mas no me equivoco...

puedes poner el codigo que tienes para poder ver como estas almacenando la info del carro a la tabla de pedidos de la base de datos pues se puede hacer que al momento de verificar el pago se ponga en algun campo o algo asi el estado del pedido por ejemplo, despaho o algo asi, pera que se realice un update a la tabla donde tienes el total del stock d eproductos y se reste, asi tendrias el proceso de despachos y realizarias un historico de ventas... si deseas podemos intercambiar codigos para poder ver como estamos realizando los procesos y dar sugerencias de que podria ser factible incrementar....
  #10 (permalink)  
Antiguo 11/09/2006, 10:23
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Sugiero:

Código PHP:
$sql mysql_query ("select * from cart inner join products on cart.IDPRODUCT = products.IDPRODUCT where cart.IDCOOKIE = '" GetCartId() . "'") or die ("Error en la consulta: ".mysql_error());//Te faltaba una comilla simple despues del IDCOOKIE
$filas=mysql_num_rows ($sql);
if (
$filas>0) {
while (
$row mysql_fetch_row($sql)){ 
        
$idproduct $row["IDPRODUCT"];  
        
$newstock $row["STOCK"] - $row["QTY"]; 
        
mysql_query ("UPDATE products SET STOCK = '$newstock' WHERE IDPRODUCT = '$idproduct'");  
        }
} else {
    echo 
"No se encontraron resultados o la consulta no es valida.";

x si falla algo en la consulta.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #11 (permalink)  
Antiguo 12/09/2006, 01:28
Avatar de Kalili  
Fecha de Ingreso: enero-2002
Ubicación: Gate 69
Mensajes: 210
Antigüedad: 22 años, 3 meses
Puntos: 0
Os voy a poner todo los scripts.
primero tengo un script llamado cart.php que es vamos a decir el carrito de compra. aqui es donde añado, quito etc productos

cart.php
Código PHP:
<?php
    
include("cookies.inc");
    include(
"instellingen.inc");
    
session_start();


    switch(
$_GET["action"])
    {
        case 
"add_item":
        {
            
AddItem($_GET["id"], $_GET["qty"]);
            
ShowCart();
            break;
        }
        case 
"update_item":
        {
            
UpdateItem($_GET["id"], $_GET["qty"]);
            
ShowCart();
            break;
        }
        case 
"remove_item":
        {
            
RemoveItem($_GET["id"]);
            
ShowCart();
            break;
        }
        default:
        {
            
ShowCart();
        }
    }

    function 
AddItem($idproduct$qty)
    {
        
database("connect");
        
$idgroup $_GET['categoriaID'];
        
$result mysql_query("select count(*) from cart where IDCOOKIE = '" GetCartId() . "' and IDPRODUCT = $idproduct");
        
$row mysql_fetch_row($result);
        
$numRows $row[0];
        
        if(
$numRows == 0)
        {
            @
mysql_query("insert into cart(IDCOOKIE, IDPRODUCT, QTY) values('" GetCartId() . "', $idproduct, $qty)");
        }
        else
        {
            
UpdateItem($idproduct$qty);
        }
    }
    
    function 
UpdateItem($idproduct$qty)
    {
        
database("connect");
        
$idgroup $_GET['categoriaID'];
        if(
$qty == 0)
        {
            
RemoveItem($idproduct);
        }
        else
        {
            
mysql_query("update cart set QTY = $qty where IDCOOKIE = '" GetCartId() . "' and IDPRODUCT = $idproduct");
        }
    }
    
    function 
RemoveItem($idproduct)
    {
        
database("connect");
        
$idgroup $_GET['categoriaID'];
        
mysql_query("delete from cart where IDCOOKIE = '" GetCartId() . "' and IDPRODUCT = $idproduct");
    }
    
    function 
ShowCart()
    {
        
database("connect");
        
$idgroup $_GET['categoriaID'];
        
$totalCost 0;
        
$result mysql_query("select * from cart inner join products on cart.IDPRODUCT = products.IDPRODUCT where cart.IDCOOKIE = '" GetCartId() . "' order by products.DESCRIPTION asc");
?>
luego tengo una pasarela de pago

Código PHP:
<?php
    
include("cookies.inc");
    include(
"instellingen.inc");
    
session_start();

    
database("connect");
        
$totalCost 0;
        
$srt_sql ="select * from cart inner join products on cart.IDPRODUCT = products.IDPRODUCT where cart.IDCOOKIE = '" GetCartId() . "' order by products.DESCRIPTION asc";
        
$result mysql_query($srt_sql) or die("Error en el query $str_sql... Mysql dice: ".mysql_error());
        
        while(
$fila mysql_fetch_array($result))
        {
            
$totalCost += ($fila["QTY"] * $fila["PRIJZEN_INCL"]);
        }
        
        
//$totalprice= number_format(($totalCost), 2, ",", "");
        
$totalprice_nlnumber_format((($totalCost)+($totalCost*19/100))+152","".");
        
$totalprice_restnumber_format(($totalCost+30), 2","".");
        
        
$srt_sql ="select * from klanten where IDKLANT = '" .$_SESSION['login_session']['idklant']. "'";
        
$result mysql_query($srt_sql) or die("Error en el query $str_sql... Mysql dice: ".mysql_error());
        
$row mysql_fetch_assoc($result);
        
$klant $row['KLANT_COMPANY'];
        
$land $row['KLANT_LAND'];
        if(
$land=="Netherlands"){
            
$totalprice $totalprice_nl;
            }else{
            
$totalprice $totalprice_rest;}
        
        
$idklant $_SESSION['login_session']['idklant'];
        
$datum date("F j, Y, g:i a");
        
$srt_sql ="INSERT INTO orders
                                    (IDKLANT, DESCRIPTION, AMOUNT, ORDER_DATE)
                            VALUES
                                 ('$idklant','$klant', '$totalprice', '$datum')"
;
        
mysql_query($srt_sql) or die("Error en el query $str_sql... Mysql dice: ".mysql_error());
        
$order mysql_insert_id();
        
?>
En esta pasarela se hacen los pagos via visa o mastercard

y si ha sido el pago correcto se me redirecciona a un script llamado
succes.php
Código PHP:
    include("invoice_mail.php");
    
session_start();

        
//$srt_sql ="delete from cart where IDCOOKIE = '" . GetCartId() . "'";
        //mysql_query($srt_sql) or die("Error en el query $str_sql... Mysql dice: ".mysql_error());
        
$sql mysql_query("select max(idorder) from orders where IDKLANT='".$_SESSION['login_session']['idklant']."'");
        
$row mysql_fetch_row($sql);
        
$idorder =$row[0];
        
$status ="OK";
        
mysql_query("update orders set STATUS = '$status' where IDORDER = '$idorder'");
        
        
        
$sql mysql_query ("select * from cart inner join products on cart.IDPRODUCT = products.IDPRODUCT where cart.IDCOOKIE = '" GetCartId() . "'") or die ("Error en la consulta: ".mysql_error());
        
$filas=mysql_num_rows($sql); 
        if (
$filas>0) { 
        while (
$row mysql_fetch_row($sql)){  
                
$idproduct $row["IDPRODUCT"];   
                
$newstock $row["STOCK"] - $row["QTY"];  
                
mysql_query ("UPDATE products SET STOCK = '$newstock' WHERE IDPRODUCT = '$idproduct'");   
                } 
        } else { 
            echo 
"No se encontraron resultados o la consulta no es valida."
        } 
Aqui le mando un email con la factura y aparte es donde quiero que el stock de productos se me actualize. Y esa era mi pregunta primera.

Por cierto que con las ayudas que me habeis dado tampoco funciona. Ya no me da el error que me daba pero la tabla stock no se me actualiza.
gracias
Gracias
__________________
saludos
  #12 (permalink)  
Antiguo 13/09/2006, 02:19
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
¿Seguro q los campos stock e idproduct son de texto? Me extraña q campos como el id q suele ser autonumérico, con lo cual es entero y no se usa las comillas simples para asignar variables, y el stock q trae una cantidad sea de texto...

Cita:
Iniciado por Kalili
Código PHP:
mysql_query ("UPDATE products SET STOCK = '$newstock' WHERE IDPRODUCT = '$idproduct'"); 
Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
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 00:59.