Leçon N° 08 : Classes et objets
Une validation de formulaire plus complèteSolutionSolution & source***
•Ajouter un champ adresse email (utiliser la méthode isEmailAddress fournie dans la classe
Notes de page
Source: lesson_08_form_2.phpRésultat
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<meta name="lang" content="fr" />
<title>Premier formulaire : </title>
<link rel="stylesheet" 
    href="../style_sheets/lesson_08_form_2_style.css" 
    type="text/css">
</head>
<body>
<H4>Formulaire de saisie</H4>
<?php
require ("lesson_08_form_2_form.php");
formulaire();
?>


Fichier : lesson_08_form_2_form.php
<?php
function formulaire($nom="",$flag_nom="",$prenom="",$flag_prenom="")
{
    
$dest_file="lesson_08_form_2_validation.php";
    echo 
"<table CELLSPACING=2 class=form CELLPADDING=2>";
    echo 
"<TR><TD COLSPAN=2 CLASS=header><small>
        Informations à saisir :</td></tr>"
;
    echo 

    <form action=show_exercises.php?exercise=
$dest_file 
    method=post>"
;
    
//nom
    
($flag_nom==true)?print"<TR CLASS=erreur>":
        print 
"<TR CLASS=normal>";
    echo 
"<td>Nom : </td>"
    echo 
"<TD align=right><b><input type=text  
        SIZE=20 NAME=nom value='"
.$nom."'>&nbsp;</td></TR>";
    
//prenom
    
($flag_prenom==true)?print "<TR CLASS=erreur>":
        print 
"<TR CLASS=normal>";
    echo 
"<td>Prénom : </td>"
    echo 
"<TD align=right><b><input type=text size=20 
        NAME=prenom value='"
.$prenom."'>&nbsp;</td></TR>";
    
//fin de table
    
echo "<tr CLASS=envoyer><td align=right colspan=2>
        <input type=submit 
        NAME=Login value='ENVOYER'>&nbsp;&nbsp;&nbsp;</DIV>
        </td></tr>"
;
    echo 
"</table><p>&nbsp;</p>";
}
?>


Fichier : lesson_08_form_2_validation.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<meta name="lang" content="fr" />
<link rel="stylesheet" 
    href="../style_sheets/lesson_08_form_2_style.css" 
    type="text/css">
</head>
<body>
<?php
// inclusion de la classe class
include("lesson_08_form_2_class.php");
// création d'un object: instanciation de la classe
$objValidation = new classFormValidation();
// validation de chaque champ
//nom
$objValidation->isName("nom"
"ne doit comprendre ni chiffres ni caractères spéciaux"); 
$objValidation->isEmpty("nom""ne peut être vide");
$flag_nom false;
//prenom
$objValidation->isName("prenom"
    
"ne doit pas comprendre de chiffres 
    ni de caractères spéciaux spéciaux"
); 
$objValidation->isEmpty("prenom""ne peut être vide"); 
$flag_prenom false;
if (
$objValidation->isError())
{
    
$errors $objValidation->_errorList;
    echo 
"<b>L'opération n'a pas pu être effectuée, une 
    ou plusieurs informations sont manquantes.</b> <p> 
    Merci de fournir les informations demandées:"
;
    echo 
"<ul>";
    foreach (
$errors as $e)   
    {
        echo 
"<li> La valeur du champ :<b>" 
        
$e['field']."</b> que vous avez saisi (".
        
$e['value'].") n'est pas valide :".$e['msg']."<p>";            
        (
$e['field'] == "nom")?$flag_nom true : print "";
        (
$e['field']=="prenom")?$flag_prenom=true:print "";
    }   
    echo 
"</ul>";
    require (
"lesson_08_form_2_form.php");
    
formulaire($_POST['nom'],$flag_nom,
        
$_POST['prenom'],$flag_prenom);
}
else
{
    
// traitement des données
    
echo "Les données semblent valides";
}
?> 

Fichier : lesson_08_form_2_class.php
<?php
class classFormValidation
{
    
//  variable de classe
    
var $_errorList;
    
// methode publique : constructor, RAZ liste des erreurs
    // NB:le constructeur porte le même nom que la classe et 
    // s'execute à chaque instantiation de la classe
    // le mot-clé this est utilisé pour appeler une méthode 
    // qui est à l'interieur de la classe
    
function function_classFormValidation()
    {
        
$this->resetErrorList();
    }
    
//****************************************
    //pour  voir si la valeur n'est pas vide
    
function isEmpty($field$msg)
    {
        if (isSet(
$_POST[$field])) 
        {
            if     (
trim($_POST[$field]) <> "")
            {
                return 
true;
            }
            else
            {
                
$this->_errorList[] = array("field" => $field
                    
"value" => $_POST[$field], "msg" => $msg);
                return 
false;
            }
        }
        else
        {
            
$this->_errorList[] = array("field" => $field
                
"value" => $_POST[$field], "msg" => $msg);
            return 
false;
        }
    }
    
//***************************************************
    //methode pour regarder si la valeur n'a pas de chiffres  
    //ou autres symboles et renvoyer le résultat
    
function isName($field$msg)
    {
        
//$value = $this->_getValue($field);
        
$value $_POST[$field] ;
        
$pattern "/[]1234567890<\>\&\"\#\{\(\[\|\^\@\)\=";
        
$pattern .="\}\,\?\;\:\\\!\§\/\*\%\$\£\-\+\°]/";
        if (!
preg_match($pattern$value))
        {
            return 
true;
        }
        else
        {
            
$this->_errorList[] = array("field" => $field
                
"value" => $value"msg" => $msg);
            return 
false;
        }
    }
    
    
//***********************************************
    //methode pour savoir si la valeur est une adresse email
    
function isEmailAddress($field$msg)
    {
        
//$value = $this->_getValue($field);
        
$value $_POST[$field] ;
        
$pattern "/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])";
        
$pattern .="*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/";
        if(
preg_match($pattern$value))
        {
            return 
true;
        }
        else
        {
            
$this->_errorList[] = array("field" => $field
                
"value" => $value"msg" => $msg);
            return 
false;
        }
    }

    
//*************************************************
    //methode pour savoir si la valeur est une date valide 
    
function isDate($date_day,$date_month,$date_year$msg)
    {
        
//$value = $this->_getValue($field);
        
$field "Date";
        
$value "Day:".$_POST[$date_day]." Month:".
            
$_POST[$date_month]." Year:".$_POST[$date_year];
        if(!
checkdate($_POST[$date_month],$_POST[$date_day],
            
$_POST[$date_year]))
        {
            
$this->_errorList[] = array("field" => $field
                
"value" => $value"msg" => $msg);
            return 
false;
        }
        else
        {
            return 
true;
        }
    }

    
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //methode pour dire s'il y a ou non des erreurs
    
function isError()
    {
        if (
sizeof($this->_errorList) > 0)
        {
            return 
true;
        }
        else
        {
            return 
false;
        }
    }
    
// remise à 0 de la liste des erreurs
    
function resetErrorList()
    {
        
$this->_errorList = array();
    }
}

?>

Fichier : ../style_sheets/lesson_08_form_2_style.css
/* style pour l'entête du tableau */
table.form {
      font-family: Arial, Helvetica, Sans-Serif;
    font-size:  10pt;
    font-weight: Bold;
    color: White;
    border:thin solid navy;
    background: white;
}
/* style pour l'entête du tableau */
td.header {
      font-family: Arial, Helvetica, Sans-Serif;
    font-size:  10pt;
    font-weight: Bold;
    color: White;
    background: navy;
}
/*style normal : pas d'erreur de ssaisie */
TR.normal {
    font-family: Arial, Helvetica, Sans-Serif; 
    font-size: 9pt;
    color: Black;
    background: #E6E6E6;
}
/* style a appliquer en cas d'erreur (fond rouge) */
TR.erreur {
    font-family: Arial, Helvetica, Sans-Serif; 
    font-size: 9pt;
    color: Red;
    background: #FFC2C4;
}
/* style por la dernière ligne du tableau (bouton envoyer) */
TR.envoyer {
    font-family: Arial, Helvetica, Sans-Serif; 
    font-size: 9pt;
    color: lime;
    background: navy;
}

Premier formulaire :

Formulaire de saisie

Informations à saisir :
Nom :  
Prénom :  
   

 


Tous droits réservés. 2005-2020