Problemi con la Sessione

F4BiO_GE

Nuovo Utente
16 Ago 2010
17
0
0
Ciao ragazzi..

Allora sto facendo un sito di prenotazioni di posti di teatro..

L'utente una volta che accede al sito in un primo momento prenota il posto e in una seconda fase acquista definitivamente..

Ora i posti sono registrati in un database e ogni posto ha uno stato che puo essere disponibile,prenotato o occupato..

Il fatto è che se l'utente prenota il posto (senza acquistarlo), quel posto rimane prenotato all'infinito.


Come faccio a fare in modo di settare il posto disponibile quando l'utente chiude il browser?
e anche a dare un massimo di tempo per acquistare dopo il quale il posto torna libero?

Avete qualche suggerimento?? Non riesco a venirne a capo

P.S: l'unica cosa ke sn riuscito a fare che quando l'utente effettua il logout e distrugge la sessione allori interrogo il DB e risetto lo stato disponibile
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Diciamo che la cosa più semplice è fare in modo che se ci sono posti prenotati (e non acquistati) da un tot di tempo il posto diviene nuovamente disponibile. Per fare questo se hai una tabella con le prenotazioni non devi fare altro che aggiungere un campo in cui, al momento della prenotazione, inserirai lo UNIX timestamp. Poi ti crei una pagina che includerai in tutte le altre in cui manipoli i posti dove effettui un UPDATE del database solo nei record dove il timestamp attuale meno la data di prenotazione è maggiore del numero di secondi oltre il quale la prenotazione va cancellata.

Forse la spiegazione è un po' contorta. Se non hai capito fammi sapere che ti faccio un esempio pratico :)
 

F4BiO_GE

Nuovo Utente
16 Ago 2010
17
0
0
è un progetto per un esame dell'università e cronjob direi che nn c'è nelle specifiche :confused:

cmq ho risolto con unix_timestamp.


ho inserito nella pagina delle prenotazioni questa query:

mysql_query("UPDATE posti SET stato = 'disponibile', num_carta = NULL, data_prenotazione = NULL,ora_prenotazione = NULL WHERE (unix_timestamp() - ora_prenotazione) > 650 AND stato = 'prenotato'")or die(mysql_error());

cosi ogni volta che un utente accede alla pagina per prenotare, c'è un controllo sui posti
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Eliox: solitamente si abusa di cronjob, e ci si scorda che dovrebbe essere usato solamente nel caso in cui il software non cambierà mai il server di residenza. Cron andrebbe usato solamente quando un evento deve accadere ad una specifica ora, ad esempio per i compleanni dell'utente, mentre per operazioni di questo tipo (come anche, ad esempio, per far scadere la registrazione di un utente se non ha confermato da un giorno) si può usare il sistema che ho descritto, che tra l'altro non è piattaforma-dipendente.
 

lotus

Utente Attivo
5 Mag 2009
543
8
0
francamente se ho capito bene non sono molto daccordo con quanto proposto.

C'è il teatro e poi ci sono gli spettacoli; ad ogni spettacolo è associata la prenotazione dei singoli posti che fanno parte del teatro.

Per ogni spettacolo sò per ciascun posto chi lo ha prenotato per cui il discorso dell'orario lo gestirei in questo modo.

Creo lo spettacolo che ha una data ed un orario. Ad ogni spettacolo è associato un array di posti dove ciascun posto ha una file, un numero.
Ogni prenotazione associa spettacolo, posto e prenotante.

Però, ripeto, può essere che non ho capito bene.

Ciao, Ciro
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Eliox: solitamente si abusa di cronjob, e ci si scorda che dovrebbe essere usato solamente nel caso in cui il software non cambierà mai il server di residenza. Cron andrebbe usato solamente quando un evento deve accadere ad una specifica ora, ad esempio per i compleanni dell'utente, mentre per operazioni di questo tipo (come anche, ad esempio, per far scadere la registrazione di un utente se non ha confermato da un giorno) si può usare il sistema che ho descritto, che tra l'altro non è piattaforma-dipendente.
Siccome si tratta di un sito in cui si vende qualcosa, direi che il supporto per CronTab è quasi indispensabile, tra l'altro eviti di eseguire continuamente uno script di update o di delete ad ogni caricamento di pagina.
Abusare delle query o abusare dei conjob?:confused: