Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: carrello vendite php

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154

    carrello vendite php

    Salve gente, sto provando a creare un carrello di vendite...soltanto che sono fermo in un punto...dopo che i prodotti con le rispettive quantità vengono inseriti nel carrello, e viene cliccato il bottone conferma vendita, vorrei che le quantità rimaste e vendute dei prodotti vengano modificate sulla lista prodotti, quindi nel database..ma non riesco

    qui c'è una demo: https://sitoprova97.altervista.org/


    in allegato ho messo il codice.

    database:

    File allegati File allegati

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Si tratta di eseguire una query UPDATE che faccia una somma nel campo delle quantità vendute ed una sottrazione in quello delle quantità rimaste.
    Che problema trovi di preciso?

    Una cosa che devi assolutamente prendere in considerazione è che prima della UPDATE devi iniziare una transazione, verificare che ci sia una quantità residua sufficiente per l'acquisto in corso e se c'è eseguire l'update, portare a termine l'acquisto e se tutto è andato bene eseguire il commit della transazione, altrimeni potresti trovarti con dati inconsistenti in caso di query concorrenti.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    mi spiego meglio...

    ho una lista di prodotti che estraggo dal database...aggiungo i prodotti al mio carrello (ogni volta che aggiungo un prodotto,attribuisco a questo un id (che corrisponde al codice prodotto) e aumento di 1 quantità nel carrello)..

    prodotti.php
    Codice PHP:
    <?php 
      
        
    if(isset($_GET['action']) && $_GET['action']=="add"){ 
              
            
    $id=intval($_GET['id']); 
              
            if(isset(
    $_SESSION['cart'][$id])){ 
                  
                
    $_SESSION['cart'][$id]['quantity']++; 
                  
            }else{ 
                  
                
    $sql_s="SELECT * FROM products 
                    WHERE id_product=
    {$id}"
                
    $query_s=mysqli_query($link,$sql_s); 
                if(
    mysqli_num_rows($query_s)!=0){ 
                    
    $row_s=mysqli_fetch_array($query_s); 
                      
                    
    $_SESSION['cart'][$row_s['id_product']]=array( 
                            
    "quantity" => 1
                            
    "price" => $row_s['price'
                        ); 
                      
                      
                }else{ 
                      
                    
    $message="L'id del prodotto non è valido!"
                      
                } 
                  
            } 
              
        } 
      
    ?> 
        <h1>Lista prodotti</h1> 
        <?php 
            
    if(isset($message)){ 
                echo 
    "<h2>$message</h2>"
            } 
        
    ?> 
        <table> 
            <tr> 
                <th>Codice prodotto</th>
                <th>Nome prodotto</th> 
                <th>Prezzo</th> 
                <th>Azione</th> 
                <th>Quantità rimaste</th> 
                <th>Quantità vendute</th> 
            </tr> 
              
            <?php 
              
                $sql
    ="SELECT * FROM products ORDER BY name ASC"
                
    $query=mysqli_query($link,$sql);
                  
                while (
    $row=mysqli_fetch_array($query)) { 
                      
            
    ?> 
                <tr> 
                    <td><?php echo $row['id_product'?></td> 
                    <td><?php echo $row['name'?></td>
                    <td><?php echo $row['price'?> €</td> 
                     <td><a  href="index.php?page=products&action=add&id=<?php echo  $row['id_product'?>">Aggiungi al carrello</a></td> 
                    <td><center><?php echo $row['Quantita_rimaste'?></center></td> 
                    <td><center><?php echo $row['Quantita_vendute'?></center></td> 
                </tr> 
            <?php 
                      
                

              
            
    ?> 
              
        </table><br>

    quando clicco sul bottone "vai al carrello", mi ritrovo appunto nel carrello con i prodotti che ho aggiunto e le rispettive quantità (che posso ancora modificare prima di confermare la vendita).

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    prodotti.php


    carrello.php

    https://i.imgur.com/BdRu1S3.mp4

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    carrello.php



    quello che mi chiedo io è, come faccio una volta cliccato su "conferma vendita" ad aggiornare le rispettive quantità vendute e rimaste nel database? dovrei fare un update e modicare solo le quantità di questi prodotti che ho aggiunto nel carrello usando i rispettivi id? faccio un po di confusione con gli array

    ps:chiedo scusa per i multipli post, ma il cloudfire del forum mi dava problemi
    Ultima modifica di Punix; 23-02-2021 a 13:48

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    E' la stessa cosa di quando mostri il carrello: al posto di stampare una riga della tabella, fai una query per aggiornare le quantità, tanto l'id del record ce l'hai.

    PS: Se è un progetto "didattico" va bene, se è qualcosa che va in commercio ti consiglierei di tener presente anche eventuali problemi di overselling

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    Si è un progetto didattico ... Comunque il problema è come impostare la query ...io avevo provato a fare tipo una cosa del genere:

    Codice PHP:
    $sql "UPDATE products SET Quantita_rimaste='Quantita_rimaste - ($SESSION['cart'][$row['id_product']][quantity])', Quantita_vendute='Quantita_vendute + ($SESSION['cart'][$row['id_product']][quantity])' WHERE id_product='$id'"

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Nelle intenzioni è giusta...però scritta così non funzionerà

    1. nella query gli apici identificano una stringa. quindi facendo Quantita_rimaste = 'Quantità rimaste - $x' stai assegnando una stringa non facendo un operazione di sottrazione. Togli gli apici:
    Quantita_rimaste = Quantita_rimaste - $x

    2. Se è vero che nei doppi apici php interpreta le variabili e anche vero che tu ne hai di complesse (array), quindi per fargliele prendere mettile tra graffe oppure usa delle variabili di appoggio (cosa che ti consiglio, per chiarezza del codice)
    Quantita_rimaste=Quantita_rimaste - {$SESSION['cart'][$row['id_product']]['quantity']}
    Ultima modifica di boots; 24-02-2021 a 11:35

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    Codice PHP:
     <?php 
              
                $sql
    ="SELECT * FROM products WHERE id_product IN ("
                          
                        foreach(
    $_SESSION['cart'] as $id => $value) { 
                            
    $sql.=$id.","
                        } 
                          
                        
    $sql=substr($sql0, -1).") ORDER BY name ASC"
                        
    $query=mysqli_query($link,$sql);
                        
    $totalprice=0
                        while(
    $row=mysqli_fetch_array($query)){ 
                            
    $subtotal=$_SESSION['cart'][$row['id_product']]['quantity']*$row['price']; 
                            
    $totalprice+=$subtotal;
                            
                            
    $quantita_r=$row['Quantita_rimaste'] - ($_SESSION['cart'][$row['id_product']]['quantity']);
                            
    $quantita_v=$row['Quantita_vendute'] + ($_SESSION['cart'][$row['id_product']]['quantity']);
                            
                        
    ?> 
                            <tr> 
                                <td><?php echo $row['name'?></td> 
                                <td><input type="text" name="quantity[<?php echo $row['id_product'?>]" size="5" value="<?php echo $_SESSION['cart'][$row['id_product']]['quantity'?>" /></td> 
                                <td><center><?php echo $row['price'?> €</center></td> 
                                <td><center><?php echo $_SESSION['cart'][$row['id_product']]['quantity']*$row['price'?> €</center></td>
                                <td><center><?php echo $quantita_r ?></center></td>
                                <td><center><?php echo $quantita_v ?></center></td>
                            </tr> 
                        <?php 
                        
                        

            
    ?> 
                        <tr> 
                            <td colspan="6">Prezzo totale di vendita: <?php echo $totalprice ?> €</td> 
                        </tr> 
              
        </table>
        <br /> 
        <button type="submit" name="submit" class="entra">Aggiorna carrello</button>
        </form><br>
        
        <form method="POST">
        <input type="submit" name="conferma" value="Conferma Vendita" class="entra"/>
        </form>
        


    <?php
     
    if(isset($_POST['conferma'])){
         
        
     
    $sql_v "UPDATE products SET 
         Quantita_rimaste=
    {$quantita_r}
         Quantita_vendute=
    {$quantita_v} 
         WHERE id_product='
    $id'";  
         
    $query=mysqli_query($link,$sql_v);
         
     } 
    ?>
    risultato:



    clicco su conferma vendita e ottengo:



    le quantità non vengono aggiornate bene

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    154
    in quel caso alle patatine vengono scalate e aggiunte le quantità della pizza...mentre la pizza non viene totalmente considerata ... non è che sbaglio con l'id?

    https://sitoprova97.altervista.org/

    se vuoi ti metto il link, è un sito di prova, puoi provare tu stesso

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.