Pagination sur recherche...
Fermé
barale61
Messages postés
1208
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
4 novembre 2024
-
22 mars 2016 à 17:43
jordane45 Messages postés 38364 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 décembre 2024 - 1 avril 2016 à 18:59
jordane45 Messages postés 38364 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 décembre 2024 - 1 avril 2016 à 18:59
A voir également:
- Pagination sur recherche...
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche adresse - Guide
- Pagination powerpoint - Guide
- Recherche image - Guide
- Recherche musique - Guide
5 réponses
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
Modifié par Pitet le 24/03/2016 à 14:20
Modifié par Pitet le 24/03/2016 à 14:20
Salut,
Comment sont définies les critères de recherche (variable $search) ?
Si les critères sont récupérés depuis les paramètres de l'URL ($_GET), il est normal que ces critères ne soit pas transmis puisque les URLs de la pagination de contiennent pas ces paramètres.
Une solution possible est donc d'ajouter le ou les paramètres correspondant aux critères de recherche dans les URLs de la pagination.
Une autre solution est d'enregistrer les critères de recherche dans une session php afin de pouvoir les transmettre sur les autres pages.
Pour info, les fonctions mysql_* sont obsolètes et supprimées depuis PHP7, il faudrait idéalement passer à mysqli ou PDO.
Pour info bis, tes requêtes ne sont pas protégées contre les injections sql.
Bonne journée
Comment sont définies les critères de recherche (variable $search) ?
Si les critères sont récupérés depuis les paramètres de l'URL ($_GET), il est normal que ces critères ne soit pas transmis puisque les URLs de la pagination de contiennent pas ces paramètres.
Une solution possible est donc d'ajouter le ou les paramètres correspondant aux critères de recherche dans les URLs de la pagination.
Une autre solution est d'enregistrer les critères de recherche dans une session php afin de pouvoir les transmettre sur les autres pages.
Pour info, les fonctions mysql_* sont obsolètes et supprimées depuis PHP7, il faudrait idéalement passer à mysqli ou PDO.
Pour info bis, tes requêtes ne sont pas protégées contre les injections sql.
Bonne journée
barale61
Messages postés
1208
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
4 novembre 2024
110
24 mars 2016 à 17:59
24 mars 2016 à 17:59
Salut,
Tout est en mysqli puisque je n'ai que php7 sur WAMP. Pour les injections, j'ai ajouté htmlspecialchars et là, je pense que c'est bon.
Pour le reste, je ne trouve rien sur le net à ce sujet et j'ai pourtant suivi PHP Mysql sur Open classroom mais c'est loin d'être suffisamment complet.
Je vais chercher si je peux trouver sur des forums.
Tout est en mysqli puisque je n'ai que php7 sur WAMP. Pour les injections, j'ai ajouté htmlspecialchars et là, je pense que c'est bon.
while ($article = mysqli_fetch_assoc($query)) { echo " <p><div class=\"row\"> <div class=\"col l12 m12 s12\"> <a href=index.php?page=articles&id=".htmlspecialchars($article['id']).">".htmlspecialchars($article['article'])."</a> <br> <u>Description:</u><br> ".htmlspecialchars($article['description'])." <br> Prix: ".htmlspecialchars($article['prix'])."€ </div> </div></p> "; }
Pour le reste, je ne trouve rien sur le net à ce sujet et j'ai pourtant suivi PHP Mysql sur Open classroom mais c'est loin d'être suffisamment complet.
Je vais chercher si je peux trouver sur des forums.
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
29 mars 2016 à 11:50
29 mars 2016 à 11:50
La fonction htmlspecialchars() permet d'échapper les caractères réservés au HTML lors de l'affichage de données dans un document html et permet d'éviter les injections de script (faille xss), ce que tu as bien fais.
Ceci est par contre différent des injections sql. Avec mysqli, il faut utiliser la fonction mysqli_real_escape_string() pour échapper les caractères réservés au SQL lors de la concaténation de variable dans une requête sql.
Qu'en est-il du problème initial ? As tu réussi à transmettre le critère de recherche via un paramètre GET ou la session PHP ?
Ceci est par contre différent des injections sql. Avec mysqli, il faut utiliser la fonction mysqli_real_escape_string() pour échapper les caractères réservés au SQL lors de la concaténation de variable dans une requête sql.
Qu'en est-il du problème initial ? As tu réussi à transmettre le critère de recherche via un paramètre GET ou la session PHP ?
barale61
Messages postés
1208
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
4 novembre 2024
110
>
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
1 avril 2016 à 18:58
1 avril 2016 à 18:58
J'ai fait ça je pense que c'est bon car je n'ai pas d'erreur. Et pour le reste j'ai essayé de mettre le résultat de ma recherche dans ma pagination mais sans résultat.
barale61
Messages postés
1208
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
4 novembre 2024
110
30 mars 2016 à 00:49
30 mars 2016 à 00:49
J'ai bien essayé de créer une session et de la remplir avec la recherche et en fait ça fonctionne pas très bien.
jordane45
Messages postés
38364
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 décembre 2024
4 720
30 mars 2016 à 00:55
30 mars 2016 à 00:55
Bonjour,
Donc via ton code de pagination ?
... mais... que contient cette page ? (le code...)
C'est à dire ??? Tu pourrais être plus précis ? En quoi cela ne fonctionne t'il pas très bien selon toi ?
Quel code as tu écris ?
lorsque je clique sur un numéro de page, ma recherche "s'efface"
Donc via ton code de pagination ?
include 'body/pagination.inc.php';
... mais... que contient cette page ? (le code...)
J'ai bien essayé de créer une session et de la remplir avec la recherche et en fait ça fonctionne pas très bien
C'est à dire ??? Tu pourrais être plus précis ? En quoi cela ne fonctionne t'il pas très bien selon toi ?
Quel code as tu écris ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
barale61
Messages postés
1208
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
4 novembre 2024
110
1 avril 2016 à 18:43
1 avril 2016 à 18:43
Cette page contient:
Dans la session cela me renvoie bien les mots clés saisis.
<ul class="pagination"> <li class="<?php if ($pageCourrante == '1'){ echo "disabled";}?>"><a href="?page=recherche&numeroPage=<?php if ($pageCourrante !='1'){ echo $pageCourrante-1;}else { echo $pageCourrante;}?>">«</a></li> <?php for($i=1;$i<=$nbPage;$i++) { if($i==$pageCourrante) { ?> <li class="active"><a href="?page=recherche&numeroPage=<?php echo $i ?>"><?php echo $i ?></a></li> <?php }//Si ce n'est pas la page actuelle on enlève la classe active else { ?> <li><a href="?page=recherche&numeroPage=<?php echo $i ?>"><?php echo $i ?></a></li> <?php } ?> <li></li> <?php } ?> <li class="<?php if ($pageCourrante == $nbPage){ echo "disabled";}?>"><a href="?page=recherche&numeroPage=<?php if ($pageCourrante !=$nbPage){ echo $pageCourrante+1;}else { echo $pageCourrante;}?>">»</a></li> </ul>
Dans la session cela me renvoie bien les mots clés saisis.
jordane45
Messages postés
38364
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 décembre 2024
4 720
1 avril 2016 à 18:59
1 avril 2016 à 18:59
Ce code peut être plus proprement écrit comme ceci :
Maintenant il reste à ce que tu nous montres le code contenant tes variables de session... (en gros ... le code COMPLET ) de ta page pour qu'on puisse essayer de comprendre ce qui ne fonctionne pas.
<?php // les variables : $disabled1 = $pageCourrante == '1' ? "disabled" : ""; $disabled2 = $pageCourrante == $nbPage ? "disabled" : ""; $prev = $pageCourrante !='1' ? $pageCourrante-1 : $pageCourrante; $next = $pageCourrante !=$nbPage ? $pageCourrante+1 : $pageCourrante; //tu mendu : echo "<ul class='pagination'> <li class='$disabled1'> <a href='?page=recherche&numeroPage=$prev'>«</a> </li>"; for($i=1;$i<=$nbPage;$i++) { $clas = $i==$pageCourrante ? "active" : ""; echo "<li class='$clas'> <a href='?page=recherche&numeroPage=$i'>$i</a> </li>"; echo "<li></li>"; } echo "<li class='$disabled2'> <a href='?page=recherche&numeroPage=$next'>»</a> </li>"; echo "</ul>"; ?>
Maintenant il reste à ce que tu nous montres le code contenant tes variables de session... (en gros ... le code COMPLET ) de ta page pour qu'on puisse essayer de comprendre ce qui ne fonctionne pas.