FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » Recherche dans base de données
 

Recherche dans base de données

Il y a 319 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Recherche dans base de données
 

Bonjour,
 
J'ai encore besoin d'un coups de main....
 
J'aimerais insérer sur mon site, un moteur de recherche qui scanne une ou plusieur table de ma base de données, et qui affiche le résultat du genre:
 
NOM
Description
 
Alors qu'il à scanner une table entière...
 
Merci d'avance!

Je me la pête
Profil : /!\ Docteur - PDG
Plus d'informations

Oui, mais là, c'est vraiment trop vague comme description...
 
Soit plus précis dans ce que tu veux et poste aussi le code que tu as déjà écrit sur cette partie.
 
A+

Voici mon code:

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


 
Et le problème est que sa m'affiche sa:

Code :
  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!

G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Essayes avec "private var" plutot que "private" seul ...
 
edit: il manque aussi le typage de tes fonctions.


Message édité par boub popsy team le 22-11-2006 à 16:35:13

---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !

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!


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » Recherche dans base de données
 

Annonces Google
Publicité