2009-04-01 5 views
0

Nous devons insérer la date de naissance (qui est une liste déroulante contenant JJ ​​/ MM/AAAA) dans MySql en le validant. Comment ceci peut être fait?Comment valider les menus déroulants en PHP?


Son une __gVirt_NP_NN_NNPS<__ validation de formulaire pour la date de naissance qui est entrée par l'utilisateur des options dans la liste déroulante question menu.My est de savoir comment insérer cette date de naissance d'entrée en MySql avec PHP

Répondre

0

Votre question est un peu déroutante. Insérer des données "en les validant" n'a pas de sens.

Si vous voulez savoir comment insérer des données, c'est une question de base de MySQL qui est probablement mieux résolue en consultant le online documentation.

Si vous voulez savoir comment valider les données, vous devrez spécifier le type de validation que vous souhaitez - comme l'a fait Sanders. C'est un peu comme demander "comment puis-je faire une interface graphique?" Il y a des façons infinies de le faire. La question est trop vague.

Si vous voulez juste vérifier si la valeur soumise est une date valide, une manière rapide et sale (paresseuse) de le faire est juste de l'insérer dans la table (en supposant que vous avez une colonne du DATE/DATETIME type) , puis faites une requête de suivi pour récupérer la valeur stockée. Si la valeur enregistrée est la valeur "zéro" de ce type de données (c'est-à-dire '0000-00-00' ou '0000-00-00 00:00:00'), alors la valeur soumise n'était pas une date valide.

donc votre code ressemblerait à quelque chose comme:

<? 
$month = mysql_real_escape_string($_POST['month']); 
$day = mysql_real_escape_string($_POST['day']); 
$year = mysql_real_escape_string($_POST['year']); 
$query = "INSERT INTO my_table (`birthday`) VALUES ('$year-$month-$day')"; 
mysql_query($query); 
$query = "SELECT `birthday` FROM my_table WHERE `id`=LAST_INSERT_ID()"; 
$qid = mysql_query($query); 
$res = mysql_fetch_object($query); 
if ($res->birthday == '0000-00-00') { 
    // submitted date was invalid 
} 
?> 

Bien sûr, il y a de nombreux inconvénients du code ci-dessus. Idéalement, vous voulez probablement valider les données avant de les insérer, et si vous mettez à jour un enregistrement plutôt que d'en insérer un nouveau, vous devrez récupérer la valeur d'origine avant qu'elle ne soit écrasée par une valeur invalide.

BTW: Je pense que vous vouliez dire "liste déroulante" ou "liste de sélection". Un menu déroulant est autre chose.

-1

Quel type de validation? MySQL affichera une erreur lorsque la date est pas valide

1

Vous pouvez d'abord faire (pour chaque champ):

if((int) $field == 0) 
{ 
    return false; 
} 

Et après que vous pourriez faire:

$birthday = date('Y-m-d', strtotime($day . '-' . $month . '-' . $year)); 
mysql_query("INSERT INTO your_table(birthday) VALUES('" . $birthday . "')"; 
0

I supposons en déroulant vous voulez dire une série de sélections comme ça, non?

<select name="month"> 
<option value ="01">January</option> 
<option value = "02">February<option> 
... 
</select> 
<select name="day"> 
<option value = "01">01</option> 
... 
</select> 
<select name="year"> 
<option value = "1930">1930</option> 
[etc.] 

Si c'est le cas, vos données sont auto-validées. Du côté du serveur, vous pouvez simplement faire:

<?php 
$mysql_date = "$_POST[year]" . "-" . "$_POST[month]" . "-" . "$_POST[day]"; 
mysql_query("INSERT INTO your_table (`date`) VALUES ('$mysql_date')"); 
?> 

J'espère que je n'ai pas mal compris la question.

+0

C'est trompeur, ce n'est pas auto-validant de manière sécurisée. Quelqu'un pourrait facilement soumettre quelque chose qui n'est pas défini dans le code HTML et tenter d'exploiter votre requête. Ne comptez jamais sur un formulaire html/sélectionnez pour valider. –

Questions connexes