Bonjours a tous,
je me retrouve bloquer sur mon systeme de pagination dans mon PortfoliosController
dans ma fonction index je veux rajouter une 'limit' dans ma reqsql ( comme on faisais pour le blog )
mais d'ai que je rajoute la 'limit'

'limit' => ($this->request->page).','.$perPage,

j'obtiens des errors je comprend pas je tourne en round depuis hier

( ! ) Notice: Trying to get property of non-object in 
C:\wamp\www\tuto\controller\PortfoliosController.php on line 15

la ligne 15 correspond a la limit evoquer juste au dessu

et

( ! ) Warning: PDOStatement::execute() <a href='pdostatement.execute'>pdostatement.execute</a>]: 
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check 
the manual that corresponds to your MySQL server version for the right syntax to use near '-1,2' at 
line 1 in C:\wamp\www\tuto\core\Model.php on line 136

voila mon index de mon controller

/**
    * Portfolio, liste les different projects
    **/
    function index(){
        $perPage = 2; 
        $this->loadModel('Project');
        $condition = array('online' => 1); 
        $d'projects'] = $this->Project->find(array(
            'conditions' => $condition,
            'fields' => 'Project.id,Project.name,Project.slug,Project.image,Project.created,Project.content,Category.name as catname,Category.slug as catslug',
            'order' => 'id DESC',
            //'limit' => ($this->request->page-1).','.$perPage,
            'join' => array('categories as Category' => 'Category.id=Project.category_id')
        ));
        $d'total'] = $this->Project->findCount($condition); 
        $d'page'] = ceil($d'total'] / $perPage);
        foreach($d'projects'] as $k => $v) {
            $d'projects']$k] = $v;
            $d'projects']$k]->comments = $this->getComments($v->id);
        }
        $this->set($d);
    }

est ce que quelqu'un aurais une idée svp ?
merci d'avance

9 réponses


nocraft0
Auteur
Réponse acceptée

suis trop deg je vien de comprend
c'est parceque dans mon view/portfolios/index.php j'appellais 2 fois l'index portfolio ,....

<?php $portfolio= $this->request('Portfolios','index'); ?>
<?php $categories = $this->request('Categories','index'); ?>

alors que je devais juste faire la request de categories

<?php $categories = $this->request('Categories','index'); ?>

a plus et merci a tous ceux qui on essayer de m'aider ,
a bientot

nocraft0
Auteur

svp ? vraiment personne n'as deja eu un probleme du genre ?
ou serai m'aider je pete un plomb

nocraft0
Auteur

re, je me tape la tête
encore plus étrange ,
en renotant bien ma limite de départ

'limit' => ($perPage*($this->request->page-1)).','.$perPage,

quand je reload ma page j'ai toujours les errors ,.. mais ca fonctionne , cad :

j'ai 4 project dans ma db , si je paramètre perpage = 3

j'ai bien a ma page 1 les 3 derniers projects
et a ma page 2 le dernier project

? je comprend pas ? pk les erreurs

Salut,

l'erreur que tu as eu, c'est bien celle là non ?

( ! ) Notice: Trying to get property of non-object in 
C:\wamp\www\tuto\controller\PortfoliosController.php on line 15

C'est ton attribut request qui n'est pas défini, n'existe pas dans l'objet courant sur lequel tu travaille.

nocraft0
Auteur

hello,
oui c'est bien cette error

C'est ton attribut request qui n'est pas défini, n'existe pas dans l'objet courant sur lequel tu travaille.

comment je peu remédier a ca ?

et j'ai aussi cette error mais je suis sur que c'est lier a la première error

Warning: PDOStatement::execute() <a href='pdostatement.execute'>pdostatement.execute</a>]: 
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to 
use near '-3,3' at line 1 in C:\wamp\www\tuto\core\Model.php

en tous cas merci a toi de bien vouloir m'aider ! a bientot

Eh bien je n'ai regardé aucune vidéo du tuto mais je vais essayer de t'aider comme je le peux ^^

Ta méthode index doit appartenir à une classe. Regarde dans cette classe s'il y a un attribut request. Si ta classe hérite d'une autre classe, alors regarde la classe mère etc. Il doit forcément avoir un attribut qui se nomme request quelque part. Je pense qu'en résolvant ça, tu vas avancer sur ton autre erreur.

nocraft0
Auteur

hello pewel, ecoute je suis vraiment perdu ,...

ma class request

<?php
class Request{

    public $url; // URL appellé par l'utilisateur
    public $page = 1; // pour la pagination 
    public $prefix = false; // Prefixage des urls /prefix/url
    public $data = false; // Données envoyé dans le formulaire
    function __construct(){
        $this->url = isset($_SERVER'PATH_INFO'])?$_SERVER'PATH_INFO']:'/'; 
        // Si on a une page dans l'url on la rentre dans $this->page
        if(isset($_GET'page'])){
            if(is_numeric($_GET'page'])){
                if($_GET'page'] > 0){
                    $this->page = round($_GET'page']); 
                }
            }
        }
        // Si des données ont été postées ont les entre dans data
        if(!empty($_POST)){
            $this->data = new stdClass(); 
            foreach($_POST as $k=>$v){
                $this->data->$k=$v;
            }
        }
    }

}

et dans ma class controller.php
la fonction request

function request($controller,$action){
        $controller .= 'Controller';
        require_once ROOT.DS.'controller'.DS.$controller.'.php';
        $c = new $controller();
        return $c->$action(); 
    }

est se que ca te dérangerai de se retrouver sur l'irc pour faire ceci en direct ?
merci encore pour ton soutien

nocraft0
Auteur

se qui est bizard c'est quand je fais un var_dump($this);
ca me revoye 2 var_dump differant pour 1 meme ligne ,
comment ca se fais ?

et quand on regarde dans le premiere var_dump il em renvoye bien les information voulue,
la request

et dan sle 2eme vardump il est = a null
???? je comprend pas

je croise les doigt pour une aide précieuse, ca fais 3 jours que je tourne round :(

Coucou,

Désolé, hier soir et aujourd'hui je n'étais pas dispo.

Content que tu ais trouvé ta solution