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