Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536

    Per qualche condizione if in più..

    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

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    funzione per il controllo di validità di una data
    Codice PHP:
    function ControlloData($data)
    {    
        if(!
    ereg("^[0-9]{2}/[0-9]{2}/[0-9]{4}$"$data))
        {        
              return 
    false;    
        }
        else
       {        
           
    $arrayData explode("/"$data);        
           
    $Giorno $arrayData[0];        
           
    $Mese $arrayData[1];        
           
    $Anno $arrayData[2];
           if(!
    checkdate($Mese$Giorno$Anno))
           {
                return 
    false;        
           }
           else
           {            
                return 
    true;        
           }    
        }


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.