Class formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Class formulaire

par Ratusse » 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...

par jpaul » 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...

par Ratusse » 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...

par jpaul » 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).

Class formulaire

par Ratusse » 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]