2009-12-01 4 views
0

Jamais je ne me dérange pas essayé assez dur, voici ce que je cherchais:problèmes php avec la validation de la date

$dob = '1980-09-04'; 
echo $dob; 
$age = date('Y') - date('Y', strtotime($dob)); 
echo $age; 
if (date('md') < date('md', strtotime($dob))) { 
    $age--; 
    echo $age; 
} 

Désolé pour la question inutile.

+1

Astuce: Vous devriez poster exactement ce que vous voulez atteindre et ce qui ne va pas exactement ... – Franz

+1

et qu'est-ce qui ne fait pas ce que vous attendez de lui? – NDM

+1

Btw: Si vous avez besoin que la date soit au format "mm/jj/aaaa", alors il est faux de définir la valeur "maxlength" du champ "input" à 8. – Franz

Répondre

1

Vérification de 21 ans .... est-ce pour pr0n? Tout d'abord, MM/DD/YYYY est dangereux si vous écrivez quelque chose pour une utilisation internationale! Mieux vaut écrire

<select name='month'><option value='01'>Jan</option>.... 
<input name='day' maxlength='2' size='2' /> 
<input name='year' maxlength='4' size='4' /> 

Comme cela ne nous confondra pas Européens.

Deuxièmement, vous demandez leur date de naissance et de le stocker dans un paramètre & var nommé "âge" qui va vous mordre le cul si vous essayez tous de maintenir le code plus tard. Troisièmement, vos données d'exemple ne correspondent pas à l'entrée requise. Vous leur donnez un exemple avec des séparateurs et vous traitez en réalité 8 chiffres sans espace.

réponse actuelle: Cependant, si vous voulez valider la MMJJAAAA Icky supérieure à 8 chiffres chaîne essai:

if(!preg_match("/^\d{8}$/", $dob)) # fail if is not a string of 8 numeric digits. 
{ 
    .... 
} 
+0

Et votre

+0

Je viens de changer le code ci-dessus, merci pour l'idée de séparer le mois, le jour, l'année, mais je voulais juste une variable à appeler du script php, $ dob? – Newb

+0

Mordez la balle et utilisez 3 variables! Vous avez raison d'utiliser "YYYY-MM-DD" comme format interne. Voir ma diatribe sur le sujet: http://blogs.ecs.soton.ac.uk/webteam/2009/11/07/date-formats/ –