Probléme pagination

Par PYTHOGEEK, il y a 11 ans


Voici mon script ````<article>

                    <?php
                    //connection à la base de donnée
                    try
                    {
                    $bdd = new PDO('mysql:host=localhost;dbname=blog;charset=utf8','root','');
                    }
                    catch(exception $e)
                    {
                    die('Error:'.$e->getmessage());
                    }

                    ?>  

                    <?php 

                    $nombreDeBilletsParPage = 10;

                    $retour = mysql_query('SELECT COUNT(*) AS nb_billets FROM article');

                    $data = mysql_fetch_array($retour);

                    $totalDesMessages = $data['nb_billets'];

                    $nombreDePages = ceil($totalDesMessages / $nombreDeBilletsParPage);

                    echo 'Page :';

                    for ($i = 1 ; $i <= $nombreDePages ; $i++)
                    {
                            echo '<a href="blog.php?page=' . $i . '">' . $i . '</a> ';
                    }

                    ?>

                    <?php 
                    if (isset($_GET['page']))
                    {
                            $page = $_GET['page']; 
                    }
                    else // La variable n'existe pas, c'est la première fois qu'on charge la page
                    {
                            $page = 1; // On se met sur la page 1 (par défaut)
                    }

                    // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
                    $premierMessageAafficher = ($page - 1) * $nombreDeBilletsParPage;

                    $reponse = mysql_query('SELECT id , text,titre ,auteur,DATE_FORMAT(date,\'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM article ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeBilletsParPage);

                    while ($data = mysql_fetch_array($reponse))
                    {
                    echo '<p><strong>' . $data['auteur'] . '</strong> a écrit :<br />' . $data['text'] . '</p>';
                    }

                    mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)

                    ?>

                </article>

``

Dés l'exécution 3 erreur s'affiche !!
1.Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\PYTHOGEEK-WEBSITE\blog.php on line 48

2.Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\PYTHOGEEK-WEBSITE\blog.php on line 50

3.Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\PYTHOGEEK-WEBSITE\blog.php on line 80

Pouvez vous m'aider en corrigeant mon script . Merci!

12 réponses

Carouge10, il y a 11 ans

Bonsoir,
Ce sont juste des warnings donc soit vous les ignorer soit vous passez à PDO, ce que vous avez commencer à faire.

PYTHOGEEK, il y a 11 ans

Comment je peux les ignorer ?

Carouge10, il y a 11 ans

En mettant un mysql_connect à la place de la connection en PDO.

PYTHOGEEK, il y a 11 ans

Donc ça ferai ce code là $bdd = new mysql_connect('mysql:host=localhost;dbname=blog;charset=utf8','root','');
mais ça marche pas , et comment on peux passer à PDO !

Carouge10, il y a 11 ans

Houlà, l'horreur (^_^).
Je vous conseil de passer à PDO et revenir nous voir si vous avez un soucis.
Comprendre PDO

PYTHOGEEK, il y a 11 ans

J'ai réussi a supprimer toutes les erreurs maintenant ya y'a rien qui s'affiche !! voici mon nouveau code

<?php //connection à la base de donnée try { $bdd = new PDO('mysql:host=localhost;dbname=blog;charset=utf8','root',''); } catch(exception $e) { die('Error:'.$e->getmessage()); } ?> <?php $nombreDeBilletsParPage = 10; $retour = $bdd -> prepare('SELECT COUNT(*) AS nb_billets FROM article'); $data = $retour->fetch(); $totalDesMessages = $data['nb_billets']; $nombreDePages = ceil($totalDesMessages / $nombreDeBilletsParPage); for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="blog.php?page=' . $i . '">' . $i . '</a> '; } ?> <?php if (isset($_GET['page'])) { $page = $_GET['page']; } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $page = 1; // On se met sur la page 1 (par défaut) } // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL $premierMessageAafficher = ($page - 1) * $nombreDeBilletsParPage; $reponse = $bdd -> prepare('SELECT id , text ,titre , auteur, DATE_FORMAT(date,\'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM article ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeBilletsParPage); while ($data = $reponse->fetch()) { ?> <p> <?php echo $data['auteur']; ?> <?php echo $data['titre']; ?></p> <?php } ?> </article>
Carouge10, il y a 11 ans

Et bien la compréhension à été très rapide mais il manque une chose.
Vous avez oublier d’exécuter la requête après le prepare.
Après il vous faudra également penser à protéger vos requêtes des injections sql.

PYTHOGEEK, il y a 11 ans

Ouai évidemment aprés l'execution de la requete ça a marcher , quand à les injection aprés avoir bien réussi a jouer le code je vais protéger mes requetes promis :p bon je vais voir avec ma pagination et je vous tiendrez au courant .

Carouge10, il y a 11 ans

Plus qu'à mettre le sujet en résolu.
Pour la pagination, regarder sur le net ou sur le forum, nous en parlons régulièrement.

PYTHOGEEK, il y a 11 ans

Ouai mais endirait que la pagination ne marche pas , merci Carouge10

Carouge10, il y a 11 ans

Qu'est ce qui ne fonctionne pas dans la pagination ?

Glaived, il y a 11 ans

error_reporting(E_ALL ^ E_DEPRECATED);

Pour activé tout SAUF les E_DEPRECATED, et donc ne plus avoir les erreurs comme 1.Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead