1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2004
    Messages
    1 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 323
    Points : 736
    Points
    736

    Par défaut Problème avec le nombre de paramètres d'une fonction

    Bonsoir Imikado

    Mon problème est comme indiqué dans le titre voici les détails :

    la fonction dans ma couche modèle :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function maScolarite($sParamRec,$sParamRec2,$sParamRec3){
        return $this->findMany('SELECT * FROM t_mesinfos WHERE concat_ws (" ",`noms_adh`,`prenoms_adh`) LIKE "%:Parametre1%"
        AND `Ansco_adh` LIKE :Parametre2 AND `Ecole_adh` LIKE :Parametre3 ORDER BY concat_ws (" ",`noms_adh`,`prenoms_adh`)',
        array('Parametre1'=>$sParamRec,'Parametre2'=>$sParamRec2,'Parametre3'=>$sParamRec3) ) ;
        }

    La fonction dans mon contrôleur :
    Code php : 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
     
    public function _recScolarite(){
    	//tableau pour recuperer les informations
            $tmesinfos=null;
            //si on effectue une recherche
            if(_root::getParam('lenomcomplet') and _root::getParam('lannee')){
            $tmesinfos=model_t_mesinfos::getInstance()->maScolarite(_root::getParam('lenomcomplet'),_root::getParam('lannee'),_root::getParam('monecole') );
            }
            $tansco=model_ansco::getInstance()->getSelect();
            $t_mesecoles=model_t_mesecoles::getInstance()->getSelect();
     
    		$oView=new _view('t_mesinfos::recScolarite');
    		$oView->tansco=$tansco;
    		$oView->t_mesecoles=$t_mesecoles;
    		$oView->t_mesinfos=$tmesinfos;
     
    		$this->oLayout->add('main',$oView);
    	}

    et le un extrait de ma vue :
    Code html : 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
     
    <?php
    $oForm=new plugin_form();
    ?>
    <h5>RECHERCHE PAR LE NOM COMPLET</h5> 
    <br></br>
    <form action=" " method="POST">
            <label>Entrer le Nom Complet :</label><?php echo $oForm->getInputText('lenomcomplet');?>
            <br></br>
     
            <label>Choississez Annee Academique : </label> 		
    	<?php echo $oForm->getSelect('lannee',$this->tansco)?>
    	<br></br>
     
        	<label>Choississez l'Ecole : </label>
        	<?php echo $oForm->getSelect('monecole',$this->t_mesecoles)?> 
         	<br></br>
     
        	<input type="submit" value="rechercher"/>
    </form>

    Pour finir voici l'erreur que j'ai :
    PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
    Hors j'ai bien les trois paramètres qui sont passés au formulaire :calim2:

    Detail:
    #0 exception_error_handler( , 'PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' , 'C:\wamp64\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php' , , Array ( [sReq] => SELECT * FROM t_mesinfos WHERE concat_ws (" ",`noms_adh`,`prenoms_adh`) LIKE "%:Parametre1%" AND `Ansco_adh` LIKE :Parametre2 AND `Ecole_adh` LIKE :Parametre3 ORDER BY concat_ws (" ",`noms_adh`,`prenoms_adh`) [tParam] => Array ( [Parametre1] => sssssss [Parametre2] => 2012-2013 [Parametre3] => CIFA ) [tATTRERRMODE] => Array ( [SILENT] => 0 [WARNING] => 1 [EXCEPTION] => 2 ) [tATTRCASE] => Array ( [LOWER] => 2 [NATURAL] => 0 [UPPER] => 1 ) [sth] => PDOStatement Object ( [queryString] => SELECT * FROM t_mesinfos WHERE concat_ws (" ",`noms_adh`,`prenoms_adh`) LIKE "%:Parametre1%" AND `Ansco_adh` LIKE :Parametre2 AND `Ecole_adh` LIKE :Parametre3 ORDER BY concat_ws (" ",`noms_adh`,`prenoms_adh`) ) ) )
    #1 C:\wamp64\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php (251)
    PDOStatement -> execute( Array ( [Parametre1] => sssssss [Parametre2] => 2012-2013 [Parametre3] => CIFA ) )
    #2 C:\wamp64\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php (150)
    abstract_sgbd_pdo -> query( 'SELECT * FROM t_mesinfos WHERE concat_ws (" ",`noms_adh`,`prenoms_adh`) LIKE "%:Parametre1%"
    AND `Ansco_adh` LIKE :Parametre2 AND `Ecole_adh` LIKE :Parametre3 ORDER BY concat_ws (" ",`noms_adh`,`prenoms_adh`)' , Array ( [Parametre1] => sssssss [Parametre2] => 2012-2013 [Parametre3] => CIFA ) )
    #3 C:\wamp64\www\mkframework\lib\framework\abstract\abstract_model.php (134)
    abstract_sgbd_pdo -> findMany( Array ( [0] => SELECT * FROM t_mesinfos WHERE concat_ws (" ",`noms_adh`,`prenoms_adh`) LIKE "%:Parametre1%" AND `Ansco_adh` LIKE :Parametre2 AND `Ecole_adh` LIKE :Parametre3 ORDER BY concat_ws (" ",`noms_adh`,`prenoms_adh`) [1] => Array ( [Parametre1] => sssssss [Parametre2] => 2012-2013 [Parametre3] => CIFA ) ) , 'row_t_mesinfos' )
    #4 C:\wamp64\www\mkframework\data\genere\rustaconnect\model\model_t_mesinfos.php (25)
    abstract_model -> findMany( 'SELECT * FROM t_mesinfos WHERE concat_ws (" ",`noms_adh`,`prenoms_adh`) LIKE "%:Parametre1%"
    AND `Ansco_adh` LIKE :Parametre2 AND `Ecole_adh` LIKE :Parametre3 ORDER BY concat_ws (" ",`noms_adh`,`prenoms_adh`)' , Array ( [Parametre1] => sssssss [Parametre2] => 2012-2013 [Parametre3] => CIFA ) )
    #5 C:\wamp64\www\mkframework\data\genere\rustaconnect\module\t_mesinfos\main.php (115)
    model_t_mesinfos -> maScolarite( 'sssssss' , '2012-2013' , 'CIFA' )
    #6 C:\wamp64\www\mkframework\lib\framework\class_root.php (264)
    module_t_mesinfos -> _recScolarite( )
    #7 C:\wamp64\www\mkframework\data\genere\rustaconnect\public\index.php (47)
    _root -> run( )
    #8 {main}
    Merci de m'aiguiller

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Ingénieur développement
    Inscrit en
    décembre 2006
    Messages
    4 788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2006
    Messages : 4 788
    Points : 18 510
    Points
    18 510
    Billets dans le blog
    17

    Par défaut

    D'apres la doc pdo, je pense qu'il faut prefixer les placeholder par ":"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function maScolarite($sParamRec,$sParamRec2,$sParamRec3){
        return $this->findMany('SELECT * FROM t_mesinfos WHERE concat_ws (" ",`noms_adh`,`prenoms_adh`) LIKE "%:Parametre1%"
        AND `Ansco_adh` LIKE :Parametre2 AND `Ecole_adh` LIKE :Parametre3 ORDER BY concat_ws (" ",`noms_adh`,`prenoms_adh`)',
        array(':Parametre1'=>$sParamRec,':Parametre2'=>$sParamRec2,':Parametre3'=>$sParamRec3) ) ;
        }
    http://php.net/manual/fr/pdo.prepare.php
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2004
    Messages
    1 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 323
    Points : 736
    Points
    736

    Par défaut

    Citation Envoyé par imikado Voir le message
    D'apres la doc pdo, je pense qu'il faut prefixer les placeholder par ":"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function maScolarite($sParamRec,$sParamRec2,$sParamRec3){
        return $this->findMany('SELECT * FROM t_mesinfos WHERE concat_ws (" ",`noms_adh`,`prenoms_adh`) LIKE "%:Parametre1%"
        AND `Ansco_adh` LIKE :Parametre2 AND `Ecole_adh` LIKE :Parametre3 ORDER BY concat_ws (" ",`noms_adh`,`prenoms_adh`)',
        array(':Parametre1'=>$sParamRec,':Parametre2'=>$sParamRec2,':Parametre3'=>$sParamRec3) ) ;
        }
    je viens juste de le faire mais j'ai toujours la même erreur !

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Ingénieur développement
    Inscrit en
    décembre 2006
    Messages
    4 788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2006
    Messages : 4 788
    Points : 18 510
    Points
    18 510
    Billets dans le blog
    17

    Par défaut

    J'ai essayé en local avec l'exemple suivant qui fonctionne bien:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    return $this->findMany('SELECT * FROM '.$this->sTable.' WHERE ville_nom like :toto1 AND ville_code_postal like :cp2 limit 100',
     array(
      ':toto1'=>'%OU%',
      ':cp2'=>'%9%'
     )
    );

    je pense que c'est le qui pose soucis, essayez de faire comme moi: LIKE arametre1 et mettre les % dans le tableau de parametre
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2004
    Messages
    1 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 323
    Points : 736
    Points
    736

    Par défaut

    effectivement c'est cette partie du code qui pose problème !
    Parce que ce code a marché correctement !

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public function maScolarite($sParamRec,$sParamRec2,$sParamRec3){
    
        return $this->findMany('SELECT * FROM t_mesinfos WHERE concat_ws (" ",`noms_adh`,`prenoms_adh`) LIKE :Parametre1
        AND `Ansco_adh` LIKE :Parametre2 AND `Ecole_adh` LIKE :Parametre3 ORDER BY concat_ws (" ",`noms_adh`,`prenoms_adh`)',
        array(':Parametre1'=>$sParamRec,':Parametre2'=>$sParamRec2,':Parametre3'=>$sParamRec3) ) ;

    en mettant les % dans les paramètres du tableau je retombe sur le meme message d'erreur :
    je sais pas si j'ai raté un truc ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    array('%:Parametre1%'=>$sParamRec,':Parametre2'=>$sParamRec2,':Parametre3'=>$sParamRec3) ) ;

  6. #6
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Ingénieur développement
    Inscrit en
    décembre 2006
    Messages
    4 788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2006
    Messages : 4 788
    Points : 18 510
    Points
    18 510
    Billets dans le blog
    17

    Par défaut

    non pas
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    array('%:Parametre1%'=>$sParamRec,':Parametre2'=>$sParamRec2,':Parametre3'=>$sParamRec3) ) ;

    mais

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    array(':Parametre1'=>'%'.$sParamRec.'%',':Parametre2'=>$sParamRec2,':Parametre3'=>$sParamRec3) ) ;
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2004
    Messages
    1 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2004
    Messages : 1 323
    Points : 736
    Points
    736

    Par défaut

    Ok la ça marche ! merci pour le suivi !

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

Discussions similaires

  1. [XL-2010] Problème avec le nombre de lignes d'une feuille copiée automatiquement
    Par yeahna dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/07/2015, 16h54
  2. [XL-2010] Problème avec le nombre de digit dans une cellule
    Par thomasdu40 dans le forum Excel
    Réponses: 2
    Dernier message: 09/01/2013, 14h20
  3. Réponses: 3
    Dernier message: 20/05/2011, 12h51
  4. Problème avec if .. else if.. else dans une fonction
    Par marwa21 dans le forum MS SQL-Server
    Réponses: 5
    Dernier message: 21/04/2011, 10h37
  5. Réponses: 3
    Dernier message: 07/05/2008, 13h30

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