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

  1. #1
    Membre habitué
    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

    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

    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

    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

###raw>template_hook.ano_emploi###