PDA

View Full Version : [php] Variabile immutabile


Error_404
15-11-2014, 01:10
Salve a tutti.
Ho la necessità di creare un sito in cui devo gestire l'inserimento di un ordine di alcuni prodotti da parte di clienti che si connettono.

Lo schema del database prevede tre chiavi primarie: ID_Cons (id che contraddistingue la consegna), ID_Prod (id per indicare il prodotto contenuto in magazzino) e ID_Cli (per indicare il cliente); mi servono queste tre chiavi perchè lo stesso cliente può ordinare anche più prodotti nella stessa consegna.

Inoltre se il cliente è già presente all'interno del database, allora utilizzo il suo id, altrimenti creo una nuova riga dove inserisco il nuovo utente ricavandone l'id.

Ho inserito la possibilità di confermare l'ordine o annullarlo ed è qui che incontro il mio problema: nel caso in cui io volessi cancellare l'ordine cancellerei tutte le righe con l'ID_Cons e, nel caso in cui io abbia inserito un nuovo utente, cancellerei anche quello; ed è proprio questo il problema: come faccio a definire se un utente è già presente all'interno del database o se è un nuovo utente?

Ho fatto varie prove utilizzando variabili o costanti php, ma il risultato è sempre lo stesso, perchè utilizzo un solo documento php per gestire il tutto, quindi ogni volta che la pagina si aggiorna, le variabili inserite si cancellano... c'è un modo per definire una variabile che resti immutata una volta definita, anche nel caso in cui io aggiorni la pagina?

Daniels118
17-11-2014, 10:39
In php "classico" non è possibile, puoi salvare questo dato su file o sul db stesso. Ci sarebbe anche la possibilità di salvare il dato nei cookie, ma è una soluzione inaffidabile perché i cookie non sono persistenti e sono legati al browser in uso.
L'ideale sarebbe avere un campo booleano nella tabella "utente" che indica se l'utente era già presente o è stato creato per l'occasione.
Quando annulli un ordine puoi verificare se ci sono altri ordini per quell'utente, in caso negativo se l'utente è marcato come "creato ad hoc" lo elimini.

Error_404
21-11-2014, 09:45
In php "classico" non è possibile, puoi salvare questo dato su file o sul db stesso. Ci sarebbe anche la possibilità di salvare il dato nei cookie, ma è una soluzione inaffidabile perché i cookie non sono persistenti e sono legati al browser in uso.
L'ideale sarebbe avere un campo booleano nella tabella "utente" che indica se l'utente era già presente o è stato creato per l'occasione.
Quando annulli un ordine puoi verificare se ci sono altri ordini per quell'utente, in caso negativo se l'utente è marcato come "creato ad hoc" lo elimini.

Si avevo già risolto in questa maniera, ma mi interessava sapere se era possibile riuscirci solo con il php... cosa intendi per php "classico"?

Grazie cmq per l'aiuto ^^

Daniels118
21-11-2014, 11:29
Intendo che sarebbe possibile realizzare delle estensioni per l'interprete php che consentano di conservare dati nella memoria del processo del web server (apache). E' una tecnica già implementata in php, ma attualmente è riservata alle connessioni con mysql, comunque avendo tempo e voglia è possibile estenderla ad altri ambiti.