Page 1 sur 1

Fatal error: Call to a member function query() on a... PDO

Posté : 12 mars 2013, 08:20
par forumeur
Bonjour,

J'essaye d'adapter un script de pagination à PDO, mais j'ai cette erreur :

Fatal error: Call to a member function query() on a non-object in /home/.../js/pagination/function_users.php on line 9

Le script de pagination :

Code : Tout sélectionner

function pagination($query, $per_page = 10,$page = 1, $url = '?'){ $query = "SELECT COUNT(*) as `num` FROM {$query}"; $req2 = $cnx->query($query); $row = $req2->fetch(PDO::FETCH_ASSOC); $total = $row['num']; $adjacents = "2"; $page = ($page == 0 ? 1 : $page); $start = ($page - 1) * $per_page; ...
L'inclusion du script dans ma page :

Code : Tout sélectionner

// Pagination des résultats require_once('../../js/pagination/function_users.php'); $page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]); $limit = 5; $startpoint = ($page * $limit) - $limit; //to make pagination $statement = "`".$prefixe."_comments` WHERE news='".intval($_GET['id'])."' ORDER by id DESC"; // requete sql $sql = "SELECT *,note, DATE_FORMAT(date, '%d-%m-%Y') as date FROM {$statement} LIMIT {$startpoint}, {$limit}";
Et plus loin :

Code : Tout sélectionner

echo pagination($statement,$limit,$page);
Voilà comment ça fonctionne. J'espère que vous pourrez me donner un coup de main. Merci d'avance!

Re: Fatal error: Call to a member function query() on a... P

Posté : 12 mars 2013, 08:58
par forumeur
En msqli, le fichier de pagination se présentait comme ceci :

Code : Tout sélectionner

function pagination($query, $per_page = 10,$page = 1, $url = '?'){ $query = "SELECT COUNT(*) as `num` FROM {$query}"; $row = mysql_fetch_array(mysql_query($query)); $total = $row['num']; $adjacents = "2";
Et ça marchait parfaitement...

Re: Fatal error: Call to a member function query() on a... P

Posté : 12 mars 2013, 10:09
par xTG
Il faut que tu passes ton objet PDO ($cnx) à ta fonction. :)

Re: Fatal error: Call to a member function query() on a... P

Posté : 12 mars 2013, 10:15
par forumeur
C'est à dire ? Je dois inclure la connexion à la base de données pour le fichier de pagination ?

Merci de ton aide

Re: Fatal error: Call to a member function query() on a... P

Posté : 12 mars 2013, 10:17
par xTG
Soit transmettre ta variable de connexion :
function pagination($query, $per_page = 10,$page = 1, $url = '?', $cnx)
Soit la déclarer comme se trouvant dans le scope global :
function pagination($query, $per_page = 10,$page = 1, $url = '?'){
  global $cnx;
Afin que $cnx soit reconnue dans le scope de ta fonction.

Re: Fatal error: Call to a member function query() on a... P

Posté : 12 mars 2013, 10:32
par forumeur
J'ai fait comme tu m'as indiqué :

Code : Tout sélectionner

function pagination($query, $per_page = 10,$page = 1, $url = '?', $cnx){ $query = $cnx->query("SELECT COUNT(*) as `num` FROM {$query}"); $row = $query->fetch();; $total = $row['num']; $adjacents = "2";
Mais j'ai une autre erreur maintenant :

Warning: Missing argument 5 for pagination(), called in /home/.../commentaires/divers.php on line 492 and defined in /home/.../js/pagination/function_users.php on line 7

La ligne 492 :

Code : Tout sélectionner

echo pagination($statement,$limit,$page);

Re: Fatal error: Call to a member function query() on a... P

Posté : 12 mars 2013, 12:26
par xTG
Tu rajoutes un paramètre à la fonction.
N'est-il donc pas normal de le fournir lorsque tu appelles la fonction ?
C'est ce que te reproches ce message d'erreur.

Re: Fatal error: Call to a member function query() on a... P

Posté : 13 mars 2013, 08:12
par forumeur
D'accord, mais comment m'y prendre ?
Est-ce que vous avez un exemple concret de ce que je dois faire au niveau du code pour fournir ce paramètre ?

Merci d'avance

Re: Fatal error: Call to a member function query() on a... P

Posté : 13 mars 2013, 10:12
par xTG
Bon je craque là...
echo pagination($statement,$limit,$page,'?', $cnx);