Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56

    creare un carrello acquisti in PHP

    salve, voglio implementare un carrello degli acquisti sul mio sito che dovro' presentare agli esami di maturita',
    attualmente (come ho già detto in altri post) nel database del sito ho le seguenti tabelle:
    prodotti(codp, nome, descrizione, foto_prodotto, prezzo, quantita)
    questa tabella è legata ad una tabella "sottocategorie" tramite una chiave esterna (non penso sia importante specificare)

    utenti(codu, username, email, password, tipo_di_utente)
    questa tabella la utilizzo per accedere al sito, attualmente non è legata a nessuna tabella.

    Ho fatto diverse ricerche su internet per implementare un carrello, ma non ho trovato nulla di dettagliato e sinceramente non ho capito se mi occorre utilizzare una tabella che chiamero' "carrello", se devo crearlo tramite i cookie o tramite le sessioni.
    Chiaritemi un po le idee e cerchero' di scrivere il codice
    grazie in anticipo

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,649
    se possibile un carrello è bene averlo nel db e non nel cookie

    quindi puoi creare una tabella "carrello" dove avrai principalmente questi campi:
    id dell'utente
    id del prodotto

    tutti i campi che ci vuoi aggiungere sono a discrezione del progetto: variabili come colore/taglia/formato, informazioni extra sull'utente, costi, modalità, trasporto e cosa varie. non serve che si copino TUTTI i dati utente e prodotto, la maggior parte restano sempre gli stessi quindi si fa poi una JOIN tra le tabelle per sapere tutto.

    non trovi descrizione dettagliate sui carrelli perché non c'è un modo unico di farlo, la variabili sono moltissime e concettualmente la costruzione è semplice.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    se possibile un carrello è bene averlo nel db e non nel cookie

    quindi puoi creare una tabella "carrello" dove avrai principalmente questi campi:
    id dell'utente
    id del prodotto

    tutti i campi che ci vuoi aggiungere sono a discrezione del progetto: variabili come colore/taglia/formato, informazioni extra sull'utente, costi, modalità, trasporto e cosa varie. non serve che si copino TUTTI i dati utente e prodotto, la maggior parte restano sempre gli stessi quindi si fa poi una JOIN tra le tabelle per sapere tutto.

    non trovi descrizione dettagliate sui carrelli perché non c'è un modo unico di farlo, la variabili sono moltissime e concettualmente la costruzione è semplice.
    innanzitutto grazie per avermi risposto.. nel frattempo che aspetta qualcuno che rispondesse stavo proprio procedendo cosi, ho creato una tabella:
    carrello (codcarrello, codutente, codprodotto, quantita, data)
    "codutente" e "codprodotto" sono chiavi esterne corrispondenti alle primary key delle rispettive tabelle (ho fatto quindi un JOIN), anche se secondo me al posto di "codutente" gli cambio il tipo in varchar e gli vado ad inserire il nome dell'utente preso dalla variabile SESSION creata al momento del login (corregimi se sbaglio), adesso come faccio ad aggiornare le quantita' del prodotto della tabella "prodotti"?

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,649
    non metterci il nome dell'utente come chiave per l'identificazione, rischi le omonimie.

    ma la tabella prodotti non è il magazzino/catalogo? deve aggiornare cosa, la quantità in carico al magazzino?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    non metterci il nome dell'utente come chiave per l'identificazione, rischi le omonimie.

    ma la tabella prodotti non è il magazzino/catalogo? deve aggiornare cosa, la quantità in carico al magazzino?
    si nella tabella prodotti ho la quantità di pezzi per quel prodotto, in pratica voglio che quando l'utente effettua l'acquisto la quantità si abbassa, magari eliminando la riga quando quantità=0

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,649
    i metodi possono esser molti, puoi fare così:
    quando passi al pagamento verifica che la quantità richiesta sia disponibile (altri utenti potrebbero aver fatto acquisti nel frattempo).
    se ok aggiorni la quantità sottraendo quanto ha ordinato l'utente, effettua il pagamento.
    al ritorno dal pagamento svuoti il carrello.

    se l'utente rinuncia, o se l'ordine scade (vedi tu la casistica), rimetti in magazzino quanto sottratto precedentemente.

    non eliminare la riga del prodotto, non ha senso e ti crea doppio lavoro di carico e scarico

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    i metodi possono esser molti, puoi fare così:
    quando passi al pagamento verifica che la quantità richiesta sia disponibile (altri utenti potrebbero aver fatto acquisti nel frattempo).
    se ok aggiorni la quantità sottraendo quanto ha ordinato l'utente, effettua il pagamento.
    al ritorno dal pagamento svuoti il carrello.

    se l'utente rinuncia, o se l'ordine scade (vedi tu la casistica), rimetti in magazzino quanto sottratto precedentemente.

    non eliminare la riga del prodotto, non ha senso e ti crea doppio lavoro di carico e scarico
    si potrebbe fare pure usando le transazioni (cioè una serie di operazioni come se fosse una) di mySQL? se si come?
    poi se ho capito bene ci vorrebbe pure una tabella "acquisti" oltre a quella "carrello" dove vado a inserire la primary key di "carrello" e la primary key di "utente" giusto?

  8. #8
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,649
    non ho capito bene la prima parte.

    i dati del carrello si intendono come dati temporanei, ma niente ti impedisce di renderli più organici e fare direttamente la tabella acquisti dove conservi tutto lo storico: ordini evasi e ordini in attesa, quindi anche l'id dell'ordine.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    non ho capito bene la prima parte.
    in pratica a scuola ci hanno parlato delle transazioni che sono funzioni che mette a disposizione il DBMS, in pratica una serie di operazioni vengono svolte come se ne fosse una sola. Se una di queste operazioni della transazione fallisce si annulla la transazione e quindi le modifiche al DB non vengono rese definitive. Prendi ad esempio un operazione di trasferimento di fondi da un conto corrente ad un altro. Solo che non so nella pratica come fare.. ma non fa niente
    i dati del carrello si intendono come dati temporanei, ma niente ti impedisce di renderli più organici e fare direttamente la tabella acquisti dove conservi tutto lo storico: ordini evasi e ordini in attesa, quindi anche l'id dell'ordine.
    puoi spiegarmi meglio in questa tabella acquisti cosa andrei a mettere?

  10. #10
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,649
    bene

    la tabella acquisti (chiamiamola "ordini" che è più chiaro) dovrebbe contenere:
    idOrdine
    idUtente
    idProdotto
    e tutti gli extra che ti servono
    in più serve un campo (o più di uno) per dichiarare lo stato dell'ordine: potrebbe avere più fasi di lavorazione, compreso "evaso"

    tieni conto che potresti voler raggruppare i prodotti degli ordini,
    quindi idOrdine è un campo alfa e/o numerico che si ripete per ogni record dello stesso ordine, indipendentemente dai record dei singoli prodotti aggiunti

    es:
    idRecord | idOrdine | idUtente | idProdotto | stato |
    1---------| 4---------| 25-------| 452--------| evaso |
    2---------| 4---------| 25-------| 37---------| evaso |
    3---------| 4---------| 25-------| 273--------| evaso |

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.