IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] Problème avec une class [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Points : 107
    Points
    107
    Par défaut [POO] Problème avec une class
    Bonjour,

    J'ai une question car en faite je suis entrain de faire une class pour valider des formulaire. Et donc dans cette class jai une fonction (que le nommera param) qui me permet de récupérer les information du formulaire (nom du champ, erreur a afficher, type accepte) et donc cette fonction est appelé autant de fois qu'il a de champ vérifier dans le formulaire.

    Donc ma question est : Puis je récupérer toute les information mis dans chaque fonction param appelé que je met dans un tableau, et que je suis sur qu'il y plus de paramêtre a récupere, j'execute les different test sur ce que contient le tableau.

    Car mon probléme pour le moment est que c'est séquentiel et qu'il fait tous les test pour chaque fonction param appeler alors que moi je voudrais tous récuperer puis faire les test.

    Merci a vous pour vos lumiere.

  2. #2
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Pourrais-tu t'exprimer de façon plus claire, parce que là :
    Donc ma question est : Puis je récupérer toute les information mis dans chaque fonction param appelé que je met dans un tableau, et que je suis sur qu'il y plus de paramêtre a récupere, j'execute les different test sur ce que contient le tableau.

  3. #3
    Membre régulier Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    On va essayer autrement donc voila dans cette classe jai une fonction param qui execute une autre fonction verif critere (empty,numerique,mail....) et elle appel une fonction pour récupérer les erreurs et si aucun erreur est trouver on valide les saisi du formulaire sauf que avec cette methode il me valide pas tous le formulaire d'un seul coup mais champ par champ.

    Alors que moi je voudrais pouvoir verifier tous d'un bloc car si il trouve une erreur sur l'un des element, il arrete tous et donc ne continue pas la validation tant que l'erreur est pas corrigé.

    Merci a toi

  4. #4
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Et comment on fait sans ton code ?

    Moi j'aurais fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       $a = array(
                 array($champ[$N], 'isMail'),
                 .....
                );
     
       $check = new Verif($a);
       if ($check->verif()) { ... }
    Où isMail est une fonction de callback

  5. #5
    Membre régulier Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    voila ma classe un peut simplifier mais le principe est la. Sinon je voie pas trop pour l'histoire du callback. merci a toi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?php
    class val_form
    {
      protected $tab_param  = array();
     
     
      function __construct()
      {
     
      }
     
      /***
      * $nom_champ on indique ici le name de l'input
      * $tab_parametre est un tableau par exemple array('email'=>'message d'erreur')
      ****/ 
    	public function param($nom_champ,$tab_parametre) 
    	{
    	  //Permet de creer des tableau de critere
      	foreach($tab_parametre as $critere => $erreur)
      	{
         $this->tab_param[$critere][$nom_champ] = $erreur;
        }
     
        $this->eval_critere($this->tab_param);
      }
     
      protected function eval_critere($eval_critere)
      {
        foreach(array_keys($eval_critere) as $critere)
        {
          foreach($eval_critere[$critere] as $nom_champ => $error)
          {
        		switch($critere) 
            {          				
        			case 'email':
        			   $this->verif_mail($nom_champ,$error);
        				break;                                                                                                     	
        			default:
        				break;
        		}        
          }
        }
      }
     
      protected function verif_mail($nom_champ,$erreur)
      {
      	if(!preg_match("!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!",$this->tab_val[$nom_champ])) 
      	{
      	   $this->tab_erreur[$nom_champ][] = $erreur;	
      	} 
      } 
     
      public function recup_error()
      {
        $this->tab_erreur_debug;
      }
     
      function __destruct()
      {  
      }
    }
    ?>

  6. #6
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Pas sur d'avoir tout pigé... Mais en gros, y a pas de mystère, soit tu fais un truc comme indiqué par |PaRa-BoL c'est à dire qu'au lieu d'appeler N fois ta fonction param(), tu l'appelles une fois avec un gros tableau qui contient déjà toutes les infos.
    Ce que tu peux faire aussi, et qui revient un peu au même, c'est de ne pas traiter les champs dans la fonction param(), mais juste te contenter de les stocker dans un gros tableau dans ta classe. Ensuite une fois que tu as fourni toutes les infos à ta classe (en ayant appelé param() autant de fois que nécessaire), tu appelles une autre fonction, disons process(), qui elle va parcourir le gros tableau pour vérifier tous les champs et stopper dès qu'il y a une erreur.

  7. #7
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Voila comment j'aurais fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    public function check($req = array(), $opt = array())
    {
    	$this->error = array();
     
    	foreach($req AS $name => $type) {
    		if (!isset($_POST[$name]) || !validate::$type($_POST[$name])) {
     
    			$this->error[$name] = true;
    		}
    	}
    	foreach($opt AS $name => $type) {
    		if (isset($this->args[$name]) && !validate::$type($this->args[$name])) {
    			$this->error[$name] = true;
    		}
    	}
     
    	if (count($this->error) > 0) {
    		return false;
    	}
     
    	return true;
    }
    Après t'as plus qu'a fait une classe "Validate" avec des methodes static genre 'isMail', 'isString', etc...
    Et faire genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $req = array(
                'mail' => 'isMail',
                'login' => 'isString'
              );
     
    $check = new check();
    if ($check->check($req, array())) { ... }
    Où 'mail' et 'login' sont des valeurs postées.

    Au moins c'est plus claire et tu sépares tes fonctions 'filtres' si tu veux les réutiliser dans un autre contexte

  8. #8
    Membre régulier Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    Ok merci pour votre aide, j'ai pigé le truc.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Problème avec une flèche
    Par damienIRIS dans le forum Langage
    Réponses: 12
    Dernier message: 05/03/2008, 14h28
  2. [POO] Problème avec une classe + requêtes sql
    Par mithrendil dans le forum Langage
    Réponses: 2
    Dernier message: 30/04/2007, 08h27
  3. Problème avec une classe générique
    Par Core8 dans le forum C++
    Réponses: 3
    Dernier message: 19/03/2007, 03h18
  4. Problème avec une classe ActionScript
    Par Patryk403 dans le forum Flash
    Réponses: 3
    Dernier message: 06/08/2006, 12h42
  5. Problème avec une classe... "without object"
    Par z980x dans le forum C++
    Réponses: 8
    Dernier message: 27/04/2006, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo