Pagination. $_GET['lapage'] ne récupère rien
Résolu
philip51
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
Exileur Messages postés 1475 Date d'inscription Statut Membre Dernière intervention -
Exileur Messages postés 1475 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Pagination. $_GET['lapage'] ne récupère rien
- Pagination powerpoint - Guide
- Sommaire avec pagination - Guide
- Recupere au terminal de fret ✓ - Forum Consommation & Internet
- Indesign pagination à partir de la 2ème page - Forum InDesign
- Pagination google doc a partir de la page 3 ✓ - Forum Bureautique
5 réponses
Hello,
"ORDER BY nom, prenom LIMIT , 15"
Il semblerait que la variable $premiereEntree soit vide, null ou false ce qui te génére une requéte mal-formée.
Elles sont ou les classes ? QQ
A plus dans l'bus
"ORDER BY nom, prenom LIMIT , 15"
Il semblerait que la variable $premiereEntree soit vide, null ou false ce qui te génére une requéte mal-formée.
Elles sont ou les classes ? QQ
A plus dans l'bus
C'est bien là mon problème !! Si je renseigne manuellement $lapage et $premiereEntree, la requête fonctionne.
Je ne comprends pas pourquoi $_GET['lapage'] ne récupère pas le numéro de la page sélectionnée
Je ne comprends pas pourquoi $_GET['lapage'] ne récupère pas le numéro de la page sélectionnée
$lapage = 3; $premiereEntree = ($lapage - 1) * $membresParPage; echo "numéro de page = $lapage , premiere entrée = $premiereEntree";
Bon, déja.
Tu démarres pas les sessions PHP, tes variables SESSIONS seront toujours vide -> https://www.php.net/manual/fr/function.session-start.php
Ensuite, : -> $lapage = !empty($_GET['lapage']) ? $_GET['lapage'] : "1";
$premiereEntree = '';
Premiere entrée est un chiffre on est d'accord ?
Alors
Bref, voila ce qui nous interesses :
Si pas de page, ça fonctionne ( donc le else est ok, et le probléme dans le if )
Donc SI $_GET['lapage'] (donc tu arrives sur la page avec une url comme http://monsite.com/mapage.php?lapage=1 et le bloc
pageActuelle = 1;
Nous y voila. pageActuelle est elle bien setté ?
Vaut elle plus que nombre de page ?
Que vaut echo "numéro de page = $lapage , premiere entrée = $premiereEntree"; ??
Et je termine par la concaténation qui n'est pas faite comme elle devrait :
Tu démarres pas les sessions PHP, tes variables SESSIONS seront toujours vide -> https://www.php.net/manual/fr/function.session-start.php
Ensuite, : -> $lapage = !empty($_GET['lapage']) ? $_GET['lapage'] : "1";
$premiereEntree = '';
Premiere entrée est un chiffre on est d'accord ?
Alors
$lapage = !empty($_GET['lapage']) ? $_GET['lapage'] : 1;ou au pire
$premiereEntree = 0;
$premiereEntree = NULL;
Bref, voila ce qui nous interesses :
Si pas de page, ça fonctionne ( donc le else est ok, et le probléme dans le if )
if (isset($_GET['lapage'])) {
$pageActuelle = intval($_GET['lapage']);
if ($pageActuelle > $nombreDePages) {
$pageActuelle = $nombreDePages;
}
}
else {
$pageActuelle = 1; // la page actuelle est la n°1
}
Donc SI $_GET['lapage'] (donc tu arrives sur la page avec une url comme http://monsite.com/mapage.php?lapage=1 et le bloc
echo '<a href= "index.php?page=comodmember&lapage = '.$i.'">'.' '.$i.'</a>';est fonctionnel)
pageActuelle = 1;
Nous y voila. pageActuelle est elle bien setté ?
Vaut elle plus que nombre de page ?
Que vaut echo "numéro de page = $lapage , premiere entrée = $premiereEntree"; ??
Et je termine par la concaténation qui n'est pas faite comme elle devrait :
$sql = "SELECT * FROM membres WHERE nationalite = " . $nationalite . " ORDER BY nom, prenom LIMIT " . $premiereEntree . ", " . $membresParPage;
Bonjour,
Quand tu génères le lien de numéro de page, tu as des espaces surnuméraires qu'il faut enlever.
Doit être
Pas d'espace dans une URL !
Xavier
Quand tu génères le lien de numéro de page, tu as des espaces surnuméraires qu'il faut enlever.
echo '<a href= "index.php?page=comodmember&lapage = '.$i.'">'.' '.$i.'</a>';
Doit être
echo '<a href="index.php?page=comodmember&lapage='.$i.'">'.' '.$i.'</a>';
Pas d'espace dans une URL !
Xavier
Bonjour,
1/ J'avais effectivement oublié la session
2/ Je traitais pas le cas où le clique est sur le numéro de page => donc il n'y avait pas de traitement
3/ J'ai réécris la requête de sélection
4/ J'avais bien remarqué qu'il ne fallait pas d'espace dans l'URL
maintenant tout est ok
ah non encore une chose.
la première fois que je clique sur le lien du menu qui amène à cette page aucun soucis tout est ok. Je fais diverses sélections pour tester que tout se passe normalement. MAIS si je clique de nouveau sur le lien du menu qui amène à cette page j'ai un message d'erreur :
Je remets tout le code de la page
Pourquoi ce message ? un problème de session ?
Je crois que je peux encore améliorer ce code après.
Merci d'avance
1/ J'avais effectivement oublié la session
2/ Je traitais pas le cas où le clique est sur le numéro de page => donc il n'y avait pas de traitement
3/ J'ai réécris la requête de sélection
4/ J'avais bien remarqué qu'il ne fallait pas d'espace dans l'URL
maintenant tout est ok
ah non encore une chose.
la première fois que je clique sur le lien du menu qui amène à cette page aucun soucis tout est ok. Je fais diverses sélections pour tester que tout se passe normalement. MAIS si je clique de nouveau sur le lien du menu qui amène à cette page j'ai un message d'erreur :
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 ' 15' at line 1
Je remets tout le code de la page
<?php require_once "connect.php"; $sessionChoix = !empty($_SESSION['choix']) ? $_SESSION['choix'] : NULL; //prendre la valeur de session si remplie $choix = !empty($_POST['choix']) ? $_POST['choix'] : $sessionChoix; // prendra la valeur de post si elle est remplie, sinon celle de session $_SESSION['choix'] = $choix; $lapage = !empty($_GET['lapage']) ? $_GET['lapage'] : 1; // prend la valeur de la page $_SESSION['lapage'] = $lapage; $id = !empty($_GET['id']) ? $_GET['id'] : ""; // prend l'id de la valeur cliquée sur le tableau $nom = !empty($_GET['nom']) ? $_GET['nom'] : "";; $prenom = !empty($_GET['prenom']) ? $_GET['prenom'] : ""; $TotalMembres = ''; $membresParPage = 15; $nombreDePages = ''; $premiereEntree = ''; $message = ''; $nationalite = ""; $strWhere = ""; switch($choix){ //teste quel choix est sélectionné case "A": $strWhere = "WHERE nationalite = 'Allemande'"; $nationalite = "'Allemande'"; break; case "F": $strWhere = "WHERE nationalite = 'Française'"; $nationalite = "'Française'"; break; default: $nationalite = "'Allemande' OR nationalite = 'Française'"; break; } if (isset($_POST['envoyer']) && $choix){ //teste si le bouton envoyer et le choix de la nationalité sont cliqués $sql = "SELECT COUNT(*) AS nb FROM membres " . $strWhere; //compte le nombre de personnes en fonction du choix effectué try{ $req = $cnx->query($sql); $data = $req->fetch(); $TotalMembres = $data['nb']; // récupère le nombre d'enregistrements $nombreDePages = ceil($TotalMembres/$membresParPage); // compte le nombre de pages if (isset($_GET['lapage'])) { // teste si le numéro de la page est cliqué $pageActuelle = intval($_GET['lapage']); // affecte le numéro de la page à la page actuelle if ($pageActuelle > $nombreDePages) { // teste si la page actuelle est supérieure aux nombre de pages $pageActuelle = $nombreDePages; // si oui la page actuelle est égale aux nombre de pages } } else { $pageActuelle = 1; // si le numéro de page n'est pas sélectionné,la page actuelle est la n°1 } $premiereEntree = ($pageActuelle - 1) * $membresParPage; // on calcule la première entrée à lire }catch(Exception $e){ echo "Erreur : " . $e->getMessage(); } } else if (isset($_GET['lapage'])) { // teste si la un numéro de page est sélectionné $sql = "SELECT COUNT(*) AS nb FROM membres " . $strWhere; //compte le nombre de personnes en fonction du choix effectué try{ $req = $cnx->query($sql); $data = $req->fetch(); $TotalMembres = $data['nb']; // compte le nombre d'enregistrements $nombreDePages = ceil($TotalMembres/$membresParPage); // compte le nombre de pages $pageActuelle = intval($_GET['lapage']); if ($pageActuelle > $nombreDePages) { $pageActuelle = $nombreDePages; } $premiereEntree = ($pageActuelle - 1) * $membresParPage; // on calcule la première entrée à lire }catch(Exception $e){ echo "Erreur : " . $e->getMessage(); } } ?> <link rel="stylesheet" type="text/css" href="css/style_connexion.css" /> <!---liaison avec la feuille se style ---> <div style="text-align:center;margin-left:auto;margin-right:auto;background-color:#7FDD4C;width:85%;box-shadow:0.7em 0.7em 0.7em #3A9D23;"> <p> <FORM name="research" ACTION = "index.php?page=comodmember" METHOD="POST"> <br /> <p style="text-align:left;"> <b> Sélectionner la liste des membres à afficher :</b><br /> <input type="radio" name="choix" Value="T" <?php if($_SESSION["choix"] == "T"){ echo 'checked = "checked"';} ?>style="margin-left:5em;">Tous * <span style="margin-left:2em;"><input type="radio" name="choix" Value="A" <?php if($_SESSION["choix"] == "A"){ echo 'checked = "checked"';} ?>>Allemand.e.s</span> <span style="margin-left:2em;"><input type="radio" name="choix" Value="F" <?php if($_SESSION["choix"] == "F"){ echo 'checked = "checked"';} ?>>Français.e.s</span> <span style="margin-left:2em;"><input type="submit" name="envoyer" Value="Afficher" style="cursor:pointer;"></span> <br/> <span style="font-size:0.8em;"> * Affichage par défaut</span></p> <b>Pour modifier les données d'un membre, cliquez sur son nom</b><br /> <?php if (!empty($_SESSION['choix'])){ error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //préparation de la requête et des variables $sql = "SELECT * FROM membres WHERE nationalite = ".$nationalite." ORDER BY nom, prenom LIMIT ".$premiereEntree.", $membresParPage"; try { $requete = $cnx->prepare($sql); $requete->execute(); $arr_membres = $requete->fetchAll();// on stocke le resultat de la requete dans un array } catch(Exception $e){ // en cas d'erreur dans la requete: echo " Erreur ! ".$e->getMessage(); } if(!empty($arr_membres)){ // on s'assure que la variable n'est pas vide puis on écrit la table avec son contenu //echo 'Nombre total de membres : '. $TotalMembres .'<br />'; //foreach($arr_membres as $M){ // on boucle dessus à l'aide d'un foreach // echo $M['prenom'] .' '. $M['nom'].'<br />'; echo 'Nombre total de membres : '. $TotalMembres .'<br />'; echo '<table border=1 style="text-align:left;width:100%;">'; echo '<tr style="text-align:center;"><td style="width:15em;">NOM</td><td style="width:8em;">PRENOM</td><td style="width:8em;">TELEPHONE</td><td style="width:20em;">ADRESSE INTERNET</td></TR>'; foreach($arr_membres as $M){ // on boucle dessus à l'aide d'un foreach echo '<tr>'; ?> <td><a href="index.php?page=comodmember&id=<?php echo $M['id'];?>&prenom=<?php echo $M['prenom'];?>"><?php echo $M['nom'];?></a></td> <td><?php echo $M['prenom'];?></td> <td><?php echo $M['telephone'];?></td><td><?php echo $M['mail'];?></td></tr> <?php } echo '</table>'; } } echo '</p>'; if (!empty($message)){ echo $message; echo '<br />'; } if (empty($message)){ for ($i = 1; $i <= $nombreDePages; $i++) { if ($i == $pageActuelle) { echo ' [ '.$i.' ] '; } else { echo '<a href= "index.php?page=comodmember&lapage='.$i.'">'.' '.$i.'</a>'; } } } ?> <br /> </FORM> <br /> </div> <?php if (!empty($id)){ echo '<div style="">'; echo $id .' '.$prenom ; } echo '</div>'; ?>
Pourquoi ce message ? un problème de session ?
Je crois que je peux encore améliorer ce code après.
Merci d'avance
OK Merci,
c'est cette requête qui ne contient pas la première limite si je clique de nouveau sur le lien du menu qui affiche cette page
donc j'ai modifié
par
et je n'ai plus de message d'erreur
Je considère ce problème résolu. Merci encore
c'est cette requête qui ne contient pas la première limite si je clique de nouveau sur le lien du menu qui affiche cette page
$sql = "SELECT * FROM membres WHERE nationalite = ".$nationalite." ORDER BY nom, prenom LIMIT ".$premiereEntree.", $membresParPage";
donc j'ai modifié
$premiereEntree = '';
par
$premiereEntree = 0;
et je n'ai plus de message d'erreur
Je considère ce problème résolu. Merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question