Pagina 1 di 1

Mettere evento in corso con php e mysql

Inviato: 04/10/2015, 11:07
da juventissimo
Buongiorno a tutti, non sono un esperto di php e mysql però me la cavo con codici semplici.
Se sono qui è perché non sono riuscito a trovare e/o capire come fare questa operazione che adesso vi spiego.

Io do un database con una tabella eventi dove al suo interno trovo delle tabelle con i seguenti nomi: ID_evento, nome_evento, data_ora (impostata come datetime), alfine di estrarre i risultati eseguo la query

Codice: Seleziona tutto

SELECT * FROM eventi AS a WHERE a.data_ora > NOW() ORDER BY a.date_race ASC
La clausa where mi fa sparire l'evento non appena arriva il giorno e l'ora esatta impostata, però quello che piacerebbe che si visualizzasse è una schermata con il nome dell'evento e nella riga sotto una scritta in corso e che durasse 3 ore dall'inizio dell'evento. Girando per il web ho trovato che bisogna utilizzare credo un IF, ma non riesco a capire come settarlo.

Spero di essere espresso bene, in caso contrario vi allego uno screen (prima riga corrisponde alla visualizzazione prima dell'inizio e sotto come vorrei venisse visualizzato mentre l'evento è in corso).

Immagine

Grazie a chiunque voglia darmi una mano .

Re: Mettere evento in corso con php e mysql

Inviato: 04/10/2015, 14:19
da Micogian
Se il campo "data_ora" fosse in formato timestamp sarebbe più semplice.
Si crea una variabile che stabilisce la data attuale meno 3 ore

Codice: Seleziona tutto

$data_cor = time()  // timestamp del momento attuale;
$inizio_evento = $data_cor - 10800  // 3 ore fa.
La query diventa

Codice: Seleziona tutto

SELECT * FROM eventi AS a WHERE a.data_ora > $inizio_evento ORDER BY a.date_race ASC
Il resto va fatto mediante condizioni, cioè se l'evento (data_ora) è compreso tra $inizio_evento e $data_cor è in corso, altrimenti è in programma.

Re: Mettere evento in corso con php e mysql

Inviato: 04/10/2015, 16:34
da juventissimo
ti ringrazio della risposta, purtoppo non posso cambiare il datetime in timestamp poichè l'inserimento dei dati sulla tabella avviene per input, cioè ho x box input per inserire anno, mese, giorno, ora e minuto :( e se modifico (provato) il programma che utilizzo per creare gli eventi va in crash (per fortuna sto provando in locale)

Re: Mettere evento in corso con php e mysql

Inviato: 04/10/2015, 18:17
da Micogian
Ma avendo a disposizione anno, mese e giorno puoi sempre ricavare e memorizzare nel DB la data in formato timestamp.

Codice: Seleziona tutto

$aa = $anno;
$mm =$mese;
$dd =$giorno;
 
$data_start = mktime(0, 0, 0, $mm, $dd, $aa);
Può darsi che l'errore derivi dal formato data del campo, potresti provare a creare un altro campo numerico.
Non ho mai lavorato con le date in formato data, sempre in formato timestamp.
Il problema è che con NOW() hai la data corrente, non la data di 3 ore fa.
Altrimenti prima ottieni la data di 3 ore fa in timestamp, la converti in data e fai la query con quella data.
Il problema è ottenere la lista dei records che iniziano 3 ore fa, il resto è solo basato sulla condizione se l'evento è compreso tra la data di partenza e quella attuale.

Re: Mettere evento in corso con php e mysql

Inviato: 04/10/2015, 21:09
da juventissimo
il fatto che l'evento non lo creo con una pagina fatta da me, ma utilizzo un programma che si basa su quel linguaggio e non posso modificarlo perché come detto sopra mi va in crash e non funziona più niente :(

adesso sono arrivato al punto che visualizzo lo sfondo verde, però lo vedo per tutti i risultati non solo quello in corso :(