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

MkFramework Discussion :

Problème de mise en forme pour une requête préparée


Sujet :

MkFramework

  1. #1
    Membre habitué
    Homme Profil pro
    Assistant statisticien
    Inscrit en
    Juillet 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Assistant statisticien
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2009
    Messages : 132
    Points : 168
    Points
    168
    Par défaut Problème de mise en forme pour une requête préparée
    Bonjour,

    Je sollicite votre haute bienveillance Imikado.

    J'ai un module prodprdote avec une action productivite.
    Sur la vue j'ai 2 menu déroulant. C'est le deuxième qui me pose probleme
    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
     
    <?php 
    $oForm=new plugin_form($this->tProductivite);
     
    $oForm=new plugin_form($this->tService);
    $oForm=new plugin_form($this->tPeriode);
    ?>
    <div class="container">
    	<form  action="" method="POST" >
    		<div class="row well">
    				<div class="col-md-1 col-md-offset-2">
    					<label>Période</label>
    				</div>
    				<div class="col-md-2 ">
    					<?php echo $oForm->getSelect('periode',$this->tPeriode,array('class'=>'form-control')) ?>
    				</div>
    				<div class="col-md-1 ">
    					<label>Processus</label>
    				</div>
    				<div class="col-md-4 ">
    					<?php echo $oForm->getSelect('entite',array('CMU nord,CMU sud'=>'CMUC'),array('class'=>'form-control')) ?>
    				</div>
     
    				<div class="col-md-2">
    				   <button type ="submit" class="btn btn-warning" data-toggle="tooltip" data-placement="top" title="Rechercher"><span class="glyphicon glyphicon-search"></span></button>
    				</div>
    		</div>	
    	</form>
    </div>
    Je voudrais faire une requête préparée avec comme base dans la classe modele
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public function findListWithSearch($Periode,$ligne,$Param){
     
    		return $this->findMany('SELECT periode,activite,mesure,sum(res_agent) as total_agent,sum(res_unite) as total_unite,sum(res_cpam) as total_cpam  FROM '.$this->sTable.' WHERE periode=? '.$ligne.' and mesure in ("Nb dossiers CMUC saisis et retounés","Temps de production en heures","Dont nb de dossiers retournés","Dont nb de dossiers CMUC retournés") and activite in ("Créations et MAJ Droits CMU","Instr CMUC Mal-RG, RA (RSA socle) saisie et retour","Instruc CMUC (ressources, retraite) préliquidés","Instruc CMUC Mal-RG, RA (ress,retr) saisie et reto","Instruction CMUC (RSA Socle) préliquidés","Traitement des listings") GROUP BY periode ,activite,mesure' ,$Periode,$ligne,$Param);
     
    	}
    Dans mon main j'ai
    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
     
    public function _productivite(){
    		$periode =_root::getParam('periode');
    		$centre = explode(',', _root::getParam('entite'));
     
    		$ligne = '';
    		$param = '';
    		if (count($centre)>=2){
    			foreach ($centre as $key => $value) {
    				$ligne .=  ' AND entite=? ';
     
    			}
    				$param =  $centre[0] ;
    				$param2 = $centre[1];
     
    		}else{
    			$ligne = ' AND entite=? ';
    			$param = _root::getParam('entite');
    		}
     
     
    		$tProductivite=model_prodprodte::getInstance()->findListWithSearch($periode,$ligne,$param);
     
    		plugin_debug::addSpy('$periode ',$periode );
    		plugin_debug::addSpy('$ligne ',$ligne );
    		plugin_debug::addSpy('$param ',$param );
    		plugin_debug::addSpy('$param2 ',$param2 );
    		$oView=new _view('prodprodte::productivite');
     
    		$oView->tProductivite=$tProductivite;
    		$oView->tService=model_prodprodte::getInstance()->getSelectEntite();
    		$oView->tPeriode=model_prodprodte::getInstance()->getSelectPeriode();
     
    		$oPluginXsrf=new plugin_xsrf();
    		$oView->token=$oPluginXsrf->getToken();
     
     
    		$this->oLayout->add('main',$oView);
    	}
    Je n'y arrive pas. un petit coup de main.

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Attention il y a un soucis

    Dans ce cas la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $ligne = ' AND entite=? ';
    			$param = _root::getParam('entite');
     
    $tProductivite=model_prodprodte::getInstance()->findListWithSearch($periode,$ligne,$param);

    Vous avez une erreur dasn votre code:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function findListWithSearch($Periode,$ligne,$Param){
     
    		return $this->findMany('SELECT periode,activite,mesure,sum(res_agent) as total_agent,sum(res_unite) as total_unite,sum(res_cpam) as total_cpam  FROM '.$this->sTable.' WHERE periode=? '.$ligne.' and mesure in ("Nb dossiers CMUC saisis et retounés","Temps de production en heures","Dont nb de dossiers retournés","Dont nb de dossiers CMUC retournés") and activite in ("Créations et MAJ Droits CMU","Instr CMUC Mal-RG, RA (RSA socle) saisie et retour","Instruc CMUC (ressources, retraite) préliquidés","Instruc CMUC Mal-RG, RA (ress,retr) saisie et reto","Instruction CMUC (RSA Socle) préliquidés","Traitement des listings") GROUP BY periode ,activite,mesure' ,$Periode,$ligne,$Param);
     
    	}

    vous mettez $ligne à la fois dans la requete (la c'est bon)
    mais egalement en tant que parametre de requete préparé: (la il faut l'enlever)

    corriger ainsi:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function findListWithSearch($Periode,$ligne,$Param){
     
    		return $this->findMany('SELECT periode,activite,mesure,sum(res_agent) as total_agent,sum(res_unite) as total_unite,sum(res_cpam) as total_cpam  FROM '.$this->sTable.' WHERE periode=? '.$ligne.' and mesure in ("Nb dossiers CMUC saisis et retounés","Temps de production en heures","Dont nb de dossiers retournés","Dont nb de dossiers CMUC retournés") and activite in ("Créations et MAJ Droits CMU","Instr CMUC Mal-RG, RA (RSA socle) saisie et retour","Instruc CMUC (ressources, retraite) préliquidés","Instruc CMUC Mal-RG, RA (ress,retr) saisie et reto","Instruction CMUC (RSA Socle) préliquidés","Traitement des listings") GROUP BY periode ,activite,mesure' ,$Periode,$Param);
     
    	}
    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
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Attention: le cas de plusieurs parametre avec le code suivant:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (count($centre)>=2){
    			foreach ($centre as $key => $value) {
    				$ligne .=  ' AND entite=? ';
     
    			}
    				$param =  $centre[0] ;
    				$param2 = $centre[1];

    ne peut pas fonctionner:

    1. $param2 n'est pas utilisé
    2. si vous avez un nombre de parametre variable, il faut utilsier dans ce cas la un tableau de parametre ainsi:
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Pour le module:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    public function _productivite(){
    		$periode =_root::getParam('periode');
    		$centre = explode(',', _root::getParam('entite'));
     
    		$ligne = '';
    		$tParam = array();
    		$tParam[]=$periode;
     
    		if (count($centre)>=2){
    			foreach ($centre as $key => $value) {
    				$ligne .=  ' AND entite=? ';
     
    			}
    				$tParam[] =  $centre[0] ;
    				$tParam[] = $centre[1];
     
    		}else{
    			$ligne = ' AND entite=? ';
    			$tParam[] = _root::getParam('entite');
    		}
     
     
    		$tProductivite=model_prodprodte::getInstance()->findListWithSearch($ligne,$tParam);
     
    		plugin_debug::addSpy('$periode ',$periode );
    		plugin_debug::addSpy('$ligne ',$ligne );
    		plugin_debug::addSpy('$param ',$param );
    		plugin_debug::addSpy('$param2 ',$param2 );
    		$oView=new _view('prodprodte::productivite');
     
    		$oView->tProductivite=$tProductivite;
    		$oView->tService=model_prodprodte::getInstance()->getSelectEntite();
    		$oView->tPeriode=model_prodprodte::getInstance()->getSelectPeriode();
     
    		$oPluginXsrf=new plugin_xsrf();
    		$oView->token=$oPluginXsrf->getToken();
     
     
    		$this->oLayout->add('main',$oView);
    	}

    Pour le model:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public function findListWithSearch($ligne,$tParam){
     
    		return $this->findMany('SELECT 
    			periode,activite,mesure,sum(res_agent) as total_agent,sum(res_unite) as total_unite,sum(res_cpam) as total_cpam  
    			FROM '.$this->sTable.' WHERE periode=? 
    			'.$ligne.' 
    			and mesure in ("Nb dossiers CMUC saisis et retounés","Temps de production en heures","Dont nb de dossiers retournés","Dont nb de dossiers CMUC retournés") and activite in ("Créations et MAJ Droits CMU","Instr CMUC Mal-RG, RA (RSA socle) saisie et retour","Instruc CMUC (ressources, retraite) préliquidés","Instruc CMUC Mal-RG, RA (ress,retr) saisie et reto","Instruction CMUC (RSA Socle) préliquidés","Traitement des listings") GROUP BY periode ,activite,mesure' 
    			,$tParam);
     
    	}
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

Discussions similaires

  1. [MySQL] php et mise en forme d'une requête mysql
    Par ourson78 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/03/2011, 15h53
  2. [AC-2007] Mise en forme d'une requête ouverte
    Par eperat dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/10/2010, 09h12
  3. Réponses: 7
    Dernier message: 13/08/2009, 20h20
  4. Problème de mise en forme dans une liste personnalisée
    Par smarties dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 17/01/2007, 15h47
  5. [VBA_E] Problème de mise ne forme,pour balayage
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 29/08/2006, 13h33

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