Se connecter / S'enregistrer
Votre question

Recherche mysql par lettre

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
12 Septembre 2010 22:25:50

Bonjour,

Voila sur une page je voudrais afficher par ordre alphabétique mes news mais je voudrais aussi que si je séléctionne une lettre , sa affiche les news commençant par cette lettre . mais déja ca affiche rien et ca marche pas . Voila le code :

  1. <a href="#" onclick="<?php $recherche="a"; ?>">A</A>
  2. <a href="#" onclick="<?php $recherche="b"; ?>">B</A>
  3. <a href="#" onclick="<?php $recherche="c"; ?>">C</A>
  4. <a href="#" onclick="<?php $recherche="d"; ?>">D</A>
  5. <a href="#" onclick="<?php $recherche="e"; ?>">E</A>
  6. <a href="#" onclick="<?php $recherche="f"; ?>">F</A>
  7. <a href="#" onclick="<?php $recherche="g"; ?>">G</A>
  8. <a href="#" onclick="<?php $recherche="h"; ?>">H</A>
  9. <a href="#" onclick="<?php $recherche="i"; ?>">I</A>
  10. <a href="#" onclick="<?php $recherche="j"; ?>">J</A>
  11. <a href="#" onclick="<?php $recherche="k"; ?>">K</A>
  12. <a href="#" onclick="<?php $recherche="l"; ?>">L</A>
  13. <a href="#" onclick="<?php $recherche="m"; ?>">M</A>
  14. <a href="#" onclick="<?php $recherche="n"; ?>">N</A>
  15. <a href="#" onclick="<?php $recherche="o"; ?>">O</A>
  16. <a href="#" onclick="<?php $recherche="p"; ?>">P</A>
  17. <a href="#" onclick="<?php $recherche="k"; ?>">Q</A>
  18. <a href="#" onclick="<?php $recherche="r"; ?>">R</A>
  19. <a href="#" onclick="<?php $recherche="s"; ?>">S</A>
  20. <a href="#" onclick="<?php $recherche="t"; ?>">T</A>
  21. <a href="#" onclick="<?php $recherche="u"; ?>">Y</A>
  22. <a href="#" onclick="<?php $recherche="v"; ?>">V</A>
  23. <a href="#" onclick="<?php $recherche="w"; ?>">W</A>
  24. <a href="#" onclick="<?php $recherche="x"; ?>">X</A>
  25. <a href="#" onclick="<?php $recherche="y"; ?>">Y</A>
  26. <a href="#" onclick="<?php $recherche="z"; ?>">Z</A>
  27. </h4></center><br>
  28.  
  29.  
  30.  
  31. <?php
  32. $page = (isset($_GET['page'])) ? $_GET['page'] : 1;
  33. // Afficher le résultat d'une requête sql sur plusieurs page
  34. //connexion au serveur puis choix de la base
  35. mysql_connect('localhost','*****','*******');
  36. mysql_select_db('******');
  37. //la requête que j'ai choisi va sélectionner tout le contenue de la base
  38. //j'exécute ici la requête sans LIMIT pour extraire le nombre total d'enregistrement
  39. $sql1="select * from news";
  40. $req1=mysql_query($sql1);
  41. $nbtotal=mysql_num_rows($req1);
  42. //$limite est le nb d'enregistrement par page ,
  43. $limite=3;
  44. $debut=($page-1)*$limite; // $debut à partir de quel enregistrement commence la selection dans notre cas si $page=1 $debut=0 / si $page=2 $debut=(2-1)*3 = 3
  45. $sql="select * from news ORDER BY nom LIMIT $debut, $limite LIKE '%" . $recherche . "%' "; //requête pour sélectionner les enregistrements par lot on commençant par début
  46. $req=mysql_query($sql); // exécution de la requête
  47. while($data=mysql_fetch_array($req)) // parcourir le résultat de la requête
  48. {
  49. ?>
  50. // affichage du résultat
  51. //arrès c'est pas important

Merci

Autres pages sur : recherche mysql lettre

12 Septembre 2010 23:17:43

Modifie tes liens de cette façon :
  1. <a href="?page=<?php echo $_GET['page']; ?>&recherche=a">A</a>


Ensuite ta requête SQL :
  1. "select * from news WHERE nom LIKE '" . mysql_real_escape_string($_GET['recherche']) . "%' ORDER BY nom LIMIT $debut, $limite"
m
0
l
13 Septembre 2010 14:24:45

Désoler mais rien ne marche . Ca n'affiche rien quand j'essaye . Au debut ca affiche dans l'ordre général , puis après , si je clique sur A pour essayé , rien :s . voila le code complet
  1. <a href="?page=<?php echo $_GET['page']; ?>&recherche=a">A</a>
  2. <a href="#" onclick="<?php $recherche="b"; ?>">B</A>
  3. <a href="#" onclick="<?php $recherche="c"; ?>">C</A>
  4. <a href="#" onclick="<?php $recherche="d"; ?>">D</A>
  5. <a href="#" onclick="<?php $recherche="e"; ?>">E</A>
  6. <a href="#" onclick="<?php $recherche="f"; ?>">F</A>
  7. <a href="#" onclick="<?php $recherche="g"; ?>">G</A>
  8. <a href="#" onclick="<?php $recherche="h"; ?>">H</A>
  9. <a href="#" onclick="<?php $recherche="i"; ?>">I</A>
  10. <a href="#" onclick="<?php $recherche="j"; ?>">J</A>
  11. <a href="#" onclick="<?php $recherche="k"; ?>">K</A>
  12. <a href="#" onclick="<?php $recherche="l"; ?>">L</A>
  13. <a href="#" onclick="<?php $recherche="m"; ?>">M</A>
  14. <a href="#" onclick="<?php $recherche="n"; ?>">N</A>
  15. <a href="#" onclick="<?php $recherche="o"; ?>">O</A>
  16. <a href="#" onclick="<?php $recherche="p"; ?>">P</A>
  17. <a href="#" onclick="<?php $recherche="k"; ?>">Q</A>
  18. <a href="#" onclick="<?php $recherche="r"; ?>">R</A>
  19. <a href="#" onclick="<?php $recherche="s"; ?>">S</A>
  20. <a href="#" onclick="<?php $recherche="t"; ?>">T</A>
  21. <a href="#" onclick="<?php $recherche="u"; ?>">Y</A>
  22. <a href="#" onclick="<?php $recherche="v"; ?>">V</A>
  23. <a href="#" onclick="<?php $recherche="w"; ?>">W</A>
  24. <a href="#" onclick="<?php $recherche="x"; ?>">X</A>
  25. <a href="#" onclick="<?php $recherche="y"; ?>">Y</A>
  26. <a href="#" onclick="<?php $recherche="z"; ?>">Z</A>
  27. </h4></center><br>
  28.  
  29.  
  30.  
  31. <?php
  32. $recherche=$_GET['recherche'] ;
  33. $page = (isset($_GET['page'])) ? $_GET['page'] : 1;
  34. // Afficher le résultat d'une requête sql sur plusieurs page
  35. //connexion au serveur puis choix de la base
  36. mysql_connect('localhost','*****','*****');
  37. mysql_select_db('******');
  38. //la requête que j'ai choisi va sélectionner tout le contenue de la base
  39. //j'exécute ici la requête sans LIMIT pour extraire le nombre total d'enregistrement
  40. $sql1="select * from news";
  41. $req1=mysql_query($sql1);
  42. $nbtotal=mysql_num_rows($req1);
  43. //$limite est le nb d'enregistrement par page ,
  44. $limite=3;
  45. $debut=($page-1)*$limite; // $debut à partir de quel enregistrement commence la selection dans notre cas si $page=1 $debut=0 / si $page=2 $debut=(2-1)*3 = 3
  46. $sql="select * from news WHERE nom LIKE '%" . mysql_real_escape_string($_GET['recherche']) . "%' ORDER BY nom LIMIT $debut, $limite"; //requête pour sélectionner les enregistrements par lot on commençant par début
  47. $req=mysql_query($sql); // exécution de la requête
  48. while($data=mysql_fetch_array($req)) // parcourir le résultat de la requête
  49. {
  50. ?>
  51. //j'affiche les résultats de la requet
  52. <?php
  53. }
  54. $nbpage=$nbtotal/$limite; //calcule de nombre de page
  55. if (($page==1) && ($nbpage > 1)) // si on est à la première page et que le nb de pages pour afficher les enregistrement est supérieure à 1 on affiche seulement le lien "suivant >>" qui peut être un bouton
  56. {
  57. $next=$page+1;
  58. echo "<a href='ordrenews.php?page=$next'><center>Suivant >> </a>";
  59. echo "<b> Page $page </b>";
  60. $_SESSION['pageencour']=2;
  61. }
  62. else
  63. {
  64. if ($page < $nbpage ) // si $page est inférieur au nb totale des page donc on affiche suivant>> et <<precédent
  65. {
  66. $prev=$page-1;
  67. $next=$page+1;
  68. echo "<center><a href='ordrenews.php?page=$prev'><< précédent</a> ";
  69. echo "<b> Page $page </b>";
  70. echo "<a href='ordrenews.php?page=$next'> Suivant >></a>";
  71. }
  72. else
  73. {
  74. if (($page >= $nbpage) && ($nbpage > 1))// si on n'est à la dernière page et que le nb totale de page est sup à on affiche seulement <<précédent
  75. {
  76. $prev=$page-1;
  77. echo "<center><a href='ordrenews.php?page=$prev'><<Précedent</a>";
  78. echo "<b> Page $page </b>";
  79. }
  80. }
  81. }
  82. ?>
m
0
l
Contenus similaires
13 Septembre 2010 19:51:42

Qu'est ce qui ne fonctionne pas ?
Tu as une erreur ?

Et tu as rajouté un % dans la requête alors qu'il n'en faut que un à la fin de la chaine.
a% => chaine qui commence par la lettre a
%a% => chaine qui contient la lettre a
%a => chaine qui fini par la lettre a


Tu dit que ça n'affiche rien, mais tu as des news qui commencent par la lettre "a" au moins ?
m
0
l
13 Septembre 2010 20:07:08

Ca m'affiche aucun résultat alors que je suis sur que une news commence par A . Ensuite j'ai enlevé le premier % mais sa change rien . Rien ne s'affiche .
m
0
l
13 Septembre 2010 20:46:26

Il y a quoi dans le while ?
m
0
l
13 Septembre 2010 20:52:58

Ce qui me permet d'afficher le résultat mais la dessus il n'y a aucun problème j'en suis sur
m
0
l
a c 232 L Programmation
13 Septembre 2010 22:40:44

Tu ne peux pas mettre de code pour initialiser une variable PHP dans un évènement onclick javascript
m
0
l
13 Septembre 2010 22:44:49

  1. <a href="?recherche=a">A</a>


C'est mieux ;) 
m
0
l
13 Septembre 2010 23:59:24

max1395 a dit :
Ce qui me permet d'afficher le résultat mais la dessus il n'y a aucun problème j'en suis sur

Bah oui ça je me doute bien.. Mais je peux voir le code ?


Et essaye d'executer cette requete sous php my admin pour voir ce que tu as :
  1. select * from news WHERE nom LIKE 'a%' ORDER BY nom LIMIT 0, 3




edit :
Je pense avoir compris le problème :

modifie ton code de cette façon :
  1. <?php
  2. // il faut définir ta variable $page avant de créer les liens
  3. $page = (intval($_GET['page'])>0) ? $_GET['page'] : 1;
  4. ?>
  5. <a href="?page=<?php echo $page; ?>&recherche=a">A</a>
  6. etc...
m
0
l
14 Septembre 2010 14:21:03

OK tous a l'air de fonctionner merci , je ne vois pas de problème :)  Le seul truc c'est que quand toute les news A sont afficher , sa passe a B . Comment arreter d'afficher quand les news de la lettre A sont fini ? Merci je pense que c'est ma derniere question merci beaucoup de votre aide
m
0
l
14 Septembre 2010 15:11:46

a% => chaine qui commence par la lettre a
%a% => chaine qui contient la lettre a
%a => chaine qui fini par la lettre a
m
0
l
14 Septembre 2010 15:43:57

Oui ma requet est :

$sql="select * from news WHERE nom LIKE '" . mysql_real_escape_string($_GET['recherche']) . "%' ORDER BY nom LIMIT $debut, $limite"; //requête pour sélectionner les enregistrements par lot on commençant par début

et pourtant sa m'affiche les news après A
m
0
l
14 Septembre 2010 17:27:49

Dans les liens 'Suivant' et 'Précédent', il faut rajouter la lettre dans l'url :

  1. echo "<a href='ordrenews.php?page=$next&recherche={$_GET['recherche']}'>...";
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS