Il m'arrive un soucis.. Les article s'affiche pas , mais.. Dès que je souhaite changer de page, et avoir la suite des articles.. Rien ! Mise à part le logo de chargement qui s'affiche. Vous pouvez voir le résulta ici : http://laplumedeceryx.fr/index.php/posts
Des idées ? sachant que mon code est identique à celui du tutoriel !
Alors, pour te répondre, il s'agit d'une erreur toute bête en faite.. Quand on regarde la console de debug, tout en cliquant sur l'un des lien de la pagination , on obtient une erreur tel que celle-ci
POST http://laplumedeceryx.fr/posts/ajaxPaginationData/6 404 (Not Found) jquery-3.1.0.min.js:4
Dans mon cas, et sans doute le tien, il ne trouve pas la "page" "ajaxPaginationdata", car il me manque le "index.php" avant le " /posts/ " Il me suffit alors de modifier mon controller et de l'ajouter aux lignes suivantes du Index et ajaxPaginatationData:
Salut merci de ta réponse mais je l'avais bien indiqué le index.php...
voici ce que j'ai fait voir si tu as fait pareil, j'ai crée le fichier Ajax_pagination.php et copier coller le code du tuto et mis dans le dossier librairies comme indiqué.
Ensuite mon controller pour le front moi c'est WELCOME à la place de POSTS...
par contre crée tu un controller spécial pagination.php ? car dans le tuto ce n'est pas indiqué...?
si on ne crée pas de controller pagination.php du coup les fonctions __CONSTRUCT , INDEX et ajaxPaginationData ce trouve dans mon controller WELCOME.
Ensuite pour le model crée tu un nouveau model_pagination? car moi sa me retourne une liste de video et jai déja une requète dans mon model video_model ?
si on ne crée pas de nouveau model du coup le code indiqué se trouve dans mon video_model...par contre dans ma requète j'ai une jointure sur une autre table la table catégorie et du coup sa me met undefine variable: CATEGORIE alors que dans ma requète la jointure est bonne et dans sql phpmyadmin elle marche nikel.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Post extends CI_Model{
function getRows($params = array())
{
$this->db->select('*');
$this->db->from('posts');
$this->db->order_by('created','desc');
if(array_key_exists("start",$params) && array_key_exists("limit",$params)){
$this->db->limit($params['limit'],$params['start']);
}elseif(!array_key_exists("start",$params) && array_key_exists("limit",$params)){
$this->db->limit($params['limit']);
}
$query = $this->db->get();
return ($query->num_rows() > 0)?$query->result_array():FALSE;
}
}
au niveau du select on est d'accord que pour mettre les champs on les ' ', donc les champs se mettent bien la pas d'erreur ensuite je viens de voir que avec le code du haut il doit me manquer cette ligne
$this->db->join('categories');
car je ne l'avais pas rajouter... du coup normal que sa me mette undefine variable Categorie vu que la jointure manque...
ensuite pour les views je dois etre bon.
dans l'attente de ton retour en attendant je vais réessayer
salutations merci
du coup j ai tester sa me met sa :
A PHP Error was encountered
Severity: Warning
Message: Missing argument 2 for CI_DB_query_builder::join(), called in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\laboratoire\codeigniter1\application\models\Video_model.php on line 389 and defined
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
/**
* Index Page for this controller.
*
* Maps to the following URL
* http://example.com/index.php/welcome
* - or -
* http://example.com/index.php/welcome/index
* - or -
* Since this controller is set as the default controller in
* config/routes.php, it's displayed at http://example.com/
*
* So any other public methods not prefixed with an underscore will
* map to /index.php/welcome/<method_name>
* @see http://codeigniter.com/user_guide/general/urls.html
*/
function __construct() {
parent::__construct();
$this->load->model('video_model');
$this->load->library('Ajax_pagination');
$this->perPage = 12;
}
public function homepage(){
// Récupère la liste des catégories//
$data['categories'] = $this->categorie_model->allCategories();
// Récupère la liste des vidéos//
$data['Videos'] = $this->video_model->allVideosFront();
// Récupère la liste des équipes//
$data['equipes'] = $this->equipe_model->allEquipesFront();
// Récupère la liste des commentaires//
$data['comments'] = $this->comments_model->allCommentsFront();
//récupère la dernière vidéo mise en ligne//
$data['dernierevideo'] = $this->video_model->derniereVideo();
$data = array();
//total rows count
$totalRec = count($this->video_model->getRows());
//pagination configuration
$config['target'] = '#portfoliolist';
$config['base_url'] = base_url().'index.php/welcome/ajaxPaginationData';
$config['total_rows'] = $totalRec;
$config['per_page'] = $this->perPage;
$this->ajax_pagination->initialize($config);
$page = $this->uri->segment(3); //recupere le numéro de ma page
//video/lister/2
if(empty($page)){
$current = 1;
//si jarrive sur vidéo lister numero page null donc si page null prend moi la page une
}else{
//sinon prend moi la page courante
$current = $page;
}
//get the posts data
$data['allVideosFront'] = $this->video_model->getRows(array('limit'=>$this->perPage));
//load the view
$this->load->view('Frontend/index', $data);
}
function ajaxPaginationData(){
$page = $this->input->video_model('page');
if(!$page){
$offset = 0;
}else{
$offset = $page;
}
//total rows count
$totalRec = count($this->video_model->getRows());
//pagination configuration
$config['target'] = '#portfoliolist';
$config['base_url'] = base_url().'index.php/welcome/ajaxPaginationData';
$config['total_rows'] = $totalRec;
$config['per_page'] = $this->perPage;
$this->ajax_pagination->initialize($config);
//get the posts data
$data['allVideosFront'] = $this->video_model->getRows(array('start'=>$offset,'limit'=>$this->perPage));
//load the view
$this->load->view('Frontend/ajax-pagination-data', $data, false);
}
}
mon model
<?php
/*ma classe Model dans lequel j aurais mes requetes de vidéos*/
class Video_model extends CI_Model{
function getRows($params = array())
{
$this->db->select('DATE_FORMAT(video.date_created, "le %d/%m/%Y") AS videocreate',
'video.date_created AS date_created',
'video.categories_id AS categories_id',
'video.image AS image',
'video.id AS id',
'video.title AS title',
'video.synopsis AS synopsis',
'video.trailer AS trailer',
'video.cover AS cover',
'video.date_updated AS date_updated',
'video.views AS views',
'video.duree AS duree',
'categories.title AS cat_title',
'categories.slug AS cat_slug');
$this->db->from('video');
$this->db->join('categories');
$this->db->order_by('date_created','desc');
if(array_key_exists("start",$params) && array_key_exists("limit",$params)){
$this->db->limit($params['limit'],$params['start']);
}elseif(!array_key_exists("start",$params) && array_key_exists("limit",$params)){
$this->db->limit($params['limit']);
}
$query = $this->db->get();
return ($query->num_rows() > 0)?$query->result_array():FALSE;
}
}
?>
salut et merci de ta réponse effectivement sa venait de la j'avais trouvé en cherchant sur internet la bonne syntax du coup maintenant c est
//ajax pagination//
function getRows($params = array())
{
$this->db->select('DATE_FORMAT(video.date_created, "le %d/%m/%Y") AS videocreate,
video.date_created AS date_created,
video.categories_id AS categories_id,
video.image AS image,
video.id AS id,
video.title AS title,
video.synopsis AS synopsis,
video.trailer AS trailer,
video.cover AS cover,
video.date_updated AS date_updated,
video.views AS views,
video.duree AS duree,
categories.title AS cat_title,
categories.slug AS cat_slug');
$this->db->from('video');
$this->db->join('categories','video.categories_id = categories.id','inner');
$this->db->order_by('video.date_created','desc');
if(array_key_exists("start",$params) && array_key_exists("limit",$params)){
$this->db->limit($params['limit'],$params['start']);
}elseif(!array_key_exists("start",$params) && array_key_exists("limit",$params)){
$this->db->limit($params['limit']);
}
$query = $this->db->get();
return ($query->num_rows() > 0)?$query->result_array():FALSE;
}
et la je bloque le site s affiche mais rempli d erreur
la sa me met undefine variable categorie alors que dans ma requete j'ai bien une jointure sur cette table...
voici le code qui déconne apparemment c est juste au dessus de mon foreach de mes videos j'ai un foreach pour les categories pour que sa te trie les videos par categories lorsque tu clique dessus.
Oui bien sûr que je lis les erreurs je vois bien que ma variable categorie n existe apparemment pas mais jusqu a maintenan en pagination normal je n avais pas cette erreur....
mais je ne vois pas quoi faire si tu peux m'eguiller?
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
/**
* Index Page for this controller.
*
* Maps to the following URL
* http://example.com/index.php/welcome
* - or -
* http://example.com/index.php/welcome/index
* - or -
* Since this controller is set as the default controller in
* config/routes.php, it's displayed at http://example.com/
*
* So any other public methods not prefixed with an underscore will
* map to /index.php/welcome/<method_name>
* @see http://codeigniter.com/user_guide/general/urls.html
*/
function __construct() {
parent::__construct();
public function homepage(){
// Récupère la liste des catégories//
$data['categories'] = $this->categorie_model->allCategories();
// Récupère la liste des vidéos//
$data['videos'] = $this->video_model->allVideosFront();
// Récupère la liste des équipes//
$data['equipes'] = $this->equipe_model->allEquipesFront();
// Récupère la liste des commentaires//
$data['comments'] = $this->comments_model->allCommentsFront();
//récupère la dernière vidéo mise en ligne//
$data['dernierevideo'] = $this->video_model->derniereVideo();
//pagination avec ajax//
$data = array();
//total rows count
$totalRec = count($this->video_model->getRows());
//pagination configuration
$config['target'] = '#portfoliolist';
$config['base_url'] = base_url().'index.php/welcome/ajaxPaginationData';
$config['total_rows'] = $totalRec;
$config['per_page'] = $this->perPage;
$this->ajax_pagination->initialize($config);
//get the posts data
$data['allVideosFront'] = $this->video_model->getRows(array('limit'=>$this->perPage));
//load the view
$this->load->view('Frontend/index', $data);
}
function ajaxPaginationData(){
$page = $this->input->video_model('page');
if(!$page){
$offset = 0;
}else{
$offset = $page;
}
//total rows count
$totalRec = count($this->video_model->getRows());
//pagination configuration
$config['target'] = '#portfoliolist';
$config['base_url'] = base_url().'index.php/welcome/ajaxPaginationData';
$config['total_rows'] = $totalRec;
$config['per_page'] = $this->perPage;
$this->ajax_pagination->initialize($config);
//get the posts data
$data['allVideosFront'] = $this->video_model->getRows(array('start'=>$offset,'limit'=>$this->perPage));
//load the view
$this->load->view('Frontend/ajax-pagination-data', $data, false);
}
voici le controller désolé avec la balise code sa désindente le code
je pense que comme indiqué c est la ligne 141 evidemment ou ma variable $categories n'est pas reconnu et je dois faire comme pour la ligne 43 de ma section videos
il faut que je fasse un empty dans le data filter ? ou un isset ? mais peut on faire un isset et ensuite faire le foreach et echo du foreach ?
merci a toi
salutations
- Edité par GuillaumeChipier 1 octobre 2016 à 17:46:40
Mes models sont chargés directement dans le config.php d ou pourquoi il n y a pas cette ligne.
comme jte disais il faut que je fasse comme ligne 43 pour la ligne 41.
seulement peut on faire un isset avant un Foreach? Ou faire un empty comme ligne 43 mais avec la bonne syntaxe pour le bouton toutes?
Si oui peux tu M indiquer la syntaxe ?
merci à toi
salutations
{CodeIgniter} Pagination AJAX qui ne charge pas
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Je ne vois pas de load->model('categorie'); dans ton code