Se connecter avec
S'enregistrer | Connectez-vous

Recherche dans base de données

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

Voici mon code:
  1. <?php
  2. $bdd_host = 'localhost';
  3. $bdd_login = '****';
  4. $bdd_pass = '****';
  5. $bdd_base = '****';
  6. $bdd_conect = mysql_connect("$bdd_host", "$bdd_login", "$bdd_pass") or die('erreur connection sql');
  7. mysql_select_db("$bdd_base") or die('oops pas de base de donnée');
  8.  
  9.  
  10. $table = 'doc';
  11. $champs = array('nom', 'description');
  12. $select = 'nom';
  13. $order= 'nom';
  14. $sens = 'ASC';
  15. $limit_start = '0';
  16. $limit_nb = '25';
  17. ?>
  18. <form action="index.php" method="post">
  19. <input type="text" name="search_text" size="100" style="font-size: 12px;" value=""><br><br>
  20. <input type="radio" name="search_option" value="all" style="border: none; font-size: 12px;" checked>Rechercher tous les mots<br>
  21. <input type="radio" name="search_option" value="one" style="border: none; font-size: 12px;">Rechercher un de ces mots<br>
  22. <input type="radio" name="search_option" value="sentence" style="border: none; font-size: 12px;">Rechercher l'expression exacte
  23.  
  24. <br><br>
  25. <input type="submit" value="Rechercher" name="submit" style="font-size: 12px; position: relative; left: 20px;">
  26. </form>
  27.  
  28. <?php
  29. class dbSearch
  30. {
  31. // mots et expressions à chercher
  32. private $words;
  33.  
  34. // séparateur
  35. private $sep;
  36.  
  37. // option de recherche
  38. private $option;
  39.  
  40. // nombre de mots
  41. private $count_words;
  42.  
  43. // clause where
  44. private $query_where = '';
  45.  
  46. /*
  47. __construct()
  48. Paramètres:
  49. - $search_option: option choisie
  50. - $search_text: texte de recherche entré
  51. Retour:
  52. void
  53. */
  54. public function __construct( $search_option, $search_text )
  55. {
  56. $this->query_prepared = 1;
  57.  
  58. // option de recherche
  59. $this->option = $search_option;
  60.  
  61. // recherche en ET
  62. if( $this->option == 'all' )
  63. {
  64. $this->sep = ' AND ';
  65. $this->option = 1;
  66. $this->words = explode( ' ', addslashes( $search_text ) );
  67. $this->count_words = count( $this->words );
  68. }
  69. // recherche en OU
  70. else if( $this->option == 'one' )
  71. {
  72. $this->sep = ' OR ';
  73. $this->option = 2;
  74. $this->words = explode( ' ', addslashes( $search_text ) );
  75. $this->count_words = count( $this->words );
  76. }
  77. // phrase exacte
  78. else
  79. {
  80. $this->option = 0;
  81. $this->words[0] = addslashes( $search_text );
  82. }
  83. }
  84.  
  85. /*
  86. mkQuery()
  87. Crée la requête MySQL
  88. Paramètres:
  89. - $table ( string ): table à utiliser
  90. - $select ( string ): les champs que l'on récupère
  91. - $champs ( string si 1 champ, array si plusieurs ): champs dans lesquels s'effectue la recherche
  92. - $order ( string ): critère de classement ; pas de classement si vide
  93. - $sens ( string: asc ou desc ): sens du classement
  94. - $limit_start ( entier ): pour le LIMIT
  95. - $limit_nb ( entier ): pour le LIMIT ; si 0, pas de clause LIMIT
  96. Retour:
  97. void
  98. */
  99. public function mkQuery( $table, $select, $champs, $order, $sens, $limit_start, $limit_nb )
  100. {
  101. $this->query_where = '';
  102.  
  103. if( !is_array( $champs ) )
  104. $champs = array( $champs );
  105.  
  106. $count_champs = count( $champs );
  107.  
  108. // si recherche en ET ou OU
  109. if( $this->option )
  110. {
  111. for( $i = 0; $i < $this->count_words; $i++ ) // boucle sur les mots
  112. {
  113. // si pas première itération
  114. if( $i )
  115. $this->query_where .= $this->sep;
  116.  
  117. $this->query_where .= '( ';
  118.  
  119. for( $j = 0; $j < $count_champs; $j++ ) // boucle sur les champs
  120. {
  121. if( $j )
  122. $this->query_where .= ' OR ';
  123.  
  124. $this->query_where .= $champs[ $j ] . ' LIKE \'%' . $this->words[ $i ] . '%\'';
  125.  
  126. } // for( $j = 0; $j < $this->count_words; $j++ ) // boucle sur les champs
  127.  
  128. $this->query_where .= ' )';
  129. } // for( $i = 0; $i < $count_champs; $i++ ) // boucle sur les mots
  130. }
  131. else // recherche phrase exacte
  132. {
  133. for( $i = 0; $i < $count_champs; $i++ ) // boucle sur les champs
  134. {
  135. if( $i )
  136. $this->query_where .= ' OR ';
  137.  
  138. $this->query_where .= $champs[$i] . ' LIKE \'%' . $this->words[0] . '%\' ';
  139. } // for( $i = 0; $j < $count_champs; $i++ ) // boucle sur les champs
  140. } // else // recherche phrase exacte
  141.  
  142. // construction de la requête finale
  143. $sql = array( 'select' => 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ' . $this->query_where, 'count' => 'SELECT count(*) FROM ' . $table . ' WHERE ' . $this->query_where );
  144.  
  145. if( !empty( $order ) )
  146. $sql['select'] .= ' ORDER BY ' . $order . ' ' . $sens;
  147. $this->query_where = $sql['select'];
  148. if( $limit_nb )
  149. $sql['select'] .= ' LIMIT ' . $limit_start . ', ' . $limit_nb;
  150.  
  151. return $sql;
  152. }
  153.  
  154. /*
  155. getWhere()
  156. Récupération de la clause where
  157. Paramètres:
  158. void
  159. Retour:
  160. string
  161. */
  162. public function getQuery()
  163. {
  164. return $this->query_where;
  165. }
  166. }
  167. ?>
  168. <?php
  169. mysql_close();
  170. ?>


Et le problème est que sa m'affiche sa:
  1. Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in c:\program files\easyphp1-8\www\search\index.php on line 32

Et je comprend pas d'ou sa vient...

PS: Pour l'upload c'est résolu!lol Merci!

C'est bon c'est règler!merci!

Maintenant j'ai un autre soucis, mais qui n'as rien à voir avec sa!

Mon moteur affiche les données comme je lui ai demandé, mais j'aimerais que lorsque que je clique sur un lien, il m'ouvre une pop-up ou une nouvelle fenêtre et qui m'affiche uniquement les caractéristique de ce membre!

Je m'explique, mon mteur affiche:

Nom Prenom - Pseudo
Origine pseudo.....
(date d'inscription)

J'aimerais que lorsqu'une personne clique sur son nom prenom - pseudo une page s'affiche et affiche tout les autres info relative à ce membre et pas à tous ceux qui sont dessous! Et que sa fasse pareil avec le reste! Que quand on clique sur nom prenom - pseudo une nouvelle fenêtre s'ouvre pour afficher uniquement les données de celui sur qui l'on à cliqué...

Et là, je n'ai aucun début de code...
Je ne sait même pas comment faire!

Merci!
Lassé par la pub ? Créez un compte