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
Réponse acceptée

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

Carouge10
Réponse acceptée

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

Comment je peux les ignorer ?

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

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 !

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>

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.

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 .

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.

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

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

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