Class formulaire

Ratusse
Invité n'ayant pas de compte PHPfrance

24 avr. 2006, 12:41

Bonjour, j'ai fait une classe pour un formulaire avec de l'aide, et j'ai un pb...
Je fait plusieurs contrôles comme par exemple si c'est le format mail qui est choisi, je fais la véification que le mail soit bien au bon format etc...
Mais là, j'ai deux champs mot de passe, et je voudrais que qd ils ne sont pas égaux, une erreur s'affiche, seulement, comment faire pour travailler sur deux champs à la fois?
Voici une partie du code :
$erreur_message = array("min" => "caractères minimum", 
                        "max" => "caractères maximum", 
                        "email" => "courriel non valide",
                        "vide" => "champ obligatoire",
						);
alors ça c'est pr gérer les messages d'erreur comme vous pouvez vous en douter(tout les codes st des extraits, il y a d'autres messages d'erreur)...
Il faudra dc rajouter un message d'erreur...

Ensuite la fonction pour ajouter un champ
 function ajoutChamp($label, $nom, $type, $format=null, $oblig=true, $min=null, $max=null) {
        $this->champ_cour = sizeof($this->champs);
        $this->champs[$this->champ_cour] = new ClasseFormChamp($label, $nom, $type, $format, $oblig, $min, $max);
    }
Puis celle pour les champs apssword en particulier :
    function ajoutChampPassword($label, $nom, $min=null, $max=null) {
        $this->champ_cour = sizeof($this->champs);
        $this->champs[$this->champ_cour] = new ClasseFormChamp($label, $nom, "password", "", true, $min, $max);
        $this->champs[$this->champ_cour]->valCtlLimites($this->taille_std, 100);
    }
Puis ça pour définir les champs
    function ClasseFormChamp($label, $nom, $type=null, $format=null, $oblig=true, $min=null, $max=null) {
        $this->label = $label;
        $this->nom = $nom;
        $this->type = $type;
        $this->format = $format;
        $this->taille_min = $min;
        $this->taille_max = $max;
        $this->oblig = $oblig;
        if (($type == "select") || ($type == "checkbox") || ($type == "radio")) {
            $this->valeur = array();
            $this->options = array();
        }
        else {
            $this->valeur = null;
            $this->options = null;
        }
        $this->descro = null;
        if ($type == "checkbox") $this->multiple = true;
        else $this->multiple = false;
        $this->fonction = null;
        $this->ctl_taille1 = null;
        $this->ctl_taille2 = null;
        $this->fin_ligne = null;
      
Il ya aussi ça :
    function afficherFormPassword() {
        $html .= "<input class='form-input' type='password' name='$this->nom' size='$this->ctl_taille1'";
        if ($this->ctl_taille2) $html .= " maxlength='$this->ctl_taille2'";
        if ($this->valeur) $html .= " value='" . $this->valeur . "' />";
        else if ($this->descro) {
            $html .= " value='" . htmlentities(stripslashes($this->descro), ENT_QUOTES) . "'";
            $html .= " onFocus='this.value=\"\"' />";
        }
        else $html .= " value='' />";
        return $html;
    }
       
Ensuite, il y a pleins de verif comme celles ci :
    function valObligatoire() {
        if ($this->oblig) return true;
        else return false;
    }
Ou celle-ci :
function controlerEmail($valeur) {
    if (preg_match("/^[\w|-]+(\.[\w|-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/", $valeur)) return true;
    else return false;
}
Voilà, si vous avez besoin d'autres bout de code, ou d'explication , n'hesitez pas...
Merci mille fois d'avance, c'est très important pour moi...[/code]

Eléphant du PHP | 451 Messages

24 avr. 2006, 15:29

Comme ça n'a pas l'air d'inspirer beaucoup plus de monde que moi, je te réponds.

Je ne comprends pas ta question.
Si tu as 2 champs mot de passe, ils ont des noms différents (ou se trouvent dans des instances d'objets ou formulaires qui ont des noms différents).
Où est le problème pour les comparer ?

(Je ne te cache pas que ça ne m'a pas sauté aux yeux pour comprendre ta question et je n'ai pas épluché ton code en détail).
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Ratusse
Invité n'ayant pas de compte PHPfrance

24 avr. 2006, 16:35

Effectivement, ils ont des noms différents...
Mais je sais pas comment les comparer, même si je ne vois pas de pb comme tu l'as dis, je ne vois vraiment pas...
Si tu sais le faire et que ça te semble facile, vas-y dis le moi stp, ce serait super sympa...
Merci d'avance...

Eléphant du PHP | 451 Messages

25 avr. 2006, 07:02

Hum, je suis assez perplexe, j'ai l'impression que tu brules un peu les étapes : je ne vois pas comment tu peux en être arrivé à cette étape de ton application et bloquer sur un tel problème.
Enfin, je vais essayer de te répondre.
D'abord, je n'ai pas tous les éléments.
Tu as donné un tableau de messages d'erreur (dont je ne sais pas trop quoi penser)
un certain nombre de méthodes (fonctions) qui j'imagine appartiennent tous à la même classe (objet non instancié) mais pas les attributs (variables) de cet objet.

Ta fonction :
function afficherFormPassword() {
        $html .= "<input class='form-input' type='password' name='$this->nom' size='$this->ctl_taille1'";
        if ($this->ctl_taille2) $html .= " maxlength='$this->ctl_taille2'";
        if ($this->valeur) $html .= " value='" . $this->valeur . "' />";
        else if ($this->descro) {
            $html .= " value='" . htmlentities(stripslashes($this->descro), ENT_QUOTES) . "'";
            $html .= " onFocus='this.value=\"\"' />";
        }
        else $html .= " value='' />";
        return $html;
    }
me fait penser que l'objet qui possède cette méthode a aussi un attribut (variable) value.
Une solution serait donc d'ajouter une méthode (si elle n'existe pas) comme :
function ObtenirPassword() {
        return $this->valeur;
    }
J'imagine que si tu as 2 passwords, tu as aussi 2 instances d'objet et donc il te suffirait alors de comparer les résultats de la méthode ObtenirPassword pour les 2 instances.
if ($inst1->ObtenirPassword() != $inst2->ObtenirPassword()) {
           echo "<BR>Erreur mots de passe différents...";
}
    }
En remplacant bien sur :
inst1
et
inst2
Par les noms des objets dans ton code et en affichant le messsage d'erreur qui te convient.

Ceci dit encore une fois je n'ai pas tous les éléments et ton problème est peut être différent...
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Ratusse
Invité n'ayant pas de compte PHPfrance

25 avr. 2006, 10:44

Ok, merci, effectivement, je bloque sur un pb simple, mais en fait je comprends cette classe mais je me suuis fait aider pour la faire et mm plus...^^
J'édite si j'ai un pb...