uff mi sono incartato di nuovo![]()
Posto tutto il codice della funzione di ricerca nel db in base alle date inserite dall'utente:
..allora la funzione di cui sopra prima di lanciare le query di ricerca (ancora da scrivere) fa alcuni controlli.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>";
}
}
}
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

Rispondi quotando