1. #1
    Membre régulier
    Homme Profil pro
    Assistant statisticien
    Inscrit en
    juillet 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

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

    Informations forums :
    Inscription : juillet 2009
    Messages : 67
    Points : 104
    Points
    104

    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
    Ingénieur développement
    Inscrit en
    décembre 2006
    Messages
    4 761
    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 761
    Points : 18 459
    Points
    18 459
    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
    Ingénieur développement
    Inscrit en
    décembre 2006
    Messages
    4 761
    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 761
    Points : 18 459
    Points
    18 459
    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
    Ingénieur développement
    Inscrit en
    décembre 2006
    Messages
    4 761
    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 761
    Points : 18 459
    Points
    18 459
    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. php et mise en forme d'une requête mysql
    Par ourson78 dans le forum PHP & MySQL
    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