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

Langage PHP Discussion :

pagination en fonction de l'id dans l'url [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    developpeur analyste fonctionnel
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur analyste fonctionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 58
    Points
    58
    Par défaut pagination en fonction de l'id dans l'url
    Bonjour,
    J'ai deux scripts que je voudrais synthétiser . L'un affiche les informations de ma base de données en fonction d'un id se trouvant dans url. Si je choisis un artiste , il m'affiche seulement les œuvres de cette artiste.
    L'autre script ne sélectionne pas les œuvres de l'artiste mais affiche toutes les œuvres de ma bd avec une pagination .
    Depuis 5 jours j'essaye de synthétiser les deux pour obtenir, avec une pagination, des œuvres qui s'affiche en fonction d'un artiste spécifique. J'ai tout essayé. Les deux scripts ,indépendamment, fonctionnent; mais la synthèse non
    script affiche info de l'artiste spécifique :
    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
     <?php
    require('mysql.connect.php');
    if(isset($_GET['id'])&&((int) $_GET['id']>=1)){
    $q='SELECT titre FROM oeuvre WHERE id='.$_GET['id'];
    $r=mysqli_query($db_connect,$q);
    $row=mysqli_fetch_array($r,MYSQLI_ASSOC);
     
    if(mysqli_num_rows($r)!=1){
        $page_title='ERREUR!';
        include('./include/header.html');
        echo'<p class="error">L\'accés à cette page s\'est fait par erreur! Script oeuvre.php.</p>';
        include('./include/footer.html');
        exit();
    }
     
     
     
    include('./include/header.html');
     
    $r=mysqli_query($db_connect,$q);
     
    if(mysqli_num_rows($r)>0){
        ?>
        <article>
        <div id="vitrine">
     
    <!--menu ARTISTE dynamique récupération des artistes -->
        <ul id="sous_menu_vitrine">
    <?php
    $q='SELECT * FROM artiste ORDER BY nom';
    $r=mysqli_query($db_connect,$q);
    while(list($id,$nom)=mysqli_fetch_array($r,MYSQLI_NUM)){
     
        echo'<li><a href="artiste.php?id='.$id.'" title="'.$nom.'">'.$nom.'</a></li>';
    } ?>
    </ul><div id="texte_vitrine">
            <?php
    // affichage des informations liées l'artiste sélectionné dans le menu dnzamique //
    echo"<div class='majuscule'>{$row['titre']}\n .</div> ";
    if(isset($_GET['id'])&&((int) $_GET['id']>=1)){
    $q='SELECT titre FROM oeuvre WHERE id='.$_GET['id'];
    $r=mysqli_query($db_connect,$q);
    $row=mysqli_fetch_array($r,MYSQLI_ASSOC);
     
    if(mysqli_num_rows($r)!=1){
        $page_title='ERREUR!';
        include('./include/header.html');
        echo'<p class="error">L\'accés à cette page s\'est fait par erreur! Script oeuvre.php.</p>';
        include('./include/footer.html');
        exit();
    }
    include('./include/header.html');
     
    $r=mysqli_query($db_connect,$q);
     
    if(mysqli_num_rows($r)>0){
        ?>
        <article>
        <div id="vitrine">
    <!--menu ARTISTE dynamique récupération des artistes -->
        <ul id="sous_menu_vitrine">
    <?php
    $q='SELECT * FROM artiste ORDER BY nom';
    $r=mysqli_query($db_connect,$q);
    while(list($id,$nom)=mysqli_fetch_array($r,MYSQLI_NUM)){
     
        echo'<li><a href="artiste.php?id='.$id.'" title="'.$nom.'">'.$nom.'</a></li>';
    } ?>
    </ul><div id="texte_vitrine">
            <?php
    // affichage des informations liées l'artiste sélectionné dans le menu dnzamique //
    echo"<div class='majuscule'>{$row['titre']}\n .</div> ";($_GET['id']))
    et le code qui affiche toutes les œuvres dans une pagination:
    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
    <?php
    //Connexion à la base de données
    require('mysql.connect.php');
     
     
    $messagesParPage=1; //Nous allons afficher 5 messages par page.
     
    //Une connexion SQL doit être ouverte avant cette ligne...
    $retour_total='SELECT COUNT(*) AS total FROM oeuvre WHERE id='.mysql_real_escape_string('id');
     
    $r=mysqli_query($db_connect,$retour_total);
     //Nous récupérons le contenu de la requête dans $retour_total
    $donnees_total=mysqli_fetch_array($r); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
     
    //Nous allons maintenant compter le nombre de pages.
    $nombreDePages=ceil($total/$messagesParPage);
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1   
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
     
     
    $retour_messages='SELECT * FROM oeuvre LIMIT '.$premiereEntree.', '.$messagesParPage.'';
     
    $r=mysqli_query($db_connect,$retour_messages);
     
     
     
    while($donnees_messages=mysqli_fetch_assoc($r)) // On lit les entrées une à une grâce à une boucle
    {
         $lien=$donnees_messages['photo'];
         //Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design...
         //De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.
         echo '<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
                   <td>
                 <img src="'.$lien.'"/>
                    </tr>
                    <tr>
                         <td><strong>Titre de l\'oeuvre : '.stripslashes($donnees_messages['titre']).'</strong></td>
                    </tr>
                    <tr>
                         <td><strong>Genre : '.nl2br(stripslashes($donnees_messages['discipline'])).'</td>
                    </tr>
                    <tr>
                </table><br /><br />';
     
     
        //J'ai rajouté des sauts à la ligne pour espacer les messages.  
    }
     
     
     
    echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] ';
         } 
         else //Sinon...
         {
              echo ' <a href="information.php?page='.$i.'">'.$i.'</a> ';
         }
    }
    echo '</p>';
     
    ?>
    Je suis vraiment perdu et mon niveau de me permet pas d'y arrivé et pourtant j'ai cherché. Si je viens vers vous c'est que je ne vois pas comment. J'ai tout essayé même avec d'autres scripts de pagination.
    Un grand merci à celui ou celle qui pourra m'aider.
    Laurent

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Montre nous plutôt ce que tu as fais pour rassembler les deux.

    Quand même dans ton deuxième script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour_total='SELECT COUNT(*) AS total FROM oeuvre WHERE id='.intval($_GET['id']);

  3. #3
    Membre du Club
    Profil pro
    developpeur analyste fonctionnel
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur analyste fonctionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 58
    Points
    58
    Par défaut code de synthèse
    Bonjour,
    Merci de votre aide.
    voici le code
    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
     
     
    <?php
    //Connexion à la base de données
    require('mysql.connect.php');
     
    $messagesParPage=2; //Nous allons afficher 5 messages par page.
     if(isset($_GET['id']) && is_numeric($_GET['id'])){
    //Une connexion SQL doit être ouverte avant cette ligne...
    $retour_total='SELECT COUNT(*) AS total FROM oeuvre '; 
    $r=mysqli_query($db_connect,$retour_total);//Nous récupérons le contenu de la requête dans $retour_total
    $donnees_total=mysqli_fetch_assoc($r); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
     
    //Nous allons maintenant compter le nombre de pages.
    $nombreDePages=ceil($total/$messagesParPage);
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
     
    // La requête sql pour récupérer les messages de la page actuelle.
    $retour_messages='SELECT * FROM oeuvre WHERE id='.intval($_GET['id']).' ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'';
     
    $r=mysqli_query($db_connect,$retour_messages);
    $row=mysqli_fetch_array($r,MYSQLI_ASSOC);
    if(mysqli_num_rows($r)!=1){
        $page_title='ERREUR!';
        include('./include/header.html');
        echo'<p class="error">L\'accés à cette page s\'est fait par erreur! Script oeuvre.php.</p>';
        include('./include/footer.html');
        exit();
    }
     
     
     
    include('./include/header.html');
     
    $r=mysqli_query($db_connect,$q);
     
    if(mysqli_num_rows($r)>0){
        ?>
        <article>
        <div id="vitrine">
     
    <!--menu ARTISTE dynamique récupération des artistes -->
        <ul id="sous_menu_vitrine">
    <?php
    $q='SELECT * FROM artiste ORDER BY nom';
    $r=mysqli_query($db_connect,$q);
    while(list($id,$nom)=mysqli_fetch_array($r,MYSQLI_NUM)){
     
        echo'<li><a href="artiste.php?id='.$id.'" title="'.$nom.'">'.$nom.'</a></li>';
    } ?>
     
     
    </ul><div id="texte_vitrine">
            <?php
    // affichage des informations liées l'artiste sélectionné dans le menu dnzamique //
    echo"<div class='majuscule'>{$row['titre']}\n .</div> ";
     
    echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }  
         else //Sinon...
         {
              echo ' <a href="information.php?page='.$i.'">'.$i.'</a> ';
         }
    }
    echo '</p>';
     
     
     
    } else{
        echo'<p>il n\'y a actuellement pas de page de contenu associé à cette artiste.Revenez nous voir bientot!</p>';
    }
     
    } else{
        $age_title='ERREUR!';
        include('./include/header.html');
        echo'<p class="error">L\'accés à cette page s\'est fait avec une erreur</p>';
    include('./include/footer.html');
    }
    ?></div></div>      
    <div id="aside">
        <ul id="menu_gauche">
            <li><a href="index.php"><h1>1</h1><h5>Accueil</h5></a></li>
            <li><a href="#"><h1>3</h1> <h5>Espace</h5></a></li>
            <li><a href="#"><h1>5</h1> <h5>Arthotèque</h5></a></li> 
        <li><a href="#"><h1>7</h1><h5> Plateforme</h5></a></li>
        </ul>   
     
    <ul id="menu_droit">
        <li><a href="vitrine.php"><h1>2</h1><h5> Vtrine</h5></a></li>
            <li><a href="#"><h1>3</h1> <h5>Evènementiel</h5></a></li>
        <li><a href="#"><h1>6</h1><h5> Partenaire</h5></a></li>
        <li><a href="#"><h1>8</h1><h5> Contact</h5></a></li>
    </ul></div>
        </article></div>
    <?php
    include('./include/footer.html');
    ?>
    J'ai echo de la ligne 42 qui s'affiche.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si j'ai bien compris tu veux afficher les oeuvres d'un artiste.
    Tu devrais donc avoir une requête jointant les oeuvres et les artistes.

  5. #5
    Membre du Club
    Profil pro
    developpeur analyste fonctionnel
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur analyste fonctionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 58
    Points
    58
    Par défaut
    lorsque tu crée ta base tu parles des clefs externes permettant de relier les deux tables?
    J'ai pas besoin de cela car j'arrive à récupérer les œuvres de l'artiste en fonction de 'lartiste . ds ma table oeuvre j'ai un id oeuvre et id_artiste

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    j'arrive à récupérer les œuvres de l'artiste en fonction de 'lartiste . ds ma table oeuvre
    Elle est ou la requête qui fait ça dans ton code ?

  7. #7
    Membre du Club
    Profil pro
    developpeur analyste fonctionnel
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur analyste fonctionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 58
    Points
    58
    Par défaut
    J'ai rectifié la requete qui relie les deux tables dans le menu dynamique qui sélectionne les artistes .Quand tu cliques sur un artiste, il envoi l'id dans url et lance le script que je n'arrive pas à faire fonctionner pour afficher les données de l'artiste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $q='SELECT id , nom FROM artiste WHERE id='.$_GET['id'];
    $r=mysqli_query($db_connect,$q);
    $row=mysqli_fetch_array($r,MYSQLI_ASSOC);
    	echo"<a href='information.php?id={$row['id']}'>dfdf</a>";
    donc tu cliques sur l'artiste que tu as choisi, le script information.php se lance. Il y a la première requête. (ligne 11 voir code final ci-dessous), rectifié, pour faire la jointure avec le menu dynamique ci-dessus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $retour_total='SELECT COUNT(*) AS total FROM artiste '; 
    $r=mysqli_query($db_connect,$retour_total);//Nous récupérons le contenu de la requête dans $retour_total
    $donnees_total=mysqli_fetch_assoc($r); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total'];
    la deuxième requête (ligne37 voir code final ci-dessous):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour_messages='SELECT * FROM oeuvre WHERE id_artiste='.$_GET['id'].' LIMIT '.$premiereEntree.', '.$messagesParPage.'';
    il affiche bien la premiere oeuvre puis si je cique sur la deuxième page j'ai trois erreurs :
    Undefined variable: retour_total in C:\wamp\www\Version Finale\information2.php on line 18
    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, null given in C:\wamp\www\Version Finale\information2.php on line 18
    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\Version Finale\information2.php on line 43
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo ' <a href="information.php?page='.$i.'">'.$i.'</a> ';
    au final mon code complet
    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
    <?php
    //Connexion à la base de données
    mysql_connect('localhost', 'root', '');
    mysql_select_db('pourtoilartiste');
     
    $messagesParPage=1; //Nous allons afficher 5 messages par page.
     if(isset($_GET['id']) && is_numeric($_GET['id']))
     
    //Une connexion SQL doit être ouverte avant cette lgne...
    $retour_total=mysql_query('SELECT COUNT(*) AS total FROM artiste '); 
    $donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
     
    //Nous allons maintenant compter le nombre de pages.
    $nombreDePages=ceil($total/$messagesParPage);
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
     
    // La requête sql pour récupérer les messages de la page actuelle.
    $retour_messages=mysql_query('SELECT * FROM oeuvre  WHERE id_artiste ORDER BY id LIMIT '.$premiereEntree.', '.$messagesParPage.'');
     
    while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
    {
         //Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design...
         //De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.
         echo '<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
                    <tr>
                         <td><strong>Ecrit par : '.stripslashes($donnees_messages['titre']).'</strong></td>
                    </tr>
                    <tr>
                         <td>'.nl2br(stripslashes($donnees_messages['texte'])).'</td>
                    </tr>
                </table><br /><br />';
        //J'ai rajouté des sauts à la ligne pour espacer les messages.   
    }
     
    echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }   
         else //Sinon...
         {
              echo ' <a href="information2.php?page='.$i.'">'.$i.'</a> ';
         }
    }
    echo '</p>';

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans ta requête COUNT tu as compté les artistes alors que c'est les oeuvres de l'artiste que tu veux.

    Dans ta deuxième requête tu as bien mis le WHERE mais tu as oublié la valeur.

    Conseil : ne nomme pas tes élements "id" sinon on ne sait pas de l'id de quoi on parle.

  9. #9
    Membre du Club
    Profil pro
    developpeur analyste fonctionnel
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur analyste fonctionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 58
    Points
    58
    Par défaut
    bonsoir,
    Merci pour ton aide !!
    La première requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour_total=mysql_query('SELECT COUNT(*) AS total FROM oeuvre ');
    la deuxieme :
    $retour_messages=mysql_query('SELECT * FROM oeuvre WHERE id_artiste='.$_GET['id'].' ORDER BY id LIMIT '.$premiereEntree.', '.$messagesParPage.'');'.$messagesParPage.'');[/code]
    au final rien ne s'affiche sur la premiere page et si je change id = id_artiste (qui correspond à un id de l'artiste reliant id de l'oeuvre de ma table oeuvre il m'affiche l'oeuvre en fonction de l'artiste pour la premiere page
    et à la deuxieme j'ai les mêmes erreurs
    De plus il me met quatre page alors qu'il devrais n'en mettre que deux comme je n'ai que 2 oeuvres par artistes.C'est comme si il affichait toutes ma table c est à dire les 4 oeuvres
    les éléments, c'est à dire ?

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est comme si il affichait toutes ma table c est à dire les 4 oeuvres
    Normal puisque tu fais ton COUNT sur toute la table ; il manque le WHERE.

    Pareil pour la deuxième requête, c'est l'id de l'artiste que tu dois filtrer, pas l'id de l'oeuvre.
    Tu vois en mettant "id" partout, tu écris des incohérences : "id" dans ta requête c'est l'id de l'oeuvre et $_GET['id'] c'est l'id d'un artiste.

  11. #11
    Membre du Club
    Profil pro
    developpeur analyste fonctionnel
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur analyste fonctionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 58
    Points
    58
    Par défaut
    j'ai donc remplacé à la première requête le id avec le where :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour_total=mysql_query('SELECT COUNT(*) AS total FROM oeuvre WHERE id_artiste='.$_GET['id'] );
    et à la deuxieme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour_messages=mysql_query('SELECT * FROM oeuvre  WHERE id_artiste='.$_GET['id'].' ORDER BY id LIMIT '.$premiereEntree.', '.$messagesParPage.'');
    la il n'affiche que deux page (donc plus de cohérence) et à la deuxieme page les meme erreurs il ne trouve pas la variable retour_total

    si je remplace: le ?page par ?id (ligne 10)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }   
         else //Sinon...
         {
              echo ' <a href="information2.php?id='.$i.'">'.$i.'</a> ';
         }
    }
    il ne m'affiche rien sauf page:

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je pense qu'il y a un cafouillage : dans tes premières versions $retour_total c'était la chaine de requête et $s le retour de mysqli_query.
    Dans le dernier code $retour_total est devenu le retour de la requête et on est passé de mysqli à mysql.

    Pourtant dans le dernier code que tu nous as donné c'est bien écrit ; est-ce qu'il correspond bien à la réalité sur le serveur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ligne 17 : $retour_total=mysql_query('SELECT COUNT(*) AS total FROM oeuvre WHERE id_artiste='.$_GET['id'] ); 
    ligne 18 : $donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.

  13. #13
    Membre du Club
    Profil pro
    developpeur analyste fonctionnel
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur analyste fonctionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 58
    Points
    58
    Par défaut
    dans mes différente version , je l 'ai adapté avec mysqli car mon code l'utilise; par contre en reprenant les ancienne version je ne l 'ai pas adapté mysqli mais cela ne devrai pas poser problème ?
    je viens de réécrire le code avec mysqi
    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
    <?php
    //Connexion à la base de données
    require('mysql.connect.php');
     
     
     
     
     
    $messagesParPage=1; //Nous allons afficher 5 messages par page.
     if(isset($_GET['id']) && is_numeric($_GET['id']))
     $r='SELECT COUNT(*) AS total FROM oeuvre WHERE id_artiste='.$_GET['id'];
     
    //Une connexion SQL doit être ouverte avant cette lgne...
    $retour_total=mysqli_query( $db_connect,$r); 
     
    $donnees_total=mysqli_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
     
    //Nous allons maintenant compter le nombre de pages.
    $nombreDePages=ceil($total/$messagesParPage);
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
     $v='SELECT * FROM oeuvre  WHERE id_artiste='.$_GET['id'].' ORDER BY id LIMIT '.$premiereEntree.', '.$messagesParPage.'';
    // La requête sql pour récupérer les messages de la page actuelle.
    $retour_messages=mysqli_query($db_connect,$v);
     
    while($donnees_messages=mysqli_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
    {
         //Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design...
         //De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.
         echo '<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
                    <tr>
                         <td><strong>Ecrit par : '.stripslashes($donnees_messages['titre']).'</strong></td>
                    </tr>
                    <tr>
                         <td>'.nl2br(stripslashes($donnees_messages['texte'])).'</td>
                    </tr>
                </table><br /><br />';
        //J'ai rajouté des sauts à la ligne pour espacer les messages.   
    }
     
    echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }   
         else //Sinon...
         {
              echo ' <a href="information2.php?page='.$i.'">'.$i.'</a> ';
         }
    }
    echo '</p>';
    echo '</p>';

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour l'erreur que tu rencontres c'est un problème d'écriture, pas de mysql/mysqli.
    Mais de manière générale utilise mysqli ou PDO, pas mysql.

  15. #15
    Membre du Club
    Profil pro
    developpeur analyste fonctionnel
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur analyste fonctionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 58
    Points
    58
    Par défaut
    c est réécrit
    d'écriture c'est à dire ?
    une variable en double ?
    franchement je vois pas ... :-(
    variable r indefined ligne 14

    Pour moi il ne trouve pasl' id dans url donc la requete est fausse à la deuxième page . Comme c'est aussi un code que j'ai récupéré sur internet je suis incapable de le modifier.

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Elle sort d'ou cette variable "r" maintenant ?

    Tu peux nous mettre le code actuel ?

  17. #17
    Membre du Club
    Profil pro
    developpeur analyste fonctionnel
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur analyste fonctionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 58
    Points
    58
    Par défaut
    yes !! en fait je l'ai mis plus haut et elle existe lorsque je l'ai reécris avec mysqli
    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
    <?php
    //Connexion à la base de données
    require('mysql.connect.php');
     
     
     
     
     
    $messagesParPage=1; //Nous allons afficher 5 messages par page.
     if(isset($_GET['id']) && is_numeric($_GET['id']))
     $r='SELECT COUNT(*) AS total FROM oeuvre WHERE id_artiste='.$_GET['id'];
     
    //Une connexion SQL doit être ouverte avant cette lgne...
    $retour_total=mysqli_query( $db_connect,$r); 
     
    $donnees_total=mysqli_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
     
    //Nous allons maintenant compter le nombre de pages.
    $nombreDePages=ceil($total/$messagesParPage);
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
     $v='SELECT * FROM oeuvre  WHERE id_artiste='.$_GET['id'].' ORDER BY id LIMIT '.$premiereEntree.', '.$messagesParPage.'';
    // La requête sql pour récupérer les messages de la page actuelle.
    $retour_messages=mysqli_query($db_connect,$v);
     
    while($donnees_messages=mysqli_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
    {
         //Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design...
         //De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.
         echo '<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
                    <tr>
                         <td><strong>Ecrit par : '.stripslashes($donnees_messages['titre']).'</strong></td>
                    </tr>
                    <tr>
                         <td>'.nl2br(stripslashes($donnees_messages['texte'])).'</td>
                    </tr>
                </table><br /><br />';
        //J'ai rajouté des sauts à la ligne pour espacer les messages.   
    }
     
    echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }   
         else //Sinon...
         {
              echo ' <a href="information2.php?page='.$i.'">'.$i.'</a> ';
         }
    }
    echo '</p>';

  18. #18
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ton if en ligne 10 doit inclure { tout le code en dessous }

  19. #19
    Membre du Club
    Profil pro
    developpeur analyste fonctionnel
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur analyste fonctionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 58
    Points
    58
    Par défaut
    j'ai déja essayé et du coup il ne m'affiche rien c'est à dire comme si je mettais un else ensuite
    ce qui veux bien dire pas d identifiant valable dans url

  20. #20
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    normal puisqu'elle n'est pas présente dans le lien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo '<a href="information2.php?id=' . $id_artiste . '& page='.$i.'">'.$i.'</a> ';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_GET['id'])) {
    $id_artiste = intval($_GET['id']);
     
     $r='SELECT COUNT(*) AS total FROM oeuvre WHERE id_artiste='.$id_artiste;

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 12
    Dernier message: 24/12/2014, 11h34
  2. [Drupal] Masquer/afficher un filtre d'une vue en fonction d'un terme dans l'url
    Par bannik dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 20/08/2014, 13h16
  3. Réponses: 1
    Dernier message: 25/09/2013, 17h31
  4. Réponses: 4
    Dernier message: 21/11/2006, 14h44
  5. Réponses: 4
    Dernier message: 02/06/2004, 16h35

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