Bonjour et meilleurs voeux à tous,
J'ai un petit souci avec un script de contrôle de champs de formulaire. Je sais que le script est correct (je l'ai utilisé avant de passer par l'utilisation de classes). Pouvez-vous me dire pourquoi, lorsque je valide le formulaire je n'ai pas d'alerte m'indiquant qu'il manque tel où tel champ ?
Merci d'avance.
Voici les parties de 2 fichiers concernés :
<?php
require('html_form.class.php');
require('class.mysql.php');
?>
<html>
<head>
<title>Formulaire d'inscription </title>
<link rel="stylesheet" type="text/css" href="../menu.css">
<script type="text/javascript">
function checkBeforeSubmit()
{
var cnom,cprenom,cpseudo,cpass,cpass2,cmail,cgroupe,cstatut;
with(window.document.inscription)
{
cnom=nom;
cprenom=prenom;
cpseudo=pseudo;
cpass=pass;
cpass2=pass2;
cmail=mail;
cgroupe=groupe;
cstatut=statut;
}
if(trim(cnom.value)=="")
{
alert("Veuillez saisir votre nom");
cnom.focus();
return false;
}
else if(trim(cprenom.value)=="")
{
alert("Veuillez saisir votre prénom");
cprenom.focus();
return false;
}
else if(trim(cpseudo.value)=="")
{
alert("Veuillez saisir votre pseudo");
cpseudo.focus();
return false;
}
else if(trim(cpass.value)=="")
{
alert("Veuillez saisir votre mot de passe");
cpass.focus();
return false;
}
else if(trim(cpass2.value)=="")
{
alert("Veuillez saisir votre mot de passe pour confirmation");
cpass2.focus();
return false;
}
else if(trim(cmail.value)=="")
{
alert("Veuillez saisir votre adresse couriel");
cmail.focus();
return false;
}
else if(trim(cstatut.value)=="1")
{
alert("Veuillez sélectionner votre statut");
cstatut.focus();
return false;
}
else if(trim(cgroupe.value)=="1")
{
alert("Veuillez sélectionner votre domaine");
cgroupe.focus();
return false;
}
else
{
cnom.value=trim(cnom.value);
cprenom.value=trim(cprenom.value);
cpseudo.value=trim(cpseudo.value);
cpass.value=trim(cpass.value);
cpass2.value=trim(cpass2.value);
cmail.value=trim(cmail.value);
cgroupe.value=trim(cgroupe.value);
cstatut.value=trim(cstatut.value);
var ok1 = true;
var msg1 ="";
if(!(trim(cpass.value)==trim(cpass2.value)))
{
msg1 += "Les mots de passe sont différents - Resaisissez vos mots de passe";
ok1 = false;
} // if
if (!ok1)
{
alert(msg1);
}
return ok1;
} // checkpasswords
function trim(str)
{
return str.replace(/^\s+|\s+$/g,'');
}
</script>
</head>
<?php
menu();
// créer une instance de formulaire
$frm = new HTML_Form();
// commencement du formulaire
$frmStr = $frm->startForm('#', 'post', 'inscription',
// attributs facultatifs pour le formulaire
array('name'=>'inscription', 'class'=>'myFormClass', 'onSubmit'=>'return checkBeforeSubmit()') ) .
// label pour la zone text
'<p>' . $frm->addLabelFor('nom', 'Nom : ') .
// Ajout input et label
$frm->addInput('text', 'nom', '', array('id'=>'nom', 'size'=>16, 'maxlength'=>50) ) . '</p>' .
'<p>' . $frm->addLabelFor('prenom', 'Prénom : ') .
$frm->addInput('text', 'prenom', '', array('id'=>'prenom', 'size'=>16, 'maxlength'=>50) ) . '</p>' .
'<p>' . $frm->addLabelFor('pseudo', 'Votre Pseudo : ') .
$frm->addInput('text', 'pseudo', '', array('id'=>'pseudo', 'size'=>16, 'maxlength'=>50) ) . '</p>' .
'<p>' . $frm->addLabelFor('pass', 'Mot de Passe : ') .
$frm->addInput('password', 'pass', '', array('id'=>'pass', 'size'=>16, 'maxlength'=>50) ) . '</p>' .
'<p>' . $frm->addLabelFor('pass2', 'Confirmer Mot de Passe : ') .
$frm->addInput('password', 'pass2', '', array('id'=>'pass2', 'size'=>16, 'maxlength'=>50) ) . '</p>' .
'<p>' . $frm->addLabelFor('mail', 'Votre Courriel : ') .
$frm->addInput('text', 'mail', '', array('id'=>'mail', 'size'=>40, 'maxlength'=>250) ) . '</p>' .
'<p>' . $frm->addLabelFor('statut', 'Statut : ') .
// Ajout d'une liste déroulante
$frm->addSelectList('statut', $statut_ar, false, 'Sélectionner', null, array('id'=>'statut') ) . '</p>' .
'<p>' . $frm->addLabelFor('groupe', 'Domaine : ') .
$frm->addSelectList('groupe', $groupe_ar, false, 'Sélectionner', null, array('id'=>'groupe') ) . '</p>' .
// l'ajout d'un bouton submit
'<p>' . $frm->addInput('hidden', 'submitted', 'Valider') . '</p>' .
'<p>' . $frm->addInput('submit', 'submitMyForm', 'Valider',
array('onSubmit'=>'return checkBeforeSubmit()') ) .
// Fin du formulaire
$frm->endForm();
// sortir les éléments de formulaire recueillies
echo $frmStr;
... (à suivre)
J'utilise le fichier de classe html_form.class.php suivant :
<?php
class HTML_Form {
// Déclaration de action et method
public function startForm($action = '#', $method = 'post', $id = NULL, $attr_ar = array() ) {
$str = "<form action=\"$action\" method=\"$method\"";
if ( isset($id) ) {
$str .= " id=\"$id\"";
}
$str .= $attr_ar? $this->addAttributes( $attr_ar ) . '>': '>';
return $str;
}
//
private function addAttributes( $attr_ar ) {
$str = '';
// vérifier les attributs minimisés
$min_atts = array('checked', 'disabled', 'readonly', 'multiple');
foreach( $attr_ar as $key=>$val ) {
if ( in_array($key, $min_atts) ) {
if ( !empty($val) ) {
$str .= " $key=\"$key\"";
}
} else {
$str .= " $key=\"$val\"";
}
}
return $str;
}
// Ajouter un input
public function addInput($type, $name, $value, $attr_ar = array() ) {
$str = "<input type=\"$type\" name=\"$name\" value=\"$value\"";
if ($attr_ar) {
$str .= $this->addAttributes( $attr_ar );
}
$str .= ' />';
return $str;
}
etc...
Afficher la suite