-
BETWEEN mysql
Salve ho un problemino con il between.
Sto cercando di effettuare una agenda visibile per giorno, settimana e mese.
Il problema me lod a nella visualizzazione per settimana:
Codice PHP:
$dataevento=(int)(date("N") - $x);
$dataevento=date("Y-m-d", (int)($calendar - ((60 * 60 * 24) * $dataevento)));
$arrdata=explode("-",$dataevento);
$orainizio = mktime($hour,0,0,$arrdata[1],$arrdata[2],$arrdata[0]);
$QueryWeek=mysql_query("SELECT * FROM agenda WHERE DataEvento='$dataevento' AND '$orainizio' BETWEEN OraInizio AND OraFine") or die (mysql_error());
while(...
allora i dati me li estrae ma il problema è questo se ce un appuntamento che inizia esempio alle 12:00 mi visualizza l'evento bene dalle 12 fino all'orario di fine appuntamento tipo 14:00.
Ma se invece l'appuntamento inizia alle 12:10 oppure alle 12:30 insomma oltre le 12:00 mi visualizza l'appuntamento partendo dalle 13:00.
come mai mi ma questo visto che 12:10 o 12:30 si trova nel confronto del between? :incavolat:incavolat:incavolat
-
Se OraInizio e OraFine sono i due campi di inizio e fine del singolo evento, è esattamente il comportamento atteso dalla query.
L'"errore" è che stai estraendo gli eventi che, alle ore 13:00 (l'$orainizio inserita nella query, a quanto ho capito), sono già iniziati (perché le 13:00 sono dopo le 12:10) e devono ancora finire (non l'hai specificato, ma probabilmente l'evento finisce dopo le 13:00).
Se invece ti interessa estrarre gli eventi che iniziano "dall'ora specificata e nell'ora seguente", questa è la query corretta:
Codice:
SELECT *
FROM agenda
WHERE DataEvento = '$dataevento'
AND OraInizio BETWEEN '$orainizio' AND '$orainizio' + INTERVAL 1 HOUR
Stammi bene...