Pas évident à tout comprendre d'un seul coup ^^
Bon j'ai quand même réussi à faire mon tout premier objet, qui fonctionne

Meme si ma fonction TesterChampsIdentiques est un peu longue pour ce qu'elle fait.
J'ai toutefois un doute au niveau de tous mes foreach. J'utilise des variables ( $cle et $valeur) qui ne sont pas des propriétés de l'objet. je ne sais pas si j'ai eu tord mais mon raisonnement était que ces variables en question ne servent qu'au sein d'une fonction, donc il n'y a pas lieu que ces variables soient des propriétés de l'objet... puisqu'on ne s'en sert pas ailleur... ??
<?php
/*
A rajouter : Test valeur numérique et test valeurs identiques ( pours champs mot de passe )
*/
class VerifierFormulaire
{
// Propriétés
private $donnees;
private $erreurs;
private $ListeErreurs;
// Constructeur
public function __construct( $donnees )
{
$this -> donnees = $donnees;
$this -> erreurs = array();
//$this -> ListeErreurs = NULL;
}
// Méthodes
public function TesterChampsVides( $Champs )
{
$Champs = explode( ',', $Champs );
foreach( $this -> donnees as $cle => $valeur )
{
if ( ( in_array( $cle, $Champs ) ) && ( $valeur == NULL ) )
{
$this -> erreurs[] = 'Le champ '.$cle.' est obligatoire';
}
}
}
public function TesterChampsEmail( $Champs )
{
$Champs = explode( ',', $Champs );
foreach( $this -> donnees as $cle => $valeur )
{
if ( ( in_array( $cle, $Champs ) ) && ( !ereg( '.+(@.+)(\.[[:alpha:]]{2}([[:alpha:]]?))$', $valeur ) ) )
{
$this -> erreurs[] = 'Le champ '.$cle.' doit contenir une adresse email valide';
}
}
}
public function TesterChampsIdentiques( $Champs )
{
$Champs = explode( ',', $Champs );
$i = 1;
$x = NULL;
$y = NULL;
foreach( $this -> donnees as $cle => $valeur )
{
if ( in_array( $cle, $Champs ) )
{
if ( $i == 1 )
{
$x = $valeur;
$xNom = $cle;
$i++;
}
else
{
$y = $valeur;
$yNom = $cle;
}
}
}
if ( $x != $y )
{
$this -> erreurs[] = 'Les champs '.$xNom.' et '.$yNom.' doivent être identiques';
}
}
public function AfficherErreurs()
{
$this -> ListeErreurs .= '<ul>';
foreach( $this -> erreurs as $valeur )
{
$this -> ListeErreurs .= '<li>'.$valeur.'</li>';
}
$this -> ListeErreurs .= '</ul>';
return $this -> ListeErreurs;
}
}
?>
<?php
########## Vérification du formulaire
/*
##### Paramètres
- TestChampsVides : Retournera une erreur si les valeurs sont vides
- TestChampsEmail : Retournera une erreur si les valeurs ne sont pas du type [email protected]
*/
$TestChampsVides = 'Nom,Email'; // Entrez le nom des champs à vérifier ( Entre les '' et séparés par des virgules )
$TestChampsEmail = 'Email'; // Entrez le nom des champs à vérifier ( Entre les '' et séparés par des virgules )
$TestChampsIdentiques = 'Password,Confirmation'; // Entrez le nom des champs à vérifier ( Entre les '' et séparés par des virgules )
/*
##### Vérification
*/
if ( isset( $_POST ) )
{
$VerifForm = new VerifierFormulaire( $_POST );
$VerifForm -> TesterChampsVides( $TestChampsVides );
$VerifForm -> TesterChampsEmail( $TestChampsEmail );
$VerifForm -> TesterChampsIdentiques( $TestChampsIdentiques );
$ListeErreurs = $VerifForm -> AfficherErreurs();
echo $ListeErreurs;
}
?>
<form method="post" action="#">
<p><label>Nom</label><input type="text" name="Nom" /></p>
<p><label>Email</label><input type="text" name="Email" /></p>
<p><label>Password</label><input type="password" name="Password" /></p>
<p><label>Confirmation</label><input type="password" name="Confirmation" /></p>
<input type="submit" />
</form>
Pas évident à tout comprendre d'un seul coup ^^
Bon j'ai quand même réussi à faire mon tout premier objet, qui fonctionne :)
Meme si ma fonction TesterChampsIdentiques est un peu longue pour ce qu'elle fait.
J'ai toutefois un doute au niveau de tous mes foreach. J'utilise des variables ( $cle et $valeur) qui ne sont pas des propriétés de l'objet. je ne sais pas si j'ai eu tord mais mon raisonnement était que ces variables en question ne servent qu'au sein d'une fonction, donc il n'y a pas lieu que ces variables soient des propriétés de l'objet... puisqu'on ne s'en sert pas ailleur... ??
[php]<?php
/*
A rajouter : Test valeur numérique et test valeurs identiques ( pours champs mot de passe )
*/
class VerifierFormulaire
{
// Propriétés
private $donnees;
private $erreurs;
private $ListeErreurs;
// Constructeur
public function __construct( $donnees )
{
$this -> donnees = $donnees;
$this -> erreurs = array();
//$this -> ListeErreurs = NULL;
}
// Méthodes
public function TesterChampsVides( $Champs )
{
$Champs = explode( ',', $Champs );
foreach( $this -> donnees as $cle => $valeur )
{
if ( ( in_array( $cle, $Champs ) ) && ( $valeur == NULL ) )
{
$this -> erreurs[] = 'Le champ '.$cle.' est obligatoire';
}
}
}
public function TesterChampsEmail( $Champs )
{
$Champs = explode( ',', $Champs );
foreach( $this -> donnees as $cle => $valeur )
{
if ( ( in_array( $cle, $Champs ) ) && ( !ereg( '.+(@.+)(\.[[:alpha:]]{2}([[:alpha:]]?))$', $valeur ) ) )
{
$this -> erreurs[] = 'Le champ '.$cle.' doit contenir une adresse email valide';
}
}
}
public function TesterChampsIdentiques( $Champs )
{
$Champs = explode( ',', $Champs );
$i = 1;
$x = NULL;
$y = NULL;
foreach( $this -> donnees as $cle => $valeur )
{
if ( in_array( $cle, $Champs ) )
{
if ( $i == 1 )
{
$x = $valeur;
$xNom = $cle;
$i++;
}
else
{
$y = $valeur;
$yNom = $cle;
}
}
}
if ( $x != $y )
{
$this -> erreurs[] = 'Les champs '.$xNom.' et '.$yNom.' doivent être identiques';
}
}
public function AfficherErreurs()
{
$this -> ListeErreurs .= '<ul>';
foreach( $this -> erreurs as $valeur )
{
$this -> ListeErreurs .= '<li>'.$valeur.'</li>';
}
$this -> ListeErreurs .= '</ul>';
return $this -> ListeErreurs;
}
}
?>
<?php
########## Vérification du formulaire
/*
##### Paramètres
- TestChampsVides : Retournera une erreur si les valeurs sont vides
- TestChampsEmail : Retournera une erreur si les valeurs ne sont pas du type
[email protected]*/
$TestChampsVides = 'Nom,Email'; // Entrez le nom des champs à vérifier ( Entre les '' et séparés par des virgules )
$TestChampsEmail = 'Email'; // Entrez le nom des champs à vérifier ( Entre les '' et séparés par des virgules )
$TestChampsIdentiques = 'Password,Confirmation'; // Entrez le nom des champs à vérifier ( Entre les '' et séparés par des virgules )
/*
##### Vérification
*/
if ( isset( $_POST ) )
{
$VerifForm = new VerifierFormulaire( $_POST );
$VerifForm -> TesterChampsVides( $TestChampsVides );
$VerifForm -> TesterChampsEmail( $TestChampsEmail );
$VerifForm -> TesterChampsIdentiques( $TestChampsIdentiques );
$ListeErreurs = $VerifForm -> AfficherErreurs();
echo $ListeErreurs;
}
?>
<form method="post" action="#">
<p><label>Nom</label><input type="text" name="Nom" /></p>
<p><label>Email</label><input type="text" name="Email" /></p>
<p><label>Password</label><input type="password" name="Password" /></p>
<p><label>Confirmation</label><input type="password" name="Confirmation" /></p>
<input type="submit" />
</form>[/php]