Bonjour Imikado
Dans la droite ligne de ma progression sur mkframework. j'ai decidé de faire de la pagination coté serveur
j'ai quelques difficultés. voici comment j'ai proceder:
Dans ma couche model_MESINFORMATIONS
Dans le main de mon module
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 public function findAllLimitedOrderBy($iOffset,$iLimit,$sField,$sSide){ if($sSide=='asc'){ $side='ASC'; }else{ $side='DESC'; } return $this->findMany('SELECT FIRST '.(int)$iLimit.' SKIP '.(int)$iOffset.' * FROM '.$this->sTable.' WHERE PROJETCODE=16 ORDER BY ? '.$side.' ',$sField); } public function countAll(){ //ici dans le count j'ai mis la clé primaire de ma table $oRow=$this->findOneSimple('SELECT count(LACLE) as total FROM '.$this->sTable.' '); plugin_debug::addSpy('oR',$oRow); if($oRow){ return $oRow->total; } return 0; }
Dans ma vue listViaModule
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 public function _list(){ //nombre d'enregristrements par page $iLimit=10; $sOrder=module_table::getParam('order','LACLE'); $sSide=module_table::getParam('side','ASC'); $iOffset=module_table::getOffset($iLimit); $iPage = module_table::getParam('page',NULL); //on appele une methode du modele qui prend attends les parametres de tri : champ et sens, en indiquant �galement les valeurs par d�faut $tMESINFORMATIONS=model_MESINFORMATIONS::getInstance()->findAllLimitedOrderBy($iOffset,$iLimit,$sOrder,$sSide); $iCount=$oMESINFORMATIONSModel->countAll(); $oView=new _view('MESINFORMATIONS::listViaModule'); $oView->tMESINFORMATIONS=$tMESINFORMATIONS; //on recupere un tableau indexe des auteurs pour afficher leur nom a la place de leur id $oView->tJoinMESINFORMATIONS=model_MESINFORMATIONS::getInstance()->getSelect(); //pagination $oView->iCountRow=$iCount; $oView->iLimit=$iLimit; $this->oLayout->add('main',$oView); }
et Voici le message d'erreur que 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
40
41
42
43
44
45
46
47
48
49
50 <?php $oTable = new module_table('complex4'); //on active la pagination $oTable->enablePaginationServer(); //on indique a la vue les informations de pagination $oTable->setPaginationLimit($this->iLimit); $oTable->setPaginationMax($this->iCountRow); //on defini la classe du tableau $oTable->setClass('tb_list'); //on defini une liste de classe d'alternance (pour alterner les lignes du tableau) $oTable->setCycleClass(array('alt','alt2')); //on defini l'entete du tableau avec tri en indiquant le nom du champ $oTable->addHeaderWithOrder('Nom Ecole','PROJETNOM'); $oTable->addHeaderWithOrder('Matricule','CHAMP1'); $oTable->addHeaderWithOrder('Nom','CHAMP2'); $oTable->addHeaderWithOrder('Prénoms','CHAMP3'); $oTable->addHeaderWithOrder('Né(e) le','CHAMP4'); $oTable->addHeaderWithOrder('Lieu','CHAMP5'); $oTable->addHeaderWithOrder('Niveau','CHAMP6'); $oTable->addHeaderWithOrder('Filiere','CHAMP7'); $oTable->addHeaderWithOrder('Ufr','CHAMP8'); $oTable->addHeaderWithOrder('Photo','CHEMINFOTO'); $oTable->addHeaderWithOrder('Annee','EXOENCOURS'); $oTable->addHeader(''); //on boucle pour remplir le tableau if($this->tMESINFORMATIONS){ foreach($this->tMESINFORMATIONS as $oMESINFORMATIONS){ $sMESINFORMATIONS=null; if(isset($this->tJoinMESINFORMATIONS[ $oMESINFORMATIONS->LACLE])){ $sMESINFORMATIONS= $this->tJoinMESINFORMATIONS[ $oMESINFORMATIONS->LACLE]; } //on ajoute une ligne dans le tableau $oTable->addLine(array( $oMESINFORMATIONS->PROJETNOM, $oMESINFORMATIONS->CHAMP1, '<a href="'.$this->getLink('MESINFORMATIONS::edit',array('id'=>$oMESINFORMATIONS->getId()) ).'">Edit</a> | <a href="'.$this->getLink('MESINFORMATIONS::show',array('id'=>$oMESINFORMATIONS->getId()) ).'">Show</a> | <a href="'.$this->getLink('MESINFORMATIONS::delete',array('id'=>$oMESINFORMATIONS->getId()) ).'">Delete</a>' )); } } echo $oTable->build()->show();
Apparemment j'ai problème avec un paramètre de la requête et je ne suis pas sur de la manière dont j'ai modifier le code que j'ai mis en rougePDO::prepare(): SQLSTATE[HY000]: General error: -804 Dynamic SQL Error SQL error code = -804 Data type unknown
#0 [internal function]: exception_error_handler(2, 'PDO::prepare():...', 'C:\\wamp\\www\\mkf...', 249, Array)
#1 C:\wamp\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php(249): PDO->prepare('SELECT FIRST 10...')
#2 C:\wamp\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php(150): abstract_sgbd_pdo->query('SELECT FIRST 10...', Array)
#3 C:\wamp\www\mkframework\lib\framework\abstract\abstract_model.php(134): abstract_sgbd_pdo->findMany(Array, 'row_MESINFORMAT...')
#4 C:\wamp\www\mkframework\data\genere\searchrusta\model\model_MESINFORMATIONS.php(33): abstract_model->findMany('SELECT FIRST 10...', 'LACLE')
#5 C:\wamp\www\mkframework\data\genere\searchrusta\module\MESINFORMATIONS\main.php(25): model_MESINFORMATIONS->findAllLimitedOrderBy(0, 10, 'LACLE', 'ASC')
#6 C:\wamp\www\mkframework\lib\framework\class_root.php(263): module_MESINFORMATIONS->_list()
#7 C:\wamp\www\mkframework\data\genere\searchrusta\public\index.php(48): _root->run()
#8 {main}
Detail:
#0 exception_error_handler( , 'PDO::prepare(): SQLSTATE[HY000]: General error: -804 Dynamic SQL Error SQL error code = -804 Data type unknown ' , 'C:\wamp\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php' , , Array ( [sReq] => SELECT FIRST 10 SKIP 0 * FROM MESINFORMATIONS WHERE PROJETCODE=16 ORDER BY ? DESC [tParam] => Array ( [0] => LACLE ) [tATTRERRMODE] => Array ( [SILENT] => 0 [WARNING] => 1 [EXCEPTION] => 2 ) [tATTRCASE] => Array ( [LOWER] => 2 [NATURAL] => 0 [UPPER] => 1 ) ) )
#1 C:\wamp\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php (249)
PDO -> prepare( 'SELECT FIRST 10 SKIP 0 * FROM MESINFORMATIONS WHERE PROJETCODE=16 ORDER BY ? DESC ' )
#2 C:\wamp\www\mkframework\lib\framework\abstract\abstract_sgbd_pdo.php (150)
abstract_sgbd_pdo -> query( 'SELECT FIRST 10 SKIP 0 * FROM MESINFORMATIONS WHERE PROJETCODE=16 ORDER BY ? DESC ' , Array ( [0] => LACLE ) )
#3 C:\wamp\www\mkframework\lib\framework\abstract\abstract_model.php (134)
abstract_sgbd_pdo -> findMany( Array ( [0] => SELECT FIRST 10 SKIP 0 * FROM MESINFORMATIONS WHERE PROJETCODE=16 ORDER BY ? DESC [1] => LACLE ) , 'row_MESINFORMATIONS' )
#4 C:\wamp\www\mkframework\data\genere\searchrusta\model\model_MESINFORMATIONS.php (33)
abstract_model -> findMany( 'SELECT FIRST 10 SKIP 0 * FROM MESINFORMATIONS WHERE PROJETCODE=16 ORDER BY ? DESC ' , 'LACLE' )
#5 C:\wamp\www\mkframework\data\genere\searchrusta\module\MESINFORMATIONS\main.php (25)
model_MESINFORMATIONS -> findAllLimitedOrderBy( , , 'LACLE' , 'ASC' )
#6 C:\wamp\www\mkframework\lib\framework\class_root.php (263)
module_MESINFORMATIONS -> _list( )
#7 C:\wamp\www\mkframework\data\genere\searchrusta\public\index.php (48)
_root -> run( )
#8 {main}
Merci de m'aider
Partager