begin process at 2012 02 12 18:59:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > FAIRE UNE RECHERCHE DE TEXTE DANS UN CHAMP MYSQL V1.0BETA

FAIRE UNE RECHERCHE DE TEXTE DANS UN CHAMP MYSQL V1.0BETA


 Information sur la source

Note :
6,67 / 10 - par 3 personnes
6,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Niveau :Débutant Date de création :12/11/2003 Date de mise à jour :13/11/2003 22:27:21 Vu :4 601

Auteur : Tomcube

Ecrire un message privé
Site perso
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Pratique quand on veut rechercher des liens ou des sujets dans les forums.
C'est un formulaire pour rechercher dans un champ X de MYSQL au moins un des mots ou tous les mots qu'a rentré l'utilisateur dans la case recherche.
Postée à l'initiative de Drazounet, ça permettera d'améliorer mon code s'il y a des problèmes ^^

Source

  • //-----------------------------------------
  • // CONFIG
  • //----------------------------------------
  • <?
  • $sql_serveur = ""; // Serveur MYSQL
  • $sql_user = ""; // Login MYSQL
  • $sql_pass = ""; // Mot de passe MYSQL
  • $sql_database = ""; // Nom de votre base de données
  • $table = ""; // Table dans laquelle vous faites la recherche
  • $couleur_motscles = "#FFFF00"; // Couleur de surlignement des mots clés dans les résultats. Par défaut : jaune
  • ?>
  • //-------------------------------------
  • // GENERALITES
  • //-------------------------------------
  • <html>
  • <head>
  • <style type="text/css">
  • .motscles{background:<?=$couleur_motscles?>};
  • </style>
  • </head>
  • <body>
  • //------------------------------------------
  • // LE FORMULAIRE (recherche.php)
  • //------------------------------------------
  • <?
  • if (empty($_GET["op"])
  • {
  • ?>
  • <br><br><font size="5"><b><center>La sécurité routière sur le Web</center></b></font><br><br>
  • <center>
  • <form method="post" action="recherche.php?op=search">
  • <input type="text" name="request">
  • <input type="submit" value="Rechercher!"><br><br>
  • Rechercher avec au moins un des mots :<input type="radio" value="or" name="et_ou" checked> &nbsp; Rechercher avec tous les mots : <input type="radio" name="et_ou" value="and">
  • </form>
  • </center>
  • <?
  • }
  • //------------------------------------------------------------
  • // TRAITEMENT RECHERCHE (suite de recherche.php)
  • //------------------------------------------------------------
  • elseif (isset($_GET["op"] && $_GET["op"]="search")
  • {
  • @ $connect = mysql_connect($sql_serveur,$sql_user,$sql_pass) or die ("Impossible de se connecter à la base de données"); // connection classique
  • mysql_select_db($sql_database);
  • if (!isset($_POST["request"])) // Si l'utilisateur n'a rien rentré
  • echo "<font color=\"#FF0000\" face=\"Arial\"><center>Veuillez entrer vos mots-clés pour la recherche</center></font>";
  • else
  • {
  • $request = trim($_POST["request"]); // On supprime les espaces vides en début et fin de chaîne
  • if (strstr($request, " ")) // Si il y a des espaces = plusieurs mots
  • {
  • $plusieurs_mots = 1;
  • $mots=explode(" ",$request); // On sectionne en tableau tous les mots
  • $nombre_mots=count($mots);
  • $z=0;
  • $texte="Liens contenant <b>&quot;$mots[0]&quot;</b>";
  • $phrase="description like('%$mots[$z]%')"; // On initialise le premier mot
  • $z=1;
  • $motif = $mots[0];
  • while($z<$nombre_mots) // démarrage de la boucle
  • {
  • $motif = "|".$mots[$z];
  • $phrase.=" ".$_POST["et_ou"]." description like('%$mots[$z]%')";
  • $texte.=" ";
  • if($_POST["et_ou"]=="and"){$texte.="et";}else{$texte.="ou";} // C'est là où on met "recherche avec au moins 1 des mots" ou "avec tous les mots"
  • $texte.=" <b>&quot;$mots[$z]&quot;</b>";
  • $z++;
  • }
  • $z=0;
  • }
  • else // sinon : 1 seul mot
  • {
  • $plusieurs_mots = 0;
  • $phrase = "description like('%$request%')"; // recherche simple ^^
  • $texte = "Enregistrement(s) contenant <b>&quot;$request&quot;</b>";
  • }
  • $query="select * from ".$table." where ".$phrase.";
  • $result_recherche = mysql_query($query);
  • @ $num_liens_rech = mysql_num_rows($result_recherche);
  • if ($num_liens_rech==0) // Si il n'a rien trouvé
  • {
  • echo "<center><font color=\"#FF0000\" face=\"Arial\">Aucun enregistrement ne correspond à votre recherche !</font></center>";
  • }
  • else
  • {
  • ?>
  • <center><font face="Arial">Résultat de votre recherche :</font></center>
  • <br><br>
  • <?
  • echo "<center><font face=\"Arial\">".$texte."</font></center>"; // Affiche "
  • echo "<br><br>";
  • echo "&nbsp; &nbsp; &nbsp; Nous avons trouvé ".$num_liens_rech." enregistrement(s) correspondant à votre recherche. <br><br>";
  • echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"540\" align=\"center\">\n";
  • while ($tableau_rech=$BDD->enTableauTXT($result_recherche))
  • {
  • if ($plusieurs_mots==1)
  • {
  • $new_description = $tableau_rech["description"];
  • for ($z=0; $z<$nombre_mots; $z++)
  • { $mots[$z] = strtolower($mots[$z]);
  • $new_description = str_replace (strtolower($mots[$z]), "<span class=\"motscles\">".strtolower($mots[$z])."</span>", $new_description);
  • $new_description = str_replace (strtoupper($mots[$z]), "<span class=\"motscles\">".strtoupper($mots[$z])."</span>", $new_description);
  • $new_description = str_replace (ucfirst($mots[$z]), "<span class=\"motscles\">".ucfirst($mots[$z])."</span>", $new_description);
  • }
  • }
  • else
  • {
  • $new_description = str_replace (strtolower($request), "<span class=\"motscles\">".strtolower($request)."</span>", $tableau_rech["description"]);
  • $new_description = str_replace (strtoupper($request), "<span class=\"motscles\">".strtoupper($request)."</span>", $new_description);
  • $new_description = str_replace (ucfirst($request), "<span class=\"motscles\">".ucfirst($request)."</span>", $new_description);
  • }
  • echo "<tr>\n";
  • echo "<td colspan=\"2\">";
  • echo "<a href=\"redir.php?id=".$tableau_rech["Lid"]."\" target=\"_blank\"><font color=\"#000090\"><b>".$tableau_rech["nom"]."</b></font></a>"." - <font color=\"#BD33B2\"><i>".$tableau_rech["adresse"]."</i></font>";
  • echo "<td>";
  • echo "</tr>\n";
  • echo "<tr>\n";
  • echo "<td width=\"30\">&nbsp;</td>\n";
  • echo "<td width=\"472\">";
  • echo "<font color=\"#828282\">".$new_description."</font>";
  • echo "<br><br>";
  • echo "</td>\n</tr>\n";
  • }
  • echo "</table>";
  • }
  • }
  • ?>
  • </body>
  • </html>
//-----------------------------------------
//   CONFIG
//----------------------------------------

<?

  $sql_serveur = ""; // Serveur MYSQL
  $sql_user = ""; // Login MYSQL
  $sql_pass = ""; // Mot de passe MYSQL
  $sql_database = ""; // Nom de votre base de données
  
  $table = ""; // Table dans laquelle vous faites la recherche
  $couleur_motscles = "#FFFF00"; // Couleur de surlignement des mots clés dans les résultats. Par défaut : jaune
?>

//-------------------------------------
//  GENERALITES
//-------------------------------------

<html>
<head>
  <style type="text/css">
    .motscles{background:<?=$couleur_motscles?>}; 
  </style>
</head>
<body>

//------------------------------------------
//   LE FORMULAIRE (recherche.php)
//------------------------------------------

<?
if (empty($_GET["op"])
 {
?>
<br><br><font size="5"><b><center>La sécurité routière sur le Web</center></b></font><br><br>

<center>
<form method="post" action="recherche.php?op=search">
 <input type="text" name="request">
 <input type="submit" value="Rechercher!"><br><br>
  Rechercher avec au moins un des mots :<input type="radio" value="or" name="et_ou" checked> &nbsp; Rechercher avec tous les mots : <input type="radio" name="et_ou" value="and">
</form>
</center>
<?
  }

//------------------------------------------------------------
//  TRAITEMENT RECHERCHE (suite de recherche.php)
//------------------------------------------------------------

elseif (isset($_GET["op"] && $_GET["op"]="search")
 {
   @ $connect = mysql_connect($sql_serveur,$sql_user,$sql_pass) or die ("Impossible de se connecter à la base de données"); // connection classique
      mysql_select_db($sql_database);
    if (!isset($_POST["request"])) // Si l'utilisateur n'a rien rentré
   echo "<font color=\"#FF0000\" face=\"Arial\"><center>Veuillez entrer vos mots-clés pour la recherche</center></font>";	 
   else 
     {   
      $request = trim($_POST["request"]); // On supprime les espaces vides en début et fin de chaîne
       if (strstr($request, " ")) // Si il y a des espaces = plusieurs mots
       {
         $plusieurs_mots = 1;
         $mots=explode(" ",$request);  // On sectionne en tableau tous les mots
         $nombre_mots=count($mots);
				  
         $z=0;
         $texte="Liens contenant <b>&quot;$mots[0]&quot;</b>";
         $phrase="description like('%$mots[$z]%')"; // On initialise le premier mot
         $z=1;
         $motif = $mots[0];
          while($z<$nombre_mots) // démarrage de la boucle
            {
            $motif = "|".$mots[$z];
            $phrase.=" ".$_POST["et_ou"]." description like('%$mots[$z]%')";
            $texte.=" ";
             if($_POST["et_ou"]=="and"){$texte.="et";}else{$texte.="ou";} // C'est là où on met "recherche avec au moins 1 des mots" ou "avec tous les mots"
            $texte.=" <b>&quot;$mots[$z]&quot;</b>";
	$z++;
       }
        $z=0;
     }
     else  // sinon : 1 seul mot
     {
      $plusieurs_mots = 0;
      $phrase = "description like('%$request%')"; // recherche simple ^^
      $texte = "Enregistrement(s) contenant <b>&quot;$request&quot;</b>";
      }
				   
     $query="select * from ".$table." where ".$phrase.";
     $result_recherche = mysql_query($query);
     @ $num_liens_rech = mysql_num_rows($result_recherche);
       if ($num_liens_rech==0) // Si il n'a rien trouvé
         {
      echo "<center><font color=\"#FF0000\" face=\"Arial\">Aucun enregistrement ne correspond à votre recherche !</font></center>"; 
          }
       else
         {
         ?>
   <center><font face="Arial">Résultat de votre recherche :</font></center>
  <br><br>
         <?
   echo "<center><font face=\"Arial\">".$texte."</font></center>"; // Affiche "
   echo "<br><br>"; 
   echo "&nbsp; &nbsp; &nbsp; Nous avons trouvé ".$num_liens_rech." enregistrement(s) correspondant à votre recherche. <br><br>";
   echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"540\" align=\"center\">\n";
   while ($tableau_rech=$BDD->enTableauTXT($result_recherche))
       {
        if ($plusieurs_mots==1)
         {
         $new_description = $tableau_rech["description"];	
            for ($z=0; $z<$nombre_mots; $z++)	
                 {							$mots[$z] = strtolower($mots[$z]);
                $new_description = str_replace (strtolower($mots[$z]), "<span class=\"motscles\">".strtolower($mots[$z])."</span>", $new_description);
								$new_description = str_replace (strtoupper($mots[$z]), "<span class=\"motscles\">".strtoupper($mots[$z])."</span>", $new_description);
								$new_description = str_replace (ucfirst($mots[$z]), "<span class=\"motscles\">".ucfirst($mots[$z])."</span>", $new_description);
       }
    }
   else
   {
     $new_description = str_replace (strtolower($request), "<span class=\"motscles\">".strtolower($request)."</span>", $tableau_rech["description"]);

     $new_description = str_replace (strtoupper($request), "<span class=\"motscles\">".strtoupper($request)."</span>", $new_description);
				
     $new_description = str_replace (ucfirst($request), "<span class=\"motscles\">".ucfirst($request)."</span>", $new_description);
    }
    echo "<tr>\n";
    echo "<td colspan=\"2\">";
    echo "<a href=\"redir.php?id=".$tableau_rech["Lid"]."\" target=\"_blank\"><font color=\"#000090\"><b>".$tableau_rech["nom"]."</b></font></a>"." - <font color=\"#BD33B2\"><i>".$tableau_rech["adresse"]."</i></font>";
    echo "<td>";
    echo "</tr>\n";
    echo "<tr>\n";
    echo "<td width=\"30\">&nbsp;</td>\n";
    echo "<td width=\"472\">";
    echo "<font color=\"#828282\">".$new_description."</font>";
    echo "<br><br>";
    echo "</td>\n</tr>\n";
    }	  
    echo "</table>";  
   } 
 }
?>
</body>
</html>

 Conclusion

Voilà, testez, prévevez des bugs, j'améliore, tout le monde est content (^^) !!
Bon programming, vive le PHP !


 Sources du même auteur

Source avec Zip "COMMENT LIER 2 <SELECT>" : CUBO-SELECT2 V1.0BETA3
Source avec Zip FREEUPLOADER (FONCTION D'UPLOAD FTP EN PHP3, COMPATIBLE AVEC...
Source avec Zip UNE FONCTION MAIL POUR FREE (PROTOMAIL) V 4.0
Source avec Zip Source avec une capture "LES COMMENTAIRES"

 Sources de la même categorie

Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
[CRON] INSERT ON DUPLICATE KEY UPDATE par pierreSabatier
Source avec Zip CLASS MYSQL 5/PHP5 AVEC GESTION DES EXCEPTION ET DES REQUÊTE... par devil_may_cry
Source avec Zip Source avec une capture MOTEUR DE RECHERCHE SUR BASE MYSQL FULLTEXT ET BOOLEAN AVEC ... par cod57
SYSTÈME DE PAGINATION AVEC BDD ET IMAGES (FICHIERS) par begueradj

Commentaires et avis

Commentaire de Drazounet le 13/11/2003 08:54:50

Merci beaucoup ! C'est vraiment très sympa de ta part [:D]

Sinon, j'ai trouvé un bug, dans le formulaire il faudrait pas mettre un echo ' '; pour insérer le code html? Car chez moi ça donne une erreur.

Maintenant je vais éssayer de le comprendre et de l'adapter à mon code ^^

Merci encore ;) C vraiment très fun et comme tu l'as dit : Vive le PHP !

Commentaire de Tomcube le 13/11/2003 22:24:57

Content que ça te plaise !
En fait, j'ai fait un copier coller de mon code que j'ai utilisé pour faire une recherche dans mes liens. J'ai ensuite essayé de généraliser et de mettre des commentaires. Le code passe en version 1.0beta2 suite à la correction du bug que tu m'a di (faute d'inatention ...)

Commentaire de sharkit le 27/11/2003 14:50:00

Salut erreur en ligne 20 ...
Parse error: parse error in /home/XXXXXXX/www/recherche.php on line 20
sais pas ce que ça peut être
@++
Sharkit

Commentaire de SkyCrasher le 30/11/2003 23:09:02

C'est un peu long pour une simple recherche non ?
J'ai pas tester car niveau optimisation : 0 !
Mais si je suis obligé de passe par ces lignes de codes je mis soustrairais !
Merci pour cet énorme code pour une simple recherche !

Commentaire de 4ze2tY le 09/12/2003 22:27:25

Trop bien ! En plus je vais pouvoir l'adapter pour mon site, parce que j'ai plein de page où je pourrais utiliser ce script (comme ds mes liens, ma section jeux vidéo, ma section news , ...) merci d'y avoir pensé !

Commentaire de joekid le 20/02/2004 00:27:08

ben pour le debutant que je suis ca ne passe pas du tout, j'ai un parse error aussi et je ne sais quoi faire, faut il faire plusieurs fichiers ?

Commentaire de zandor le 24/02/2004 10:32:35

Après quelques modifications, j'arrive enfin à faire foctionner une partie du code me permettant d'obtenir le nombre d'enregistrements trouvés. (Attention, il y' pas de problèmes sur les " et \", mais aussi sur les fin de blocs " } ").

Cependant, je n'arrive toujours pas à obtenir l'affichage des résultats, et pour cause puisque tu fais référence à une fonction "enTableauTXT()" qui n'est définie nulle part... (dans : "while ($tableau_rech=$BDD-&gt;enTableauTXT($result_recherche))" ).
Aurais-tu oublié un include ?

Sinon, ce code devrait s'avérer bien pratique quand il fonctionnera :-)

Commentaire de SAaD44 le 06/04/2004 18:06:40

J'ai une erreur:
Parse error: parse error, unexpected '{' in c:\program files\easyphp\www\perso_sql2\database.php on line 34.

Plutôt étrange n'est-ce pas?
Quelqu'un peut m'aider? Merci et bonne fin d'aprés-midi

Commentaire de yakou32 le 10/05/2004 13:16:25

Bon, je débute je débute, j'espère ne pas faire de bétises...

Pour éviter une parse error, j'ai modifié la ligne query en
$query= "select * from ".".$table."." where ".".$phrase.";

Ceci dit, j'ai encore une parse error $

Ne manque t'il pas une } dans la phase de constitution de la phrase de recherche ?

Merci beaucoup !

Commentaire de milkasoprano le 22/03/2006 12:18:08

Mal foutu ce script , serieux faut que tu rectifie ca  ! meme si ca date... verifie ce que tu met on pe pa non plus tjs deviner

Commentaire de houas007 le 23/12/2007 10:13:21

ok

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,933 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales