uff mi sono incartato di nuovo
Posto tutto il codice della funzione di ricerca nel db in base alle date inserite dall'utente:
Codice PHP:
function ricerca($inizio, $fine){
function checkData($date)
{
list($dd,$mm,$yy)=explode("/",$date);
if ($dd!="" && $mm!="" && $yy!="")
{
if (is_numeric($yy) && is_numeric($mm) && is_numeric($dd))
{
return checkdate($mm,$dd,$yy);
}
}
return false;
}
$controlloin = checkData($inizio);
$controllofin = checkData($fine);
if ((($controlloin != 1)&& ($inizio != '')) && (($controllofin != 1)&& ($fine != '')))
{
echo "<center><b>Le date inserite non sono valide</b>
<input type=\"button\" value=\"Indietro\" onclick=\"history.back(1)\"></center>";
}
elseif(($controlloin != 1)&& ($inizio != ''))
{
echo "<center><b>la data d'inizio inserita non è valida.</b>
<input type=\"button\" value=\"Indietro\" onclick=\"history.back(1)\"></center>";
}
elseif(($controllofin != 1)&& ($fine != ''))
{
echo "<center><b>la data finale inserita non è valida.</b>
<input type=\"button\" value=\"Indietro\" onclick=\"history.back(1)\"></center>";
}
if ((($controlloin == 1)&& ($inizio != '')) && (($controllofin == 1)&& ($fine != '')))
{
list($giorno,$mese,$anno) = split("/",$inizio);
$datain = mktime(0,0,0,$mese,$giorno,$anno);
list($giorno,$mese,$anno) = split("/",$fine);
$datafin = mktime(0,0,0,$mese,$giorno,$anno);
if ($datain>$datafin)
{
echo "<center><b>la data d'inizio ricerca non può essere posteriore alla data di fine ricerca.</b>
<input type=\"button\" value=\"Indietro\" onclick=\"history.back(1)\"></center>";
}
}
}
..allora la funzione di cui sopra prima di lanciare le query di ricerca (ancora da scrivere) fa alcuni controlli.
l'utente può anche non inserire la data ma se la inserisce deve essere sempre nel formato che ho scelto (19/12/2010).
La funzione controlla quindi se è nel formato richiesto: entrambe, la prima e la seconda; altrimenti avverte l'utente che può tornare alla pagina precedente.
Il problema ce l'ho con il controllo finale che verifica se la data iniziale è posteriore.
Se è posteriore stampa il solito messaggio di errore ma dopo non so come procedere.
Se le date sono state inserite NO PROBLEM ma poi
non so come comportarmi se la prima o la seconda data non è stata inserita, perchè queste due ipotesi sono entrambe giuste (l'Utente inserendo solo la prima avvia una query che seleziona tutti i record a partire da quella data in poi e viceversa se inserisce la seconda data avvia una query che seleziona tutti i record fino a una certa data). Con il codice delle query non dovrei avere difficoltà, ho già fatto una cosa del genere,
però ora non so come comportarmi con gli if che incominciano a cozzare fra loro.
Mi potete aiutare a venirne a capo?
grazie
ps: si lo so il codice non è un granchè
ma non chiedetemi di stravolgere tutto per piacere