Problème LIMIT

Eléphanteau du PHP | 30 Messages

07 août 2007, 01:44

Bonjour à tous,
J'ai copier/coller/modifier le code LIMIT qui se trouve dans le tuto de PHPFrance et voici mon code une fois modifié:
<?php
            echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
            ?>
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
            <title></title>
            <meta name="description" content="" />
            <meta name="keywords" content="" />
            <meta name="author" content="Bazonnet Benjamin" />
            <meta name="generator" content="L'Equipe de Mon Hôtel Virtuel" />
            <meta http-equiv="imagetoolbar" content="no" />
            <meta http-equiv="Pragma" content="no-cache" />
            <style type="text/css">
            /* <![CDATA[ */ 
            body {
                color: #000;
                background-color: #efefef;
                font-family: verdana, helvetica, sans-serif;
                font-size: 80% !important;
            }
            p.situation {
                text-align: right;
                padding: 1em;
            }
            p.navigation {
                text-align: center;
                font-size: 0.85em;
                text-decoration: underline;
            }
            p.date_nouv {
                float: right;
                font-size: 0.85em;
            }
            /* ]]> */
            </style>
            </head>
            <body>
            <?php
            /**
            Commençons par fixer les paramètres :
             */
            /* Paramètres de connexion */
            $admin_bd   = "*************";              /* Le pseudonyme permettant à l'administrateur de se connecter */
            $mdp_bd     = "*************";                  /* Le mot d passe de l'administrateur de base de données */
            $serveur_bd = "*************";         /* L'adresse du serveur de base de données */
            $base_bd    = "*************";           /* La base de données où sont enregistrées les informations */
            
            /* Paramètres de pagination */
            $nb_hotels_par_page = 20;             /* Nombre de d'hôtels par page */
            $url = "./carte_auxerre.php?id=$id&page=";
            
            /* On détermine quelle est la page qui est actuellement affichée */
            $page_en_cours    = isset($_GET['page']) ? $_GET['page'] : 0;
            $page_affichee    = ($page_en_cours + 1);
            
            /* Connexion au serveur de base de données */
            $connexion = mysql_pconnect($serveur_bd, $admin_bd, $mdp_bd);
            mysql_select_db($base_bd);
            
            /* Requête pour compter les hôtels présents dans notre base de données */
            $sql_nb = "SELECT COUNT(*) FROM `hotels` WHERE ville=\"$auxerre\"";
            
            /* Exécution de la requête et récupération du résultat */
            $resultat_1 = mysql_query($sql_nb);
            $nb_hotels = mysql_result($resultat_1, 0);
            
            /* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */
            $nb_pages = ceil($nb_hotels / $nb_hotels_par_page);
            
            /** 
            Nous disposons maintenant de suffisament d'éléments pour créer notre barre de navigation.
            Première chose à vérifier : avons-nous plusieurs pages, et au moins une ?
             */
            if($nb_pages > 0)
            {
                /* On définit une variable qui contiendra les données de navigation */
                $barre_nav = "";
                /* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */
                if($nb_pages > 1)
                {
                    /** 
                    Nous avons plusieurs pages: nous allons afficher successivement les liens vers
                    les pages précédentes s'il y en a, la page en cours et les liens vers les pages
                    suivantes. Nous aurons une barre sous la forme : 1 | 2 | 3 etc.. en liens clicables
                    sauf pour la page en cours dont nous mettrons le chiffre en gras
                     */
                    if($page_en_cours > 0)
                    {
                        for($i = 0; $i < $page_en_cours; $i++)
                        {
                            $p = $i + 1;
                            $barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | ";
                        }
                    }
                    /**
                    On affiche la page en cours : notez le (+ 1) : pour les calculs, nous partons d'une 
                    page 0 mais pour l'internaute, il est préférable de commencer à la page 1, donc on incrémente
                     */
                    $barre_nav .= "<strong>". $page_affichee ."</strong>";
                    /* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */
                    if(($page_affichee) < $nb_pages)
                    {
                        /* Il reste encore d'autres pages à afficher */
                        $nb_suivantes = $nb_pages - ($page_affichee);
                        for($j = ($page_affichee); $j < $nb_pages; $j++)
                        {
                            $p = $j + 1;
                            $barre_nav .= " | <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>";
                        }
                    }
                    
                    /* On peut définir en plus la situation dans une autre variable à afficher ailleurs */
                    $page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages.";
                }
                else
                {
                    /* Nous n'avons qu'une seule page, on peut se contenter d'afficher juste page 1/1 */
                    $barre_nav .= "page 1/1";
                }
                /**
                On peut maintenant afficher notre page. On va commencer par récupérer les informations
                On doit définir à partir de quelle nouvelle on doit récupérer les données dans la clause LIMIT.
                 */
                $debut = $page_en_cours * $nb_hotels_par_page;
                $sql_n = "SELECT * FROM hotels LIMIT ". $debut .", ". $nb_hotels_par_page .";";
                $nouvelles = mysql_query($sql_n);
            ?>
            <p class="situation"><?php echo($page_affichee); ?></p>
            <?php
                while($hotels = mysql_fetch_assoc($hotels))
                {
            ?>
            <p class="nom_hotel">Nom de l'Hôtel: <?php echo($hotels['nom_hotel']); ?></p>
            <h3>Pseudo du Directeur: <?php echo($hotels['pseudo']); ?></h3>
            <h3>Classification de l'Hôtel: <?php echo($hotels['classification']); ?></h3>
            <hr />
            <?php
                }
                /* on libère la mémoire */
                mysql_free_result($resultat_1);
                mysql_free_result($hotels);
                /* On peut fermer la connexion à MySQL */
                mysql_close($connexion);
                /* On affiche maintenant la barre de navigation */
            ?>
            <p class="navigation"><?php echo($barre_nav); ?></p>
            <?php
            }
            else
            {
                /** 
                Nous n'avons aucune page, on peut alors afficher un message autre 
                sans devoir nous préoccuper de la navigation
                 */
            ?>
            <h3>Il n'y à aucun hôtel à Auxerre</h3>
            <hr />
            <?php
            }
            ?>
            </body>
            </html>
Il ne me met pas d'erreur mais affiche la phrase "Il n'y à aucun hôtel à Auxerre" comme si il n'y avais aucune entrée dans la base alors que j'ai mis une entrée dedans pour faire un test.

Savez-vous pourquoi sa m'affiche sa ?

Merci d'avance pour vos réponses !

EDIT: J'ai trouvé, par contre, les données enregistrées ne s'affiche toujours pas, j'ai seulement le "page 1/1" qui s'affiche pourquoi ?

Merci

Mammouth du PHP | 19672 Messages

07 août 2007, 06:32

Il manque certains éléments :
$sql_nb = "SELECT COUNT(*) FROM `hotels` WHERE ville='". $auxerre ."'";
Où est définie ta variable $auxerre ? Dans le code que tu montres, nulle part...

Pareil pour $i dans :
$url = "./carte_auxerre.php?id=$id&page=";
Vérifie ces deux variables et éventuellement refais un test après correction s'il y a erreur.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 30 Messages

07 août 2007, 12:08

Non c'est bon j'ai trouvé, c'était quelques erreurs bêtes ! La variable auxerre était dans ma base de donnée mais je ne sais même pas pourquoi j'ai mis un $ devant lol :)