la data in mysql viene memorizzata in effetti in formato americano, cioè come hai detto tu anno-mese-anno. Ma con in mezzo il trattino, non il / ricordalo..
Se quindi chiedi una data in formato giorno-mese-anno puoi fare come hai fatto tu con explode o ancora meglio con la funzione date (http://it2.php.net/manual/en/function.date.php) :
Codice PHP:
$INIdata = explode("/",$_POST['data_inizio']);//data presa dal form inviato
$INIgiorno = int($INIdata[0]);//questo dovrebbe essere il giorno (1);
$INImese = int($INIdata[1]);//questo il mese (12);
$INIanno = int($INIdata[2]);//questo l'anno (2008);
$MYSQLdata = date("Y-m-d", mktime(0, 0, 0, $INImese, $INIgiorno, $INIanno));// scriverà 2008-12-01
la funzione MKTIME (http://it2.php.net/manual/en/function.mktime.php) rappresenta una dtaa in formato unix e unita a DATE puoi formattarla come meglio ti pare. Anzi, le due funzioni insieme ti permettono di fare calcoli su date, ad esempio
Codice PHP:
<?php
echo mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));// visualizza il giorno domani
echo mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));// visualizza la data di un mese fa
echo mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);// visualizza la data fra un anno
?>
IL metodo che scrivi per ottenere le disponibilitàò un buon mezzo ma forse è meglio confrontare due date. Avendo a disposizione $INIdata e $FINdata puoi scrivere
Codice PHP:
$query="SELECT date FROM prenotazioni WHERE date>='$INIdata' AND date <='$FINdata'";
come risultato avrai un array con tutte le date comrpese fra quelle due.