phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Mettere evento in corso con php e mysql

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
Rispondi
juventissimo
Utente
Utente
Messaggi: 243
Iscritto il: 11/12/2011, 12:21
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL 5.5.36-34.2-log
Contatta:

Mettere evento in corso con php e mysql

Messaggio da juventissimo » 04/10/2015, 11:07

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 .

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Mettere evento in corso con php e mysql

Messaggio da Micogian » 04/10/2015, 14:19

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.

juventissimo
Utente
Utente
Messaggi: 243
Iscritto il: 11/12/2011, 12:21
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL 5.5.36-34.2-log
Contatta:

Re: Mettere evento in corso con php e mysql

Messaggio da juventissimo » 04/10/2015, 16:34

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)

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Mettere evento in corso con php e mysql

Messaggio da Micogian » 04/10/2015, 18:17

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.

juventissimo
Utente
Utente
Messaggi: 243
Iscritto il: 11/12/2011, 12:21
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL 5.5.36-34.2-log
Contatta:

Re: Mettere evento in corso con php e mysql

Messaggio da juventissimo » 04/10/2015, 21:09

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 :(

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 118 ospiti