valider le formulaire avant de le soumettre (plus compliqué que la vérification de champs vides)
j'ai un formulaire qui contient des entrées pour les temps (plus précisément, de l'ouverture et de la fermeture). lorsque le bouton envoyer est pressé, il va à une page php où ces entrées sont ajoutées à une base de données. je veux vérifier quelques points avant de permettre le formulaire pour soumettre. par exemple, je veux faire en sorte que l'heure de début est antérieure de plus de (moins de) la fin des temps. voici le formulaire:
Opens:
<select name="starthour1">
<option value="00">12</option>
<option value="01">1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>
<option value="08">8</option>
<option value="09">9</option>
<option value="10">10</option>
<option value="11">11</option>
</select> :
<select name="startminute1">
<option value="00">00</option>
<option value="15">15</option>
<option value="30">30</option>
<option value="45">45</option>
<option value="59">59</option>
</select>
<select name="startwhen1">
<option value="am">am</option>
<option value="pm">pm</option>
</select>
Closes:
<select name="endhour1">
<option value="00">12</option>
<option value="01">1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>
<option value="08">8</option>
<option value="09">9</option>
<option value="10">10</option>
<option value="11">11</option>
</select> :
<select name="endminute1">
<option value="00">00</option>
<option value="15">15</option>
<option value="30">30</option>
<option value="45">45</option>
<option value="59">59</option>
</select>
<select name="endwhen1">
<option value="am">am</option>
<option value="pm">pm</option>
</select>
j'ai trouvé un code javascript pour savoir comment vérifier la forme individuelle des éléments, mais je ne peux pas comprendre comment j'ai pu combiner plusieurs sans se soumettre. dans ma page php, j'ai le code suivant:
$starthour1=$_POST['starthour1'];
$startminute1=$_POST['startminute1'];
$startwhen1=$_POST['startwhen1'];
$endhour1=$_POST['endhour1'];
$endminute1=$_POST['endminute1'];
$endwhen1=$_POST['endwhen1'];
$start_time1=$end_time1="";
if($startwhen1=="pm"){
$starthour1=$starthour1+12;
}
if($endwhen1=="pm"){
$endhour1=$endhour1+12;
}
$start_time1=$starthour1.":".$startminute1.":00";
$end_time1=$endhour1.":".$endminute1.":00";
if($end_time1=="00:00:00"){
$end_time1="23:59:00";
}
echo "<br>start time is ".$start_time1;
echo "<br>end time is ".$end_time1;
$startnum=str_replace(":", "", $start_time1);
$endnum=str_replace(":", "", $end_time1);
if($endnum<$startnum){
echo "<br>start time can't be later than end time!";
}
else{
//add to database
}
cependant, la vérification de ce genre de choses après la présentation ne fait pas de sens. je suppose que j'ai pu rediriger retour à la page initiale si l'erreur a été trouvée, mais qui ne semble pas efficace.
aussi, je pensais peut-être que je pouvais avoir un peu de php sur la page avec le formulaire qui vérifie la validité. si il valide, il publie à la page php qui insère des trucs dans la base de données. est-il logique et est-il possible?
est-il une meilleure solution? j'imagine que c'est quelque chose que je pouvais faire avec du javascript, mais je n'ai pas été en mesure de le comprendre.
en outre, je tiens à informer l'utilisateur des entrées invalides, avec le texte qui s'affiche à côté de la zone de saisie. je devrais être capable de comprendre une fois que le reste fonctionne bien.
grâce.
OriginalL'auteur vee | 2010-07-08
Vous devez vous connecter pour publier un commentaire.
Ont le onSubmit() ou de l'action de la forme d'appeler une fonction JavaScript, comme ceci:
Puis, dans doSubmit (), vous pouvez effectuer une validation (et seulement fait soumettre le formulaire si elles passent)
Pour informer les utilisateurs de l'entrée non valide à côté de la véritable champ de formulaire, vous pouvez avoir caché des divs ou s'étend à côté de chaque champ, et l'utilisation de Javascript pour non-cacher si elles manquent une sorte de validation.
OriginalL'auteur amfeng
Toujours vérifier en PHP niveau de l'entrée de l'utilisateur, peu importe si vous vérifiez dans le côté client à l'aide de javascript.
En javaScript, je vous recommande d'utiliser une bibliothèque Js comme jQuery qui a un plugin pour la validation d'un formulaire. Très utile et facile à mettre en œuvre.
Au niveau PHP, je vous recommande d'utiliser filter_var fonctions. Très efficace aussi bien.
OriginalL'auteur Elzo Valugi
Envisager de transformer les Données du Formulaire dans DateTime des objets à la place. Cela va rendre la comparaison plus facile que de bricoler avec chaque partie individuellement. Elle veillera également à la Dateheure chaîne de mettre dans la base de données est sans danger pour l'insertion, parce que vous obtiendrez la chaîne à partir de la format() méthode.
oui, exactement.
OriginalL'auteur Gordon
merci pour l'aide! j'ai fini par utiliser:
avec:
OriginalL'auteur vee