IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Toutes mes entrées ne s'affichent pas [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Toutes mes entrées ne s'affichent pas
    Bonjour les gens

    Dans mon site, j'ai une table dans ma BDD avec un certain nombre d'entrées (une pour chaque article). Je les affiche sur différentes pages :
    • L'une s'appelle "Derniers Ajouts" et montre toutes les entrées par ordre décroissant et avec un système automatique de pages (5 articles par page)

    • Les 3 autres sont "Guitares", "Basses", et "Autres", chaque page n'affiche que les entrées dont la valeur du champ "type" est respectivement égale à "guitare", "basse" ou "autre" (toujours avec le même système de pages automatiques). Elles constituent en quelques sortes des sous-catégories.


    Mon problème est que, par exemple, la catégorie "Guitares" n'affiche que 3 entrées alors qu'il en existe 5 dont le champ "type" est égal à "guitare".
    J'ai ensuite remarqué que en fait la catégorie "Guitares" n'affiche que les entrées concernées (type="guitare") étant aussi présentes sur la 1ere page de la catégorie "Derniers Ajouts", et elle ignore les guitares étant présentes sur les autres pages, alors que ces deux catégories devraient être indépendantes.

    Voici les liens pour que vous puissiez constater le problème :
    www.rock-design.fr/derniers_ajouts.php
    www.rock-design.fr/guitares.php

    C'était difficile à expliquer, j'espère que j'ai été clair

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <?php
    mysql_connect("", "", "");
    mysql_select_db("");        
     
    // On met dans une variable le nombre de messages qu'on veut par page
    $nombreDeMessagesParPage = 5;
    // On récupère le nombre total de messages
    $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM instruments WHERE active=1');
    $donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
    // On calcule le nombre de pages à créer
    $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
    // Puis on fait une boucle pour écrire les liens vers chacune des pages
    ?>
     
    <div class="cadre_titre"><h1>Derniers Ajouts</h1><p><?php echo 'Il y a ' . $totalDesMessages . ' instruments'; ?></p></div>
     
     
    <p class="pages">
    <?php
     
    if (isset($_GET['page']))
    {
            $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
    }
    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)
    }
     
    echo 'Page : ';
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
            if ($i != $page)
            {
        echo '<a href="derniers_ajouts.php?page=' . $i . '">' . $i . '</a> ';
            }
            else
            {
            echo $i . ' ' ;
            }
    }
     
    ?></p>
     
    <?php
    // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
    $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
     
    $reponse = mysql_query('SELECT * FROM instruments ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
     
     
            while ($donnees = mysql_fetch_array($reponse) )
            {
                    if ($donnees['active'] == 1)
                    {
                    $TailleImage = getimagesize ('photos/instruments/' . $donnees['image']);
                    $width = ($TailleImage[0] + 16) ;
                    $height = ($TailleImage[1] + 16) ;
                    ?>
     
                    <div><p> ICI J'AFFICHE LE CONTENU, JE VOUS ÉPARGNE LE CODE ÇA FAIT LOURD </p></div>
     
     
     
    <p class="pages"><?php        }
                            }
     
    //Et on remet les pages en fin de page
    if (isset($_GET['page']))
    {
            $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
    }
    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)
    }
     
    echo 'Page : ';
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
            if ($i != $page)
            {
        echo '<a href="derniers_ajouts.php?page=' . $i . '">' . $i . '</a> ';
            }
            else
            {
            echo $i . ' ' ;
            }
    }
    mysql_close(); // Déconnexion de MySQL


    Voici le code de "Guitares" (semblable à celui de "Basses" et "Autres", c'est lui qui n'affiche pas tout):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    mysql_connect("", "", "");
    mysql_select_db("");        
     
    // On met dans une variable le nombre de messages qu'on veut par page
    $nombreDeMessagesParPage = 5;
    // On récupère le nombre total de messages
    $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM instruments WHERE active=1 AND type="guitare"');
    $donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
    // On calcule le nombre de pages à créer
    $nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
    // Puis on fait une boucle pour écrire les liens vers chacune des pages
    ?>  
     
                    <div class="cadre_titre"><h1>Guitares</h1><p><?php echo 'Il y a ' . $totalDesMessages . ' guitares'; ?></p></div>
                    <p class="pages">
     
    <p class="pages"><?php
     
    if (isset($_GET['page']))
    {
            $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
    }
    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)
    }
     
    echo 'Page : ';
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
            if ($i != $page)
            {
        echo '<a href="guitares.php?page=' . $i . '">' . $i . '</a> ';
            }
            else
            {
            echo $i . ' ' ;
            }
    }
    ?></p>
     
    <?php
    // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
    $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
     
    $reponse = mysql_query('SELECT * FROM instruments ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
     
     
            while ($donnees = mysql_fetch_array($reponse) )
            {
                    if ($donnees['type'] == guitare)
                    {
                            if ($donnees['active'] == 1)
                            {
                            $TailleImage = getimagesize ('photos/instruments/' . $donnees['image']);
                            $width = ($TailleImage[0] + 16) ;
                            $height = ($TailleImage[1] + 16) ;
    ?>
     
     
    <div><p> ICI J'AFFICHE LE CONTENU, JE VOUS ÉPARGNE LE CODE ÇA FAIT LOURD </p></div>
     
     
    <p class="pages"><?php        }
                                    }
                            }
     
    if (isset($_GET['page']))
    {
            $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
    }
    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)
    }
     
    echo 'Page : ';
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
            if ($i != $page)
            {
        echo '<a href="guitares.php?page=' . $i . '">' . $i . '</a> ';
            }
            else
            {
            echo $i . ' ' ;
            }
    }
    mysql_close(); // Déconnexion de MySQL


    Merci d'avance pour votre réponse, j'ai vraiment besoin de votre aide

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    C'est marrant parce que t'as première requête est pas mal faite :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM instruments WHERE active=1 AND type="guitare"');

    Par contre pour la deuxième, tu te fais chier (désolé de l'expression) à rajouter des conditions :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $reponse = mysql_query('SELECT * FROM instruments ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
     
     
            while ($donnees = mysql_fetch_array($reponse) )
            {
                    if ($donnees['type'] == guitare)
                    {
                            if ($donnees['active'] == 1)
                            {
                            $TailleImage = getimagesize ('photos/instruments/' . $donnees['image']);
                            $width = ($TailleImage[0] + 16) ;
                            $height = ($TailleImage[1] + 16) ;

    Bon je suppose que les accolades pas fermées c'est un oubli lors du copier/coller sur le fofo

    Correction :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $reponse = mysql_query('SELECT * FROM instruments WHERE type='guitare' AND active='1' ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
     
     
            while ($donnees = mysql_fetch_array($reponse) )
            {
                    $TailleImage = getimagesize ('photos/instruments/' . $donnees['image']);
                    $width = ($TailleImage[0] + 16) ;
                    $height = ($TailleImage[1] + 16) ;

    Ca résoudra peut-être ton problème car tes conditions n'étaient pas tout à fait correctes niveau synthaxe (pour la 2ieme requête je parle, évidement)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    C'est bien ça, merci beaucoup

    Si la première fois c'était bien fait et pas la deuxième, c'est que dans un premier temps j'avais pas fait le "WHERE" (ni dans le premier ni dans le deuxième) et quand j'ai vu que le nombre de pages était incorrect j'ai corrigé ^^

    Merci encore pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/03/2010, 10h19
  2. mes image ne s'affiche pas
    Par vince351 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 05/04/2007, 13h00
  3. Tout mes fichiers php ne sont pas lu
    Par vermix dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2006, 11h21
  4. [Outils][Crystal Report] Pourquoi mes icones ne s'affichent pas ?
    Par tonynho dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 12/05/2006, 15h29
  5. [HTML Workshop] Mes images ne s'affichent pas
    Par lamarre aisha dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 25/10/2005, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo