[PHP] Aiuto per gestione file CSV

  • Creatore Discussione Creatore Discussione piero60
  • Data di inizio Data di inizio
Ciao,
purtroppo non funziona,
l'ho risolto così:

PHP:
$sel = "1";

if (isset($_GET['id'])) {
include_once('inc/connect.php');
    $linecsv = $_GET['id'];           
    $linecsv = substr("$linecsv",5);     
    $db = mysql_query("UPDATE tavoli SET selected='$sel' WHERE id='$linecsv' "); 

    header( "refresh:0;url=index.php" ); 

    } else{
     
    header( "refresh:0;url=errore.php" );
 
}

Adesso funziona tutto con protezioni, controlli ecc.
L'ultimo problema che mi rimane da risolvere è questo:
Ho bisogno che quando l'utente entra all'interno di una pagina parta un timer, alla partenza del timer l'utente deve poter continuare a lavorare sulla pagina, quindi riempire un form e confermare la sua scelta, se trascorsi 2 minuti l'utente non ha completato le operazioni devo effettuare un aggiornamento sul database ed uscire da questa pagina automaticamente.
Stessa cosa deve accadere se l'utente dopo essere entrato sulla pagina la abbandona senza aver confermato la sua selezione.
il problema è che l'utente arriva su questa pagina dopo avere effettuato una selezione, quindi ha impegnato un posto, questo impegno viene memorizzato sul database, pertanto se non viene confermato io devo riaggiornare il database per rendere nuovamente il posto disponibile.
Qualche idea ?
 
Ultima modifica:
ciao
per fare che l'utente se non opera venga riinviato dove vuioi questo devi risolverlo lato client, ti serve js o jequery, ti convine postare nella sezione adatta.
per riaggiornare invece il record in cui l'utente ha settato a "O" ma non ha proseguito potresti anche risolverlo lato server.
in questo caso dovresti aggiungere un campo alla tabella chianmato es. tempo_prenota e aggiornarlo al momento in cui l'utente opera, poi per azzerare ti fai una (o se l'hai di gia) una pagina in cui vedi i record e i record con
verifichi i record con "O"
che non siano con 1
leggi il tempo della registrazione
se questo è minore di tot minuti a quello del tempo attuale uppi automaticamente il record a "L" e il temp da vedere.
se hai pazienza ti faccio uno schema che è piu semplice che spiegare a parole
 
Ciao Borgo Italia,
certo ho tutto il tempo che serve, sto costruendo una applicazione che permetta di riservare dei tavoli nel più disparato tipo di locali, teatri, sale riunioni ecc.
Ci sono moltissime applicazioni che fanno questo, ma "almeno io" non ho trovato nulla che permetta di vedere la pianta del locale, cliccare direttamente sul tavolo o poltrona o altra cosa che si desidera prenotare, che preveda appunto la selezione temporanea al click, insomma qualcosa di automatizzato. Tutto quello che ho visto in giro, o sono i classici form nudi e crudi di prenotazione, o siti che offrono servizi a pagamento e che comunque non fanno esattamente ciò che sto tentando di realizzare io.
Praticamente è tutto quasi ok, mappe controlli, salvataggio dati, archiviazione delle informazioni di chi prenota.
Mi restano ancora da fare 2 cose, una è quella di cui stiamo parlando e l'altra è quella di potere riscrivere al termine di un evento, "per esempio una serata in discoteca" alcuni campi di una intera tabella del database, per esempio i famosi
L ~ O - 1 ~ 0 ed altri campi presenti nel database utilizzati per le prenotazioni relative a quel particolare evento.
Devo azzerare solo alcuni campi in quanto tutti gli altri contengono i dati relativi alla mappa del locale.

Solo che così facendo ho un problema che è relativo all'id autoincrement, non ho trovato un modo, se non attraverso poliadmin per far ripartire l'id da 1.

Per quanto riguarda l'abbandono della pagina potrei fare una cosa del genere:
creare un campo dove nel momento in cui viene fatta una selezione scrivo ora,minuti e secondi prelevandoli dal server.
ogni volta che un utente accede alla pagina di prenotazione per prima cosa controllo il database e vedo se tutti i record selezionati sono in stato di selezione da 3 minuti, se questo tempo è stato superato considero che la pagina è stata abbandonata e quindi l'utente non ha completato la prenotazione e quindi li risetto liberi, se non sono trascorsi i tre minuti lascio tutto come si trova.
Tieni presente che non parliamo di database con migliaia di record, al massimo possono essere 100 / 300 quindi sono operazioni abbastanza veloci.

Che ne pensi?
 
Ultima modifica:
ciao
intanto per l'id: generalmente non si fa ripartire da 1, non serve, tieni presente che se setti l'id a int lungo 6 prima di usare tutti gli id
ne hai disponibili 999.999 cioe un milione, se lungo 8 99.999.999 cioe 100 milioni..., quindi non dovrebbe essere un problema.
poi per il resto spero qui di spiegarmi bene
PHP:
<?php
/*aggiungi un campo alla tabella
a me piace usare i tempi in timestamp quindi puoi settarlo così
tempo int(15) not null default 0
(il timestamp è espresso in secondi, numero intero)
*/
//......
//al momento in cui l'utente uppa da L a O
$adesso=time();//tempo attuale in cui l'utente sta selezionando in secondi
//non mi ricordo come si chiama il campo L O metto un nome a caso, uppi da L a O e il tempo
$query="UPDATE tavoli SET prima_prenotazione='O',tempo= $adesso  WHERE id='$linecsv'";//da L a O
//USA MYSQLI, tra poco devi rifare tutto
//.....
?>
quando leggi i record (o richiami una pagina apposita di pulizia) per le tue esigenze automaticamente riporti i campi al valore iniziale
esempio tutti quelli con "O" ma ancora 0 che non sono stati impegnati (deverso da 1) dopo due minuti
PHP:
<?php
//....
$tuo_adesso=time();
//2 minuti = 120 secondi
//uppi (da verificare)
$query="UPDATE tavoli SET prima_prenotazione='L', tempo=0 WHERE ($tuo_adesso-tempo) > 120 AND conferma !=1";
/*cioè chiamando la pagina per vedere le varie prenotazioni automaticamente
uppi tutti i record non confernati e il cui tempo di prima prenotazione sia superiore a 2 minuti
al tempo in cui stai guardando i record e che non siano confermati
comunque è una query da verificare non ho provato se funziona
*/
// e fai tutto quello che devi fare
?>
guarda che ho messo i nomi dei campi a caso
p.s.
dal timestamp poi puoi ricavarti volendo anche la data in formato italiano gg/mm/aaaa, quindi puo esserti utile per eliminare tutti quei record obsoleti.
ribadisco inoltre: passa alle mysqli, mi sembra che tu stia facendo un lavoro impegantivo e rifarlo perche le vecchie mysql non funzionano più mi sembra lavoro buttato
 

Discussioni simili