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

Zend_Form PHP Discussion :

Validateur inserton 3 champs-> concaténation des 3 en affichage


Sujet :

Zend_Form PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut Validateur inserton 3 champs-> concaténation des 3 en affichage
    Bonjour à tous,

    Voilà dans mon formulaire j'ai 3 champs pour l'insertion.
    A l'affichage, je concatène les 3 champs pour me donner une valeur globale.

    J'utilise souvent le validateur Zend_Validate_Db_NoRecordExists.
    Pour donner un exemple concret:

    le 1er représente une version majeure, le 2e représente une version mineur et le 3e un patch.
    Exemple:


    1er champ = 9
    2e champ = 2
    3 champ = 3

    A l'affichage cela donne => 9.2.3

    Le but de la manœuvre est que je dois avoir un seul enregistrement 9.2.3
    Et donc autorisé par exemple 9.1.2

    Pourriez vous m'aider s'il vous plaît ?

    Merci d'avance pour vos réponses.

    Cordialement,

  2. #2
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Je sais qu'il est tôt pas encore de café et tout sa mais j'ai rien compris

    Tu a un formulaire avec 3 champs c'est sa? a la validation tu veux les concaténer? Mais oui est ton soucis exactement?

    Il nous est plus facile de t'aider si tu nous montrais un minimum de ton code qui marche pas.
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut
    bonjour EIN-LESER,

    Merci d'avoir répondu.
    en fait je pense je me suis mal exprimé si tu veux j'ai 3 champs différents pour 3 colonnes dans la table.

    les 3 colonnes sont : major_release, minor_release et patch_release.

    Le bout du formulaire :

    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
     
    $majorrelease = new Zend_Form_Element_Text('major_release');
    $majorrelease->setLabel('Version majeure')
    		  ->setRequired(true)
    		  ->addFilter('StringTrim')
    		  ->addValidator('Digits')
    		  ->addValidator($valid)
    		  ->addValidator('NotEmpty');
     
    $minorrelease = new Zend_Form_Element_Text('minor_release');
    $minorrelease->setLabel('Version mineure')
    		  ->setRequired(true)
    		  ->addFilter('StringTrim')
    		  ->addValidator('Digits')
    		  ->addValidator($valid)
    		  ->addValidator('NotEmpty');
     
    $patchrelease = new Zend_Form_Element_Text('patch_release');
    $patchrelease->setLabel('Version patch')
    		  ->setRequired(true)
    		  ->addFilter('StringTrim')
    		  ->addValidator('Digits')
    		  ->addValidator($valid)
    		  ->addValidator('NotEmpty');

    A l'affichage je les concatène pour que cela devienne une version, du type 9.1.3

    le code de la vue pour la concaténation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td><?php echo $netasqversion['major_release'].'.'.$netasqversion['minor_release'].'.'.$netasqversion['patch_release']; ?></td>
    Le problème est que le validateur s'exprime sur 1 seul champ.
    Je veux utiliser Zend_Validate_Db_NoRecordExists.

    Mon problème est que je ne veux pas insérer dans la base de données si la version existe comme celle que j'ai mis plus haut(9.1.3), mais cela représente 3 colonnes dans la base et donc 3 champs dans le formulaire.

    Merci d'avance pour l'aide apportée.

    Cordialement,

    ps: j'espère avoir été plus clair lol.

  4. #4
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Pour être honnête je me sers jamais de cms c e qui fait que ma réponse ne pourra être que celle d'un dev a l'ancienne

    Ce que tu m'explique est assez simple a faire.

    1 formulaire a 3 entrées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form method="post" action="cible.php">
     <input type="text" name="major_release" />
     <br/>
     <input type="text" name="minor_release" />
     <br/>
     <input type="text" name="patch_release" />
     <br/>
    </form>
    Ici dans l'exemple le formulaire renvoi vers la page cible.php

    sur la page cible tu récupère tes infos saisi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?PHP
    $major_release=$_POST['major_release'];
    $minor_release=$_POST['minor_release'];
    $patch_release=$_POST['patch_release'];
    $version_concatene=$major_release.'.'.$minor_release.'.'.$patch_release;
    ?>
    Et voila plus qu'a faire ta requête insert et sa marcherais.

    Apres je connais pas la marche de manœuvre que te laisse ton cms.
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut
    Coucou,

    Merci pour ta réponse.
    En fait j'ai trouvé solution à mon problème.
    Je post si quelqu'un a besoin.
    J'ai crée une nouvelle classe validateur.

    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
     
    class Application_Validate_VerificationVersion extends Zend_Validate_Abstract
        {
            const MSG = 'verification_version'; 
     
            protected $_messageTemplates = array(
                self::MSG => 'La Version existe dans la base actuellement'
            );
     
            public function isValid($value, $context = null)
            {
                $value = (string) $value;
                $this->_setValue($value);
     
                $ar_data['major_release'] = $context['major_release'];
    			$ar_data['minor_release'] = $context['minor_release'];
                $ar_data['patch_release'] = $value;
     
                $netasqversion = new Application_Model_DbTable_Netasqversion();          
                if ($netasqversion->verification_version($ar_data) == 0) return true;
     
                $this->_error(self::MSG);
                return false;
            }
        }
    Chargement au niveau du bootstrap :

    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
     
     
    protected function _initAutoload()
        {
    		// On enregistre les modules (les parties de notre application), souvenez-vous : Backend et Frontend
    		$loader = new Zend_Application_Module_Autoloader(array(
    		'namespace' => '',
    		'basePath'  => APPLICATION_PATH,
    		'resourceTypes' => array(
                    'validator' => array(
                    'path'      => 'forms/validators',
                    'namespace' => 'Application_Validate',
            )
    	    )
    		));
     
    		return $loader;
     
    	}
    Et écrire une nouvelle fonction dans mon Db_table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    public function verification_version($data)
    	{
    		$db = $this->getAdapter('dbAdapter');
    		$query = $db->select()
    		->from($this->_name, 'COUNT(*)')
    		->where("major_release = ?", $data['major_release'])
    		->where("minor_release = ?", $data['minor_release'])
    		->where("patch_release = ?", $data['patch_release']);
     
    		return $db->fetchOne($query);
     
    	}
    ET enfin intégrer le validateur dans le dernier champ du formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $patchrelease = new Zend_Form_Element_Text('patch_release');
    $patchrelease->setLabel('Version patch')
                      ->setRequired(true)
    		  ->addFilter('StringTrim')
    		  ->addValidator($valid2)
    		  ->addValidator($validfloat)
    		  ->addValidator(new Application_Validate_VerificationVersion())
    		  ->addValidator('NotEmpty');
    Merci pour l'aide.
    Sujet résolu.
    Bonne continuation.
    Cordialement,

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

Discussions similaires

  1. Comment concaténer des champs dans un seul champ
    Par rj450 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/08/2010, 14h22
  2. [CTE] Concaténer des champs de plusiers lignes
    Par chris92 dans le forum Développement
    Réponses: 7
    Dernier message: 27/07/2009, 11h17
  3. Réponses: 7
    Dernier message: 22/01/2009, 14h34
  4. Concaténation des champs
    Par anas.eh dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 15/08/2008, 12h12
  5. [débutant] concaténer des champs.
    Par goony dans le forum Langage SQL
    Réponses: 15
    Dernier message: 25/08/2005, 09h28

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