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


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Archéologue
    Inscrit en
    Mars 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Archéologue
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 134
    Par défaut Réaliser une pagination
    Bonjour à vous,
    je suis un peu (beaucoup) débutant en code, mais j'aimerais faire un tableau avec pagination.
    Du coup, j'ai essayé d'adapter un code à mon tableau généré à partir d'une requête SQL. J'arrive bien à n'afficher que les 10 premiers éléments de mon tableau avec ce code, mais ce sont toujours les mêmes 10 premiers éléments qui s'affichent sur toutes les pages et le lien "page précédente" ne s'affiche jamais.
    En regardant ce bout de code, est-ce que quelqu'un pourrait m'aider ?
    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
     
    	//connexion au serveur
    	$serveur = "localhost";
    	$login = "root";
    	$pass = "";
    	$dbname = "archeodunum_local";
    	$chemin_image="http://archeodunum/";
    	$hsc = function($p) { return htmlspecialchars($p, ENT_QUOTES, 'utf-8'); }; // échappement des caractères dangereux
    	try{
    		$connexion = new PDO("mysql:host=$serveur;dbname=$dbname;charset=UTF8",$login,$pass);
    		$connexion->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    				}
    	catch(PDOException $e){
    		echo 'Echec : ' .$e->getMessage();
    	}
    	//requête SQL et mise en forme en tableau
    	$page = (!empty($_GET['page']) ? $_GET['page'] : 1);
    	$limite=10;
    	$debut = ($page -1) * $limite;
    	$sql2="SELECT SQL_CALC_FOUND_ROWS * from site LEFT JOIN auteur ON site.ID_RO=auteur.ID_Auteur ORDER BY LTRIM(UPPER(site.Commune)) ASC LIMIT :limite OFFSET :debut";
    	$sql2 = $connexion->prepare($sql2);
    	$sql2->bindValue('debut', $debut,PDO::PARAM_INT);
    	$sql2->bindValue('limite',$limite,PDO::PARAM_INT);
     
    $sql2->execute();
    $resultFoundRows = $connexion->query('SELECT found_rows()');
    $nombredElementsTotal = $resultFoundRows->fetchColumn();
    ?>
    <style>
    th{
    	text-align: center;
    }
    td{
    	border: 1px solid lightgrey;
    	padding: 5px !important;
    	vertical-align: middle;
    }
    </style>
     
    <table class="table table-hover" >
    		<thead>
    			<tr>
    				<th width=25%> Commune - Lieu-dit </th>
    				<th width=10%> Département </th>
    				<th width=5%> Année </th>
    				<th width= 15%> Type de site </th>
    				<th width=10%> Etat d'avancement </th>
    				<th width=15%> RO </th>
    				<th width=5%> Latitude </th>
    				<th width=5%> Longitude </th>
    				<th width=5%> Notice </th>
    				<th width= 10%> </th>
    			</tr>
    		</thead>
     
    <?php
        while ($row = $sql2->fetch())
     
    {
    	$row  = array_map($hsc, $row); // échappement de toutes les valeurs
    $notice = (!empty($row['Notice']))? '<a href='.$row['Notice'].'><img src='.$chemin_image.'lien alt=notice width=30% /></a>' : '';
    $fiche_RO = (!empty($row['Fiche']))? '<a href='.$chemin_image.'collaborateur/'.$row['Nom'].'-'.$row['Prénom'].'>'.$row['Nom_Auteur'].'</a>' : ''.$row['Nom_Auteur'].'';
    echo "<tr>
    		<td>".$row['Commune']." - ".$row['Lieu_dit']."</td>
    		<td>".$row['Departement']."</td>
    		<td>".$row['Annee']."</td>
    		<td>".$row['Type']."</td>
    		<td>".$row['Etat_fouille']."</td>
    		<td>".$fiche_RO."</td>
    		<td>".$row['Lat']."</td>
    		<td>".$row['Lon']."</td>
    		<td Style='text-align:center !important'>".$notice."</td>
    		<td><a href='modifier_site?id=".$row['ID_Site']."&o=u'>Modifier</a></td>
    	</tr>\n";
    }
     
    ?>
    </table>
    <?php
    $nombreDePages = ceil($nombredElementsTotal / $limite);
     
     
    if ($page > 1):
        ?><a href="?page=<?php echo $page - 1; ?>">Page précédente</a> — <?php
    endif;
     
     
    for ($i = 1; $i <= $nombreDePages; $i++):
        ?><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a> <?php
    endfor;
     
     
    if ($page < $nombreDePages):
        ?>— <a href="?page=<?php echo $page + 1; ?>">Page suivante</a><?php
    endif;
    ?>
    merci d'avance !
    Clément

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 562
    Par défaut
    affichez le contenu des variables $page et $debut pour vérifier qu'elles contiennent bien ce que vous souhaitez lors d'un changement de page.

  3. #3
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    pour ce qui est des calculs pour une pagination, j'ai fait un article de blog qui factorise tout ça : par ici

  4. #4
    Membre confirmé
    Homme Profil pro
    Archéologue
    Inscrit en
    Mars 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Archéologue
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 134
    Par défaut ça ne s'incrémente pas
    effectivement, si j'affiche $debut et $page, c'est toujours respectivement 0 et 1.
    ça ne se déroule pas, mais je n'arrive pas à voir d'où ça peut venir

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    il y a 2 requêtes à faire :

    Voir :

  6. #6
    Membre confirmé
    Homme Profil pro
    Archéologue
    Inscrit en
    Mars 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Archéologue
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 134
    Par défaut
    merci pour ton lien rawsrc, mais je ne vois pas comme l'appliquer à mon cas

  7. #7
    Invité
    Invité(e)
    Par défaut
    La LOGIQUE de ton code n'est pas correct.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nombredElementsTotal = $resultFoundRows->fetchColumn();
    • Ici, tu récupères le nombre de résultats de la requête AVEC le "LIMIT...". Donc toujours 10.
    • PAS le nombre TOTAL (SANS le "LIMIT...").

    Comme je l'ai écrit (mais l'as-tu lu ?), il faut 2 requêtes.


    [EDIT] Je n'avais pas vu le "SELECT SQL_CALC_FOUND_ROWS ...".

    SQL_CALC_FOUND_ROWS permet effectivement d'obtenir le nombre TOTAL, SANS le LIMIT.
    Dernière modification par Invité ; 22/10/2019 à 11h53.

  8. #8
    Membre confirmé
    Homme Profil pro
    Archéologue
    Inscrit en
    Mars 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Archéologue
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 134
    Par défaut
    j'avoue m'être basé sur un tuto, je vois bien le souci, mais j'ai un peu de mal à le corriger

  9. #9
    Invité
    Invité(e)
    Par défaut
    Je t'ai donné des liens... Il suffit de cliquer dessus.

  10. #10
    Membre confirmé
    Homme Profil pro
    Archéologue
    Inscrit en
    Mars 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Archéologue
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 134
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Je t'ai donné des liens... Il suffit de cliquer dessus.
    oui, oui j'ai bien vu, mais en tant que débutant, j'ai juste du mal à les adapter et à voir où je dois faire ma seconde requête.
    Faut pas trop en demander trop vite !

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Clement_archeo Voir le message
    Faut pas trop en demander trop vite !
    Justement.
    C'est à TOI de prendre le temps de LIRE, de TESTER, et de COMPRENDRE.

    N.B. Ton cas n'a rien de "particulier" ou "spécial".
    C'est le cas le plus "classique".

  12. #12
    Membre confirmé
    Homme Profil pro
    Archéologue
    Inscrit en
    Mars 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Archéologue
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 134
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Justement.
    C'est à TOI de prendre le temps de LIRE, de TESTER, et de COMPRENDRE.

    N.B. Ton cas n'a rien de "particulier" ou "spécial".
    C'est le cas le plus "classique".
    Bonjour,
    ne te méprends pas jreaux62, j'ai bien l'intention de comprendre d'où vient mon erreur pour la corriger. C'est juste que je suis vraiment vraiment débutant, du coup, il me faut un peu de temps et sans doute un peu de didactique.
    M'enfin, j'ai repris mon code pour faire deux requête SQL différente et ça donne :
    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
    <style>
    th{
    	text-align: center;
    }
    td{
    	border: 1px solid lightgrey;
    	padding: 5px !important;
    	vertical-align: middle;
    }
    </style>
     
    <table class="table table-hover" >
    		<thead>
    			<tr>
    				<th width=25%> Commune - Lieu-dit </th>
    				<th width=10%> Département </th>
    				<th width=5%> Année </th>
    				<th width= 15%> Type de site </th>
    				<th width=10%> Etat d'avancement </th>
    				<th width=15%> RO </th>
    				<th width=5%> Latitude </th>
    				<th width=5%> Longitude </th>
    				<th width=5%> Notice </th>
    				<th width= 10%> </th>
    			</tr>
    		</thead>
     
    <?php
    $sql2="SELECT SQL_CALC_FOUND_ROWS * from site LEFT JOIN auteur ON site.ID_RO=auteur.ID_Auteur ORDER BY LTRIM(UPPER(site.Commune)) ASC";
    $sql2 = $connexion->prepare($sql2);
    $sql2->execute();
    $resultFoundRows = $connexion->query('SELECT found_rows()');
    $nombredElementsTotal = $resultFoundRows->fetchColumn();
    echo $nombredElementsTotal;
     
     
    	$page = (!empty($_GET['page']) ? $_GET['page'] : 1);
    	$limite=10;
    	$debut= ($page -1) * $limite;
    	$sql3="SELECT * from site LEFT JOIN auteur ON site.ID_RO=auteur.ID_Auteur ORDER BY LTRIM(UPPER(site.Commune)) ASC LIMIT :limite OFFSET :debut";
    	$sql3 = $connexion->prepare($sql3);
    	$sql3->bindValue('debut', $debut,PDO::PARAM_INT);
    	$sql3->bindValue('limite',$limite,PDO::PARAM_INT);
     
    $sql3->execute();
        while ($row = $sql3->fetch())
     
    {
    	$row  = array_map($hsc, $row); // échappement de toutes les valeurs
    $notice = (!empty($row['Notice']))? '<a href='.$row['Notice'].'><img src='.$chemin_image.'lien alt=notice width=30% /></a>' : '';
    $fiche_RO = (!empty($row['Fiche']))? '<a href='.$chemin_image.'collaborateur/'.$row['Nom'].'-'.$row['Prénom'].'>'.$row['Nom_Auteur'].'</a>' : ''.$row['Nom_Auteur'].'';
    echo "<tr>
    		<td>".$row['Commune']." - ".$row['Lieu_dit']."</td>
    		<td>".$row['Departement']."</td>
    		<td>".$row['Annee']."</td>
    		<td>".$row['Type']."</td>
    		<td>".$row['Etat_fouille']."</td>
    		<td>".$fiche_RO."</td>
    		<td>".$row['Lat']."</td>
    		<td>".$row['Lon']."</td>
    		<td Style='text-align:center !important'>".$notice."</td>
    		<td><a href='modifier_site?id=".$row['ID_Site']."&o=u'>Modifier</a></td>
    	</tr>\n";
    }
    echo 'debut';
    echo $debut;
    echo 'page' ;
    echo $page;
    echo'fin';
    ?>
    </table>
    <?php
     
    $nombreDePages = ceil($nombredElementsTotal / $limite);
     
     
    if ($page > 1):
        ?><a href="?page=<?php echo $page - 1; ?>">Page précédente</a> — <?php
    endif;
     
     
    for ($i = 1; $i <= $nombreDePages; $i++):
        ?><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a> <?php
    endfor;
     
     
    if ($page < $nombreDePages):
        ?>— <a href="?page=<?php echo $page + 1; ?>">Page suivante</a><?php
    endif;
    ?>
    Toutefois ça ne fonctionne toujours pas, mais je pense que ça vient de la définition de ma variable $page. Je dois merder quelque part pour la fonction $_GET

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- tu as raison. J'aurais dû écrire :
    C'est à TOI de PRENDRE LE TEMPS de LIRE, de TESTER, et de COMPRENDRE.


    2- Quant à ton code...
    Tu n'as tenu compte d'AUCUN des tutos que je t'ai donné.
    Au lieu de vouloir "adapter le tuto à TON code", ré-écris ton code EN PARTANT du tuto !

    Citation Envoyé par Clement_archeo Voir le message
    j'avoue m'être basé sur un tuto...
    OK. Mais lequel ??

    3- Et mets des commentaires/explications dans ton code : ça t'aidera à comprendre.

    4- [EDIT] Je vois que tu utilises SQL_CALC_FOUND_ROWS.
    Ce qui voudrais dire qu'UNE SEULE requête suffit.
    Cela dit, si je me réfère à cet article, il semble que ce ne soit pas forcément plus performant que 2 requêtes.

    Dernière modification par Invité ; 22/10/2019 à 10h26.

  14. #14
    Membre confirmé
    Homme Profil pro
    Archéologue
    Inscrit en
    Mars 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Archéologue
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 134
    Par défaut
    bon alors, j'ai bien potassé ton tuto https://antoine-herault.developpez.c...atique-en-php/
    et, suivant tes conseils, j'ai annoté mon code pour m'y retrouver un peu plus.
    Effectivement, je crois qu'une seule requête était suffisante
    J'ai donc juste gardé mes requêtes SQL car elles ont l'air de fonctionner et idem pour les liens de paginations en bas du tableau qui ont l'air de marcher également (et qui sont basées sur le même principe que ton tuto).
    Par contre, j'ai repris ta méthode pour le calcul de définition de la page actuelle.
    Mais ça fonctionne pas pour autant.
    Malgré le fait que toute la pagination marche (nB total, nb pages etc.), le tableau se met toujours avec la valeur par défaut de $pageActuelle, soit "1".


    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
    	//Requête pour choper le nombre d'enregistrements
    $sql2="SELECT SQL_CALC_FOUND_ROWS * from site LEFT JOIN auteur ON site.ID_RO=auteur.ID_Auteur ORDER BY LTRIM(UPPER(site.Commune)) ASC";
    $sql2 = $connexion->prepare($sql2);
    $sql2->execute();
    $resultFoundRows = $connexion->query('SELECT found_rows()');
    $nombredElementsTotal = $resultFoundRows->fetchColumn();
    //calcul du nombre de pages
    $limite=10;
    $nombreDePages = ceil($nombredElementsTotal / $limite);
     
    //Calcul pour le numéro de la page actuelle - 1 par défaut
    if(isset($_GET['page'])) 
    {     $pageActuelle=intval($_GET['page']);
          if($pageActuelle>$nombreDePages) 
         {$pageActuelle=$nombreDePages;}
    }
    else 
    {$pageActuelle=1;}
    //entêtes tableau
    ?>
    <style>
    th{
    	text-align: center;
    }
    td{
    	border: 1px solid lightgrey;
    	padding: 5px !important;
    	vertical-align: middle;
    }
    </style>
    <table class="table table-hover" >
    		<thead>
    			<tr>
    				<th width=25%> Commune - Lieu-dit </th>
    				<th width=10%> Département </th>
    				<th width=5%> Année </th>
    				<th width= 15%> Type de site </th>
    				<th width=10%> Etat d'avancement </th>
    				<th width=15%> RO </th>
    				<th width=5%> Latitude </th>
    				<th width=5%> Longitude </th>
    				<th width=5%> Notice </th>
    				<th width= 10%> </th>
    			</tr>
    		</thead>
    <?php
    //Requête pour afficher les sites
     
    	$debut= ($pageActuelle -1) * $limite;
    	$sql3="SELECT * from site LEFT JOIN auteur ON site.ID_RO=auteur.ID_Auteur ORDER BY LTRIM(UPPER(site.Commune)) ASC LIMIT :limite OFFSET :debut";
    	$sql3 = $connexion->prepare($sql3);
    	$sql3->bindValue('debut', $debut,PDO::PARAM_INT);
    	$sql3->bindValue('limite',$limite,PDO::PARAM_INT);
     
    $sql3->execute();
        while ($row = $sql3->fetch())
     
    {
    	//définition des variables
    $row  = array_map($hsc, $row); // échappement de toutes les valeurs
    $notice = (!empty($row['Notice']))? '<a href='.$row['Notice'].'><img src='.$chemin_image.'lien alt=notice width=30% /></a>' : '';
    $fiche_RO = (!empty($row['Fiche']))? '<a href='.$chemin_image.'collaborateur/'.$row['Nom'].'-'.$row['Prénom'].'>'.$row['Nom_Auteur'].'</a>' : ''.$row['Nom_Auteur'].'';
    //tableau de donnéées
    echo "<tr>
    		<td>".$row['Commune']." - ".$row['Lieu_dit']."</td>
    		<td>".$row['Departement']."</td>
    		<td>".$row['Annee']."</td>
    		<td>".$row['Type']."</td>
    		<td>".$row['Etat_fouille']."</td>
    		<td>".$fiche_RO."</td>
    		<td>".$row['Lat']."</td>
    		<td>".$row['Lon']."</td>
    		<td Style='text-align:center !important'>".$notice."</td>
    		<td><a href='modifier_site?id=".$row['ID_Site']."&o=u'>Modifier</a></td>
    	</tr>\n";
    }
    echo 'debut';
    echo $debut;
    echo 'page' ;
    echo $pageActuelle;
    echo'fin';
    ?>
    </table>
    <?php
     
    //liens de pagination
    if ($pageActuelle > 1):
        ?><a href="?page=<?php echo $pageActuelle - 1; ?>">Page précédente</a> — <?php
    endif;
     
     
    for ($i = 1; $i <= $nombreDePages; $i++):
        ?><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a> <?php
    endfor;
     
     
    if ($pageActuelle < $nombreDePages):
        ?>— <a href="?page=<?php echo $pageActuelle + 1; ?>">Page suivante</a><?php
    endif;
    ?>

  15. #15
    Membre confirmé
    Homme Profil pro
    Archéologue
    Inscrit en
    Mars 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Archéologue
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 134
    Par défaut
    en fait c'est comme si le $-GET['page'] ne marchait pas...
    Est-ce que ça pourrait venir de wordpress qui est la plateforme sur laquelle je suis...
    EN fait, je pense que ça vient de là car le lien m'indique de pagination m'indique bien site/page actuelle/?page=N°page à atteindre, mais le lien qui s'affiche par la suite est : site/page atteinte, mais il n'y a pas "?page="

  16. #16
    Membre confirmé
    Homme Profil pro
    Archéologue
    Inscrit en
    Mars 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Archéologue
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 134
    Par défaut c'est de la faute de Wordpress
    bon du coup, c'est effectivement, ça. le code que j'avais fourni au départ fonctionne très bien...mais c'est juste la fonction $_GET ['page'] qui n'est pas possible sur Wordpress.
    J'ai donc contourné le problème en récupérant tout de même les derniers caractères...mais il faut jsute trouver l'exression adéquate pour le faire.
    Je ne pensais pas que ça venait de Wordpress, mais j'aurais dû le dire au départ.
    Mais malgré tout, je me suis fait engueuler pour rien !!

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Clement_archeo Voir le message
    ...Mais malgré tout, je me suis fait engueuler pour rien !!
    Faux.

    1- Si tu avais donné tout-de-suite le lien vers le tuto dont tu t'es inspiré, ça ne serait pas arrivé.
    Les tutos que j'ai fournis proposent une AUTRE méthode (avec 2 requêtes).

    2- Et parler de Wordpress n'était pas anodin non plus.

  18. #18
    Invité
    Invité(e)
    Par défaut
    Essaie en remplaçant $_GET['page'] par $_POST['page'], et la 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
    <?php
    //liens de pagination
    if ($pageActuelle > 1):
        ?><form method=post" action=""><input type="hidden name="page" value="<?php echo $pageActuelle - 1; ?>"/><button type="submit">Page précédente</button></form> — <?php
    endif;
     
     
    for ($i = 1; $i <= $nombreDePages; $i++):
        ?><form method=post" action=""><input type="hidden name="page" value="<?php echo $i; ?>"/><button type="submit"><?php echo $i; ?></button></form> <?php
    endfor;
     
     
    if ($pageActuelle < $nombreDePages):
        ?><form method=post" action=""><input type="hidden name="page" value="<?php echo $pageActuelle + 1; ?>"/><button type="submit">Page suivante</button></form> <?php
    endif;
    ?>

  19. #19
    Membre confirmé
    Homme Profil pro
    Archéologue
    Inscrit en
    Mars 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Archéologue
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 134
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Faux.
    Si tu avais donné tout-de-suite le lien vers le tuto dont tu t'es inspiré, ça ne serait pas arrivé.

    Les tutos que j'ai fournis proposent une AUTRE méthode (avec 2 requêtes).
    je suis désolé jreaux, mais le tuto que j'ai pris au départ est juste. Il n'y a pas besoin de deux requêtes avec SQL_CALC_FOUND_ROWS comme tu l'as dit un peu plus haut.

    Je donc même d'ailleurs revenu sur le premier code que j'avais fourni qui est plus simple.

    J'ai juste changé le $_GET['page'] pour être compatible avec wordpress en allant rechercher que le numéro de page renvoyé grâce à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $adresse=$_SERVER['REQUEST_URI'];
    $extrait=preg_replace('~\D~', '', $adresse);
    $page = (!empty($extrait) ? $extrait : 1);
    Tout marche très bien avec cette seule requête. Désolé.

  20. #20
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Clement_archeo Voir le message
    je suis désolé jreaux, mais le tuto que j'ai pris au départ est juste...
    Mais comme tu n'en avais pas donné le LIEN, on ne pouvait pas DEVINER.

    Peu importe...
    Je t'ai donné une solution (en $_POST) dans mon précédent message.

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

Discussions similaires

  1. [MySQL] Réaliser une pagination PHP ( PDO )
    Par reverb94 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 09/05/2013, 14h34
  2. comment réaliser une pagination avec zend
    Par aziza_1989 dans le forum Autres composants
    Réponses: 3
    Dernier message: 04/06/2012, 18h37
  3. [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
  4. [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
  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