Newsgroup: it.comp.www.php
Titolo: come trovare una data futura in un db?

ciao
 uso php per cose molto molto semplici, tutavia anche se semplice
stavolta mi sono icasinata, mi data una mano per favore?
ho una tabella mysql in cui ho inserito il nome di alcuni eventi e la
data in cui accadanno con il campo date
yyyy-mm-dd
ora su una pagina php vorrei che ogni giorno venisse visualizzato l'
evento più prossimo alla data corrente.
es. se oggi è il 14 aprile e nel database ci sono 3 eventi uno a
giugno, uno a settembre e uno ad ottobre, deve essere visualizzato l'
evento di giugno , poi dal giorno successivo a quell' evento, si dovrà
vedere quello di settembre e così via.
allora io ho fatto così nello script
salto altre righe di connessione database ecc.
$oggi =  date("Y-m-d"); // stabilire la data corrente
$query = "SELECT data,nome,luogo FROM calendario_eventi WHERE data >=
$oggi  ORDER BY data ASC LIMIT 1";
// il problema credo stia tutto qui, ma come si fa? non va bene
prendere la prima data uguale o maggiore cioè successiva a quella
corrente?
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());
$data_evento  = $row['data'];
echo $row['data']. " - ". $row['nome']. " - ". $row['luogo'];
non so come mai mi esce sempre la prima data nel database (cioè la più
vecchia ) anche se l' evento è passato, come si fa a dire a mysql di
prendere il primo successivo o uguale alla data odierna? mysql non sa
calcolare se una data in formato date è più o meno recente di un'
altra?
grazie a chi mi aiuterà
sonya

 $oggi  ORDER BY data ASC LIMIT 1";
questa fa quello che dici tu...credo che non venga letta la variabile
$oggi
$query = "SELECT data,nome,luogo FROM calendario_eventi WHERE data >=".
$oggi."  ORDER BY data ASC LIMIT 1";
Ciao Gianmarco


ciao Gianmarco e grazie del consiglio, purtroppo il risultato non
cambia, comunque dentro i doppi apici php le variabili le legge di
solito no? in ogni caso sto impazzendo, è solo una semplicissima query
e non va , mannaggia !! è come se mysql non sapesse ordinare i campi
date, non mi intendo di mysql , ma mi pare strano a meno che per fare
calcoli su una data non si deve usare maggiore/uguale , ma comandi più
specifici, boh?
grazie comunque per il tempestivo interessamento :-)
sonya

ciao
per prima cosa verifica se ne'l db ai data di tipo date
poi questo query $query = "SELECT data,nome,luogo FROM calendario_eventi
WHERE data >='". $oggi ."' ORDER BY data ASC LIMIT 1"; dovrebe funtionare
scusa il mio italiano sono in italia solo da 4 mesi o acora da imparare :)

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 sonya
Se mi posso permettere, anche se hai risolto il problema, cerca di 
capire il motivo. [1]
Senza scendere nel dettaglio, mysql tratta le date come stringa (nel 
formato iso YYYY-mm-dd) oppure come numero YYYYMMDD, quindi:
select .. where field_data = '2006-09-09' funziona mentre non funziona 
la tua prima query select .. where field_data = 2006-09-09
quindi dovresti fare:
$sql = 'Select ... where field_data =" ' . date('Y-m-d') . '";';
Se invece utilizzavi un layer di astrazione della base date, non avevi 
questi problemi:
$sql ='Select .... where field_data = ? ';
$db->query($sql, date('Y-m-d'));
[1] Dal manuale mysql:
mysql> SELECT CURTIME();
         -> '23:50:26'<---Formato stringa
mysql> SELECT CURTIME() + 0;
         -> 235026.000000<---Formato numero
	Francesco