Controllo formato data

  • Creatore Discussione Creatore Discussione Max61
  • Data di inizio Data di inizio

Max61

Utente Attivo
2 Mar 2014
760
4
18
Buongiorno,
ho trovato al seguente link di questo forum: http://forum.mrwebmaster.it/php/30571-controllo-input-inserimento-data.html
una discussione su come verificare la data immessa dall'utente, l'ho provata ma non mi funziona.
Il codice originale è questo e funziona:
PHP:
$a = '04-02-2015'; 

if(preg_match('/[0-9]{2}-[0-9]{2}-[0-9]{3}/',$a)) 

    echo 'Formato corretto'; 
else 
    echo 'Formato errato';

Il codice con il mio campo data è questo:
PHP:
$a= $data; 

if(preg_match('/[0-9]{2}-[0-9]{2}-[0-9]{3}/',$data)) 

    echo 'Formato corretto'; 
else 
    echo 'Formato errato';

Il formato data del campo $data é gg-mm-aaaa, nell'inserimento a video, ma è aaaa-mm-gg nella tabella e con il trattino anzichè lo slash /
cosa devo modificare?

Grazie per l'aiuto
Max61
 
Buongiorno,
ho trovato al seguente link di questo forum: http://forum.mrwebmaster.it/php/30571-controllo-input-inserimento-data.html
una discussione su come verificare la data immessa dall'utente, l'ho provata ma non mi funziona.
Il codice originale è questo e funziona:
PHP:
$a = '04-02-2015'; 

if(preg_match('/[0-9]{2}-[0-9]{2}-[0-9]{3}/',$a)) 

    echo 'Formato corretto'; 
else 
    echo 'Formato errato';

Il codice con il mio campo data è questo:
PHP:
$a= $data; 

if(preg_match('/[0-9]{2}-[0-9]{2}-[0-9]{3}/',$data)) 

    echo 'Formato corretto'; 
else 
    echo 'Formato errato';

Il formato data del campo $data é gg-mm-aaaa, nell'inserimento a video, ma è aaaa-mm-gg nella tabella e con il trattino anzichè lo slash /
cosa devo modificare?

Grazie per l'aiuto
Max61

Ho risolto in parte il problema, modificando questa riga di codice ho girato la data nel formato aaaa-mm-gg
PHP:
if(preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}/',$data))
adesso il problema è che accetta l'anno fino a 6 cifre!!!
E lo trova corretto, non sbagliato...

Questo è il codice dove inserisco la data:
PHP:
<input onFocus="this.style.background='#FFFFCC';" name="data" type="date" value="<?php echo $data; ?>" size="10" maxlength="10" required>

Come posso fare?

Grazie
Max61
 
Ciao, ti conviene usare la funzione checkdate() di php che ti invalida anche le date inesistenti come il 31 settembre
PHP:
$data = "2015-09-31";

$split = explode("-", $data);

if (!checkdate($split[1], $split[2], $split[0])) {
    die("la data non è valida");
}
 

Discussioni simili