Afficher la suite d'une page
Fermé
jdk55
Messages postés
21
Date d'inscription
vendredi 27 juin 2014
Statut
Membre
Dernière intervention
9 octobre 2022
-
8 sept. 2014 à 19:51
jdk55 Messages postés 21 Date d'inscription vendredi 27 juin 2014 Statut Membre Dernière intervention 9 octobre 2022 - 10 sept. 2014 à 14:23
jdk55 Messages postés 21 Date d'inscription vendredi 27 juin 2014 Statut Membre Dernière intervention 9 octobre 2022 - 10 sept. 2014 à 14:23
A voir également:
- Afficher la suite d'une page
- Supprimer une page word - Guide
- Traduire une page web - Guide
- Créer une page facebook - Guide
- Page d'accueil iphone - Guide
- Afficher mot de passe wifi android - Guide
6 réponses
Fallentree
Messages postés
2309
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
208
Modifié par Fallentree le 9/09/2014 à 14:13
Modifié par Fallentree le 9/09/2014 à 14:13
pas facile de t'aider
utilises tu une requête pour sélectionner tes éléments?
peux tu joindre le bout de ton code ?
utilises tu une requête pour sélectionner tes éléments?
peux tu joindre le bout de ton code ?
jdk55
Messages postés
21
Date d'inscription
vendredi 27 juin 2014
Statut
Membre
Dernière intervention
9 octobre 2022
10 sept. 2014 à 10:28
10 sept. 2014 à 10:28
j'affiche les elements de ma page en fonction de ce qui a été selectionné dans le formulaire. (la pagination marche sans le formulaire)
en fait quand je clique sur la page 2 par exple, ca recharge toute la page et affiche de nouveau la page d'origine. mais sans le formulaire, la page 2 affiche la suite de la selection
voici le code
<table>
<tr>
<form method="POST" action="accueil.php?pages=lies.php">
<td align="right">Selectionnez </td>
<td colspan="3">
<select name="prop" >';
<?php
$rek = $connexion->query('select ID_PROP, PROPOSITION from proposition WHERE STATUT ="vrai" order by PROPOSITION ');
while ($result = $rek->fetch()){
$idprop = $result['ID_PROP'];
$proposition = $result['PROPOSITION'];?>
<option value="<?php echo $proposition;?>"><?php echo $proposition;?></option>
<?php
}
?>
</select>
<input type="submit" name="valide" value="Valider" onClick=""/
</form>
</tr>
</table>
<?php
if (isset($_POST['prop'])){
$recu=$_POST['prop'];
}
?>
<h2 align="center"> Affichage des messages </h2>
<?php
$per_page = 2;
if(isset($_GET['page']))
{
$page=$_GET['page'];
}
else
$page = 1;
@ $req="SELECT a.TEL_ABONNE, r.ID_ABONNE,Count(*) AS total, r.ID_QUEST, r.RESULTAT, r.DATEREPONSE FROM abonne AS a, repondre AS r where a.ID_ABONNE=r.ID_ABONNE AND RESULTAT = '$recu' GROUP BY ID_ABONNE";
$requete = $connexion -> prepare($req);
$requete->execute();
$nombre = $requete->rowCount();
$start = ($page-1)*$per_page;
$req = $req." limit $start,$per_page ";
$requete = $connexion -> prepare($req);
$requete->execute();
?>
<?php
echo'<table width="800" align="center" class="tableau_list"> ';
echo'<tr>
<th>Id question</th>
<th>Nb envoie</th>
<th>Num. abonne</th>
<th>Resultat</th>
<th>Date resultat</th>
<!--th width="100">Action</th-->
</tr> ';
?>
<?php
$i=0;
while($enregistrement = $requete->fetch(PDO::FETCH_OBJ)){
$question=$enregistrement->ID_QUEST;
$tot=$enregistrement->total;
$numero=$enregistrement->ID_ABONNE;
$tel=$enregistrement->TEL_ABONNE;
$resultat=$enregistrement->RESULTAT;
$dateresult=$enregistrement->DATEREPONSE;
if($i%2 == 1)
$classe = "ligne2";
else
$classe = "ligne1";
?>
<?php
echo'<tr>';
echo'<td class="'.$classe. '">'.$question .'</td>';
echo'<td class="'.$classe. '">'.$tot .'</td>';
echo'<td class="'.$classe .'">'.$tel .'</td>';
echo'<td class="'.$classe .'">'.$resultat .'</td>';
echo'<td class="'.$classe .'">'.$dateresult.'</td>';
echo'</tr>';
?>
<?php
$i++;
}
?>
</table>
<?php
$nb = $nombre / $per_page;
if(!is_int($nb)){
$nb = (int) $nb;
$nb++;
}
?>
<!-- <span class="active_tnt_link">4</span>-->
<div id="tnt_pagination">
<span class="disabled_tnt_pagination">Precedent</span>
<?php for($i = 1; $i<=$nb; $i++) :?>
<?php if($i == $page) :?>
<span class="active_tnt_link"><?php echo $i ?></span>
<?php else :?>
<a href="accueil.php?pages=liens.php&page=<?php echo $i ?>"><?php echo $i ?></a>
<?php endif?>
<?php endfor?>
<a href="#forwaed">Suivant</a></div>
en fait quand je clique sur la page 2 par exple, ca recharge toute la page et affiche de nouveau la page d'origine. mais sans le formulaire, la page 2 affiche la suite de la selection
voici le code
<table>
<tr>
<form method="POST" action="accueil.php?pages=lies.php">
<td align="right">Selectionnez </td>
<td colspan="3">
<select name="prop" >';
<?php
$rek = $connexion->query('select ID_PROP, PROPOSITION from proposition WHERE STATUT ="vrai" order by PROPOSITION ');
while ($result = $rek->fetch()){
$idprop = $result['ID_PROP'];
$proposition = $result['PROPOSITION'];?>
<option value="<?php echo $proposition;?>"><?php echo $proposition;?></option>
<?php
}
?>
</select>
<input type="submit" name="valide" value="Valider" onClick=""/
</form>
</tr>
</table>
<?php
if (isset($_POST['prop'])){
$recu=$_POST['prop'];
}
?>
<h2 align="center"> Affichage des messages </h2>
<?php
$per_page = 2;
if(isset($_GET['page']))
{
$page=$_GET['page'];
}
else
$page = 1;
@ $req="SELECT a.TEL_ABONNE, r.ID_ABONNE,Count(*) AS total, r.ID_QUEST, r.RESULTAT, r.DATEREPONSE FROM abonne AS a, repondre AS r where a.ID_ABONNE=r.ID_ABONNE AND RESULTAT = '$recu' GROUP BY ID_ABONNE";
$requete = $connexion -> prepare($req);
$requete->execute();
$nombre = $requete->rowCount();
$start = ($page-1)*$per_page;
$req = $req." limit $start,$per_page ";
$requete = $connexion -> prepare($req);
$requete->execute();
?>
<?php
echo'<table width="800" align="center" class="tableau_list"> ';
echo'<tr>
<th>Id question</th>
<th>Nb envoie</th>
<th>Num. abonne</th>
<th>Resultat</th>
<th>Date resultat</th>
<!--th width="100">Action</th-->
</tr> ';
?>
<?php
$i=0;
while($enregistrement = $requete->fetch(PDO::FETCH_OBJ)){
$question=$enregistrement->ID_QUEST;
$tot=$enregistrement->total;
$numero=$enregistrement->ID_ABONNE;
$tel=$enregistrement->TEL_ABONNE;
$resultat=$enregistrement->RESULTAT;
$dateresult=$enregistrement->DATEREPONSE;
if($i%2 == 1)
$classe = "ligne2";
else
$classe = "ligne1";
?>
<?php
echo'<tr>';
echo'<td class="'.$classe. '">'.$question .'</td>';
echo'<td class="'.$classe. '">'.$tot .'</td>';
echo'<td class="'.$classe .'">'.$tel .'</td>';
echo'<td class="'.$classe .'">'.$resultat .'</td>';
echo'<td class="'.$classe .'">'.$dateresult.'</td>';
echo'</tr>';
?>
<?php
$i++;
}
?>
</table>
<?php
$nb = $nombre / $per_page;
if(!is_int($nb)){
$nb = (int) $nb;
$nb++;
}
?>
<!-- <span class="active_tnt_link">4</span>-->
<div id="tnt_pagination">
<span class="disabled_tnt_pagination">Precedent</span>
<?php for($i = 1; $i<=$nb; $i++) :?>
<?php if($i == $page) :?>
<span class="active_tnt_link"><?php echo $i ?></span>
<?php else :?>
<a href="accueil.php?pages=liens.php&page=<?php echo $i ?>"><?php echo $i ?></a>
<?php endif?>
<?php endfor?>
<a href="#forwaed">Suivant</a></div>
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
524
Modifié par Pitet le 10/09/2014 à 11:13
Modifié par Pitet le 10/09/2014 à 11:13
Salut,
C'est une erreur classique. Pour bien comprendre il suffit voir l'état des variables à chaque requête http :
1. On charge la page pour la première fois : pas de paramètre POST (formulaire) ni GET (pagination) -> on affiche les 20 premiers résultats
2. On filtre les résultats via le formulaire : paramètres POST présent, mais pas de paramètre GET : on affiche les 20 premiers résultats filtrés
3. On clique sur le lien suivant : paramètre GET présent mais nous n'avons plus les paramètres POST (le formulaire n'est pas renvoyé) -> donc on affiche les 20 résultats suivants sans filtres
Le problème vient du fait que tes filtres du formulaires (les paramètres POST ici) ne sont pas conservés entre chaque page, sauf si on utilise uniquement le formulaire.
Plusieurs solutions pour corriger ton problème :
- enregistrer les filtres de recherche en session pour pouvoir les utiliser à chaque changement de page sans devoir renvoyer le formulaire
- transmettre les filtres de recherches en paramètre GET sur tous les liens de pagination
- considérer le paramètre de pagination comme un filtre du formulaire
Je te recommande la première solution qui est simple et efficace.
Bonne journée
C'est une erreur classique. Pour bien comprendre il suffit voir l'état des variables à chaque requête http :
1. On charge la page pour la première fois : pas de paramètre POST (formulaire) ni GET (pagination) -> on affiche les 20 premiers résultats
2. On filtre les résultats via le formulaire : paramètres POST présent, mais pas de paramètre GET : on affiche les 20 premiers résultats filtrés
3. On clique sur le lien suivant : paramètre GET présent mais nous n'avons plus les paramètres POST (le formulaire n'est pas renvoyé) -> donc on affiche les 20 résultats suivants sans filtres
Le problème vient du fait que tes filtres du formulaires (les paramètres POST ici) ne sont pas conservés entre chaque page, sauf si on utilise uniquement le formulaire.
Plusieurs solutions pour corriger ton problème :
- enregistrer les filtres de recherche en session pour pouvoir les utiliser à chaque changement de page sans devoir renvoyer le formulaire
- transmettre les filtres de recherches en paramètre GET sur tous les liens de pagination
- considérer le paramètre de pagination comme un filtre du formulaire
Je te recommande la première solution qui est simple et efficace.
Bonne journée
jdk55
Messages postés
21
Date d'inscription
vendredi 27 juin 2014
Statut
Membre
Dernière intervention
9 octobre 2022
10 sept. 2014 à 12:16
10 sept. 2014 à 12:16
merci beaucoup Pitet. j'ai compris.
svp pour la solution numero 1 que tu me proposes, peux-tu m'aider pour y arriver? svp
merci pour ton aide
svp pour la solution numero 1 que tu me proposes, peux-tu m'aider pour y arriver? svp
merci pour ton aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
524
10 sept. 2014 à 13:08
10 sept. 2014 à 13:08
Pour mettre en place cette solution :
1. On enregistre les filtres de recherche en session :
1.1. Il faut initialiser la session php pour utiliser les variables de session, on ajoute donc au tout début du script :
1.2. A l'envoie du formulaire, on enregistre les filtres en session :
2. Dans notre requête sql, on utilise alors les variables de session à la place des paramètres post :
Dans ta requête sql, j'ai passé la variable 'recu' en paramètre nommé, sinon aucun intérêt d'utiliser les requêtes préparées (cf tuto PDO).
1. On enregistre les filtres de recherche en session :
1.1. Il faut initialiser la session php pour utiliser les variables de session, on ajoute donc au tout début du script :
session_start();
1.2. A l'envoie du formulaire, on enregistre les filtres en session :
if (isset($_POST['prop'])){ $_SESSION['recu'] = $_POST['prop']; }
2. Dans notre requête sql, on utilise alors les variables de session à la place des paramètres post :
$req="SELECT a.TEL_ABONNE, r.ID_ABONNE,Count(*) AS total, r.ID_QUEST, r.RESULTAT, r.DATEREPONSE FROM abonne AS a, repondre AS r where a.ID_ABONNE=r.ID_ABONNE AND RESULTAT = :recu GROUP BY ID_ABONNE"; $requete = $connexion->prepare($req); $requete->execute(array(':recu' => $_SESSION['recu']));
Dans ta requête sql, j'ai passé la variable 'recu' en paramètre nommé, sinon aucun intérêt d'utiliser les requêtes préparées (cf tuto PDO).
Fallentree
Messages postés
2309
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
208
10 sept. 2014 à 13:24
10 sept. 2014 à 13:24
je suis decu de ne pas voir une option SQL limit offset
https://sql.sh/cours/limit
https://sql.sh/cours/limit
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
524
10 sept. 2014 à 14:05
10 sept. 2014 à 14:05
Pour la pagination ?
Tu n'as pas bien regardé ;)
Tu n'as pas bien regardé ;)
$req = $req." limit $start,$per_page ";
jdk55
Messages postés
21
Date d'inscription
vendredi 27 juin 2014
Statut
Membre
Dernière intervention
9 octobre 2022
10 sept. 2014 à 14:23
10 sept. 2014 à 14:23
merci pitet. cest l'utilisation de des variables de session dans la requete qui me manquait. ca ma bcp aidé.merci