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 :

Réaliser une pagination PHP ( PDO ) [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut Réaliser une pagination PHP ( PDO )
    Bonjour à tous,
    J'essaye actuellement de créer une pagination pour une galerie d'image.
    Mes informations provenant de la BDD s'affichaient bien au par-avant ( que j'insère le code de pagination ). Pourtant aucune erreur ne s'affiche.
    Si quelqu'un pourrait m'aider à trouver ce qui ne va pas, voici mon 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
     
    <?php
    require_once("connexiondessins.inc.php");
    try {
     
    $retour = $bdd->prepare('SELECT COUNT(*) AS nb_images FROM dessins');
     
    $retour->execute();
    $imageparpage=12;
    $dess = $retour->fetch(PDO::FETCH_ASSOC);
    $totaldesimages = $dess['nb_images'];
     
    $nombredepage  = ceil($totaldesimages/$imageparpage);
    echo 'Page : ';
    for ($i = 1 ; $i <= $nombredepage ; $i++)
    {
        echo '<a href="sps.php?page=' . $i . '">' . $i . '</a> ';
    }
    if (isset($_GET['page']) && !is_numeric($_GET['page']))
    {
            $page = intval($_GET['page']);
    }
    else
    {
            $page = 1;
    }
     
    $premiereimageafficher = ($page - 1)* $imageparpage - $imageparpage;
     
    $reponse = $bdd->prepare('SELECT id,categorie,titre,image,description FROM dessins WHERE categorie= :category ORDER BY id DESC LIMIT :offset, :nbimages');
     
    $reponse->bindValue(':category', 'sps');
    $reponse->bindParam(':nbimages', $imageparpage);
    $reponse->bindParam(':offset', $premiereimageafficher);
     
    $reponse->execute();
     
    ?>
    <?php while ($dessins = $reponse->fetch()) { ?>
    <div class="cat1">
      <?php echo '<span class="classtext1v">'.htmlspecialchars($dessins['categorie']).'</span>'; ?>
      <br />
      <?php echo '<span class="classtext2v">'.htmlspecialchars($dessins['titre']).'</span>'; ?>
      <br />
      <a href="selectionsps.php?id=<?php echo htmlspecialchars($dessins['id']); ?>"><img src="images/<?php echo htmlspecialchars($dessins['image']);?>" width="200" height="250" /></a>
    </div>
     
    <?php  
    }
            $reponse->closeCursor();
     
    }
    catch (Exception $e) {
            echo 'Erreur : ',  $e->getMessage();
    } 
    ?>
    Merci pour votre attention et votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut, plusieurs choses à corriger que je t'avais déjà parlé d'ailleurs dans un autre tuto

    Citation Envoyé par reverb94 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // Ici ce n'était pas !is_numeric() et j'ai rajouté des conditions pour protéger le tout
    if (isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] > 0 && $_GET['page'] <= $nombredepage)
    {
            $page = intval($_GET['page']);
    }
    else
    {
            $page = 1;
    }
     
    // Ensuite ici c'est pas bon (il fallait enlever le  -1)
    $premiereimageafficher = $page* $imageparpage - $imageparpage;
    Essaye ca, sinon qu'est ce qui ne marche pas exactement ?
    As tu essayé de passer une page en paramètre (?page=2) ?
    A quel moment se bloque la page, c'est une page blanche ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut
    Bonjour Walane , oui j'ai essayé de modifier quelque partie du code à l'aide de tuto en ligne mais sans succès ^^'. Merci encore pour ton soutien .

    Lorsque je suis sur ma page dessins.php, je séléctionne la catégorie sps.
    Cela m'envoie bien sur ma page 1 : sps.php?=1 , mais aucunes de mes vignettes dessins ( avec la catégorie, titre, et image réduite ) ne s'affichent.
    La pagination est bien présente sur la page ( visible ), mais, elle comporte 10 pages ( toutes vides ) alors qu'en comtabilisant le total de vignette il ne devrait y avoir que 2 ou 3 page :/. ( aucunes pages n'affichent d'informations provenant de ma bdd ).

    Voici le codage mis à jour :

    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
     
    <?php
    require_once("connexiondessins.inc.php");
    try {
     
    $retour = $bdd->prepare('SELECT COUNT(*) AS nb_images FROM dessins');
     
    $retour->execute();
    $imageparpage=12;
    $dess = $retour->fetch(PDO::FETCH_ASSOC);
    $totaldesimages = $dess['nb_images'];
     
    $nombredepage  = ceil($totaldesimages/$imageparpage);
    echo 'Page : ';
    for ($i = 1 ; $i <= $nombredepage ; $i++)
    {
        echo '<a href="sps.php?page=' . $i . '">' . $i . '</a> ';
    }
    if (isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] > 0 && $_GET['page'] <= $nombredepage)
    {
            $page = intval($_GET['page']);
    }
    else
    {
            $page = 1;
    }
     
    $premiereimageafficher = $page* $imageparpage - $imageparpage;
     
    $reponse = $bdd->prepare('SELECT id,categorie,titre,image,description FROM dessins WHERE categorie= :category ORDER BY id DESC LIMIT :offset, :nbimages');
     
    $reponse->bindValue(':category', 'sps');
    $reponse->bindParam(':nbimages', $imageparpage);
    $reponse->bindParam(':offset', $premiereimageafficher);
     
    $reponse->execute();
     
    ?>
    <?php while ($dessins = $reponse->fetch()) { ?>
    <div class="cat1">
      <?php echo '<span class="classtext1v">'.htmlspecialchars($dessins['categorie']).'</span>'; ?>
      <br />
      <?php echo '<span class="classtext2v">'.htmlspecialchars($dessins['titre']).'</span>'; ?>
      <br />
      <a href="selectionsps.php?id=<?php echo htmlspecialchars($dessins['id']); ?>"><img src="images/<?php echo htmlspecialchars($dessins['image']);?>" width="200" height="250" /></a>
    </div>
     
    <?php  
    }
            $reponse->closeCursor();
     
    }
    catch (Exception $e) {
            echo 'Erreur : ',  $e->getMessage();
    } 
    ?>
    Merci pour ton attention est ton aide.
    Sincèrement.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Debug pas à pas, avec des echos par exemple, pour voir là où ca plante.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut
    Re,
    Je me suis aperçu que nb_images était une erreur ( sur la premiere requête ) je l'ai donc corrigé en 'nbimages' comme dans la requête qui suit (sa na malheuresement rien résolu, exepté le faite que ma pagination passe de 10 à 3 page max).

    j'ai également rajouter critère de selection pour la catégorie sps seulement avec WHERE categorie="sps"';

    J'ai donc suivi ton conseil en faisant des "echo print_r($mavariable);"

    et je me suis aperçu que pour $totaldesimages, il me comptabilise 251 images alors qu'il n'y en a qu'une vingtaine (de la catégorie 'sps').

    peut-être y a t'il une solution à ce problème ^^' je continue mes recherches de mon cotés. Merci pour ton attention walane .

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut
    Bonjours,

    une nouvelle erreur s'affiche, j'ai fait des recherches dessus grâce à notre amis google, mais sa ne m'aide pas vraiment :/.
    Voici l'erreur qui m'est afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0', '12'' at line 1
    Merci pour ton aide.
    Sincèrement.

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

Discussions similaires

  1. comment réaliser une pagination avec zend
    Par aziza_1989 dans le forum Autres composants
    Réponses: 3
    Dernier message: 04/06/2012, 18h37
  2. [SQL] Réaliser une pagination comme dans le forum
    Par 12_darte_12 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/06/2006, 18h04
  3. [MySQL] Réaliser une pagination sur un forum
    Par maroweb dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/02/2006, 12h39
  4. [MySQL] réaliser une sous requete en php
    Par SENCABOY dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 14/02/2006, 20h19
  5. question pour réaliser une pagination
    Par vbcasimir dans le forum Langage
    Réponses: 1
    Dernier message: 13/10/2005, 08h17

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