-
- <? php
- //LA PAGE PHP searching.php
- //BON, LE DEBUT EST CONNU:
- include('votre fichier de configuration.inc.php')
-
- //OU DIRECTEMENT
- $mysql_host = 'localhost'; // entrer votre hote ici
- $mysql_user = 'root'; // entrer votre login
- $mysql_password = ''; // entrer votre password
- $mysql_base = 'mabase'; // entrer le nom de votre base
- $db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("erreur de connexion");
- mysql_select_db($mysql_base,$db) or die ("erreur de connexion base");
-
- // Vérification du champ de formulaire de recherche (s'il est vide)
- if(empty($recherche))
- {
- echo"<p align=center><font color=red face=Verdana size=2>Vous devez saisir un mot clé
- pour effectuer une recherche";
- include('search.htm');
- exit;
- }
-
- // CE QUI SUIT C'EST POUR AFFICHER TOUT GENRE DE CARACTERES ET ENLEVER LES SALASHES DEVANT
- // LES APOSRTROPHES
-
- // $recherche c'est la variable du champ de saisie de formulaire de recherche dans la page //search.htm et qui va revenir à chaque fois que la page search.htm revient par include
- $recherche = Stripslashes($recherche);
- $produit = Stripslashes($produit);
- $societe = Stripslashes($societe);
- $description = Stripslashes($description);
- $prix = Stripslashes($prix);
- // le champ url ne supporte pas les caractères çàé* etc biensur (l'adresse d'un site Web) donc //pas besoin de Stripslashes
- $keywords = Stripslashes($keywords);
-
-
-
-
- // les "@" avant les requetes c'est pour éviter les messages d'erreurs qui peuvent intéresser //les intrus pour l'attaque de votre site, c'est bénifique aussi pour forcer la page à afficher //des mots contenant apostrophe...
-
- // Dans la ligne sivante les résultats s'afficherons par ordre alphabétique grace à //l'expression ORDER BY PRODUIT ASC,on peut mettre n'importe champ à la place de produit mais //les résultats suivrons dans ce cas l'ordre alphabétique de ce champ choisit, il y a d'autres //possibilités:
- //par exemple ORDER BY DATE ASC, classés par date le plus ancien au plus récent à noter que le //champ date sera nécéssaire si les produits sont référenciés par l'intermidiaire d'un //formulaire mis à la disposition des visiteurs mais si le webmaster qui insere les //informations pour n'importe type d'articles ce champs (date) ne serait pas d'importance. En //cas ou on enlève l'expression ORDER BY....les résultats s'afficherons en ordre en fonction de //leurs Id par défaut.
-
- $sql = "SELECT produit,societe,description,prix,url FROM annuaire WHERE keywords LIKE %$recherche%' order by produit ASC";
- $req = @mysql_query($sql);
- $res= @mysql_num_rows($req);
-
- //Si le nombre de résultat est superieur à zero
- if($res>0)
- {
- echo "<p align=center><b><font color=navy face=Verdana size=3><span style=background-color:aqua>Résultats de la recherche</span></font></b></p><br><font color=black face=Verdana size=2>Pour le mot <b>".$recherche."</b> il y a <b>$res</b> résultat(s)<br><br>";
- }
- //Sinon
- else
- {
- echo "<p align=center><b><font color=navy face=Verdana size=3 ><span style=background-color:aqua>Résultats de la recherche</span></font></b></p><br><br><font color=black face=Verdana size=2>Aucun résultat pour la recherche sur <b>$recherche</b><br>
- Essayez avec un autre orthographe ou un autre produit";
- include('search.htm');
- exit;
- }
-
- //Voici la boucle
- while( $sortie = mysql_fetch_array($req))
- {
-
- //C'EST LE PLUS IMPORTANT , NUMEROTATION DES RESULTATS (PETITE BOUCLE AU SEIN DE LA PREMIERE)
- // static = se souvient de la valeur a l'appel precedent
- static $i=1 ;
- //S'il y a un seul résultat rien ne s'écrit comme numérotation ou vous pouvez mettre une //expression: echo "le seul résultat"; au lieu du vide
- if ($i==1 && $res==1)
- {
- echo "";
- }
- //S'il y a plus qu'un résultat, pour le premier résultat il s'écrit comme numérotation
- //1er résultat
- if ($i==1 && $res>1)
- {
- echo "<font color=orange><b>$i er</b></font> résultat<br>";
- }
- //S'il y a plus qu'un résultat pour le reste des résultat il s'écrit comme numérotation
- //2ème résultat , 3ème résultat......
- if ($i!=1)
- {
- echo "<font color=orange><b>$i ème</b></font> résultat<br>";
- }
- //de toute façon on peut enlever "er" et "ème" après la vriable $i dans les 3 conditions et //on obtiendra que des chiffres purs .
- //Incrémentation des résultats par un à chaque résultat
- $i++ ;
- //FIN DE LA PETITE BOUCLE (L'OBJET PRINCIPAL DE CE SCRIPT,"NUMEROTATION DES RESULTATS")
-
- //AFFICHAGE DES RESULTATS TROUVES
- print "<b><br><font color=navy>Nom de produit:</font></b> $sortie[produit].<br>";
- print "<b><br><font color=navy>Société productrice:</font></b> $sortie[societe].<br>";
- print "<b><br><font color=navy>Description:</font></b> $sortie[description].<br>";
- print "<b><br><font color=navy>Prix:</font></b> $sortie[prix].<br><br>";
- print "<b><font color=navy>Adresse URL:</font></b><br>";
- //Si aucune url n'est spécifiée pour la société dans la base de données
- if (empty($sortie[url])) {
- print "Aucune adresse URL n'est spécifiée<br><br>";
- }
- //Sinon l'adresse apprait et sous forme de lien Hyper Text
- else{
- print"<a href='$sortie[url]'>$sortie[url].</a><br><br>";
- }
- //On sépare les résultats par une barre hr avec couleur et taille configurables
- print "<hr color=#FF6666 size=2><br>";
- }
- //FIN DE LA BOUCLE
-
- //Après l'affichage des résultats trouvés(numérotés), on peut effectuer une autre recherche
- echo "Effectuer une autre recherche";
- include('search.htm');
- exit;
-
-
- //Il faut toujours penser à fermer la connexion
- mysql_close();
- //On libère la mémoire
- mysql_free_result ;
-
-
- //Conseil, suivez les étapes et commentaires, une fois vous avez tout compris enlevez les //commentaires sans oublier de garder une copie de ce code commenté pour la nécéssité
-
- // Ce code (php+mysql) est testé sous apache / Windows XP , ça marchait parfaitement avec moi.
- // Des problèmes? Serai ravis de recevoir vos messages/commentaires à: sidoummoudz@yahoo.fr
-
- //Je sai que j'ai mis trop de commentaires. J'espère qu'il searait utile à tous comme meme, à++
-
- ?>
-
-
<? php
//LA PAGE PHP searching.php
//BON, LE DEBUT EST CONNU:
include('votre fichier de configuration.inc.php')
//OU DIRECTEMENT
$mysql_host = 'localhost'; // entrer votre hote ici
$mysql_user = 'root'; // entrer votre login
$mysql_password = ''; // entrer votre password
$mysql_base = 'mabase'; // entrer le nom de votre base
$db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("erreur de connexion");
mysql_select_db($mysql_base,$db) or die ("erreur de connexion base");
// Vérification du champ de formulaire de recherche (s'il est vide)
if(empty($recherche))
{
echo"<p align=center><font color=red face=Verdana size=2>Vous devez saisir un mot clé
pour effectuer une recherche";
include('search.htm');
exit;
}
// CE QUI SUIT C'EST POUR AFFICHER TOUT GENRE DE CARACTERES ET ENLEVER LES SALASHES DEVANT
// LES APOSRTROPHES
// $recherche c'est la variable du champ de saisie de formulaire de recherche dans la page //search.htm et qui va revenir à chaque fois que la page search.htm revient par include
$recherche = Stripslashes($recherche);
$produit = Stripslashes($produit);
$societe = Stripslashes($societe);
$description = Stripslashes($description);
$prix = Stripslashes($prix);
// le champ url ne supporte pas les caractères çàé* etc biensur (l'adresse d'un site Web) donc //pas besoin de Stripslashes
$keywords = Stripslashes($keywords);
// les "@" avant les requetes c'est pour éviter les messages d'erreurs qui peuvent intéresser //les intrus pour l'attaque de votre site, c'est bénifique aussi pour forcer la page à afficher //des mots contenant apostrophe...
// Dans la ligne sivante les résultats s'afficherons par ordre alphabétique grace à //l'expression ORDER BY PRODUIT ASC,on peut mettre n'importe champ à la place de produit mais //les résultats suivrons dans ce cas l'ordre alphabétique de ce champ choisit, il y a d'autres //possibilités:
//par exemple ORDER BY DATE ASC, classés par date le plus ancien au plus récent à noter que le //champ date sera nécéssaire si les produits sont référenciés par l'intermidiaire d'un //formulaire mis à la disposition des visiteurs mais si le webmaster qui insere les //informations pour n'importe type d'articles ce champs (date) ne serait pas d'importance. En //cas ou on enlève l'expression ORDER BY....les résultats s'afficherons en ordre en fonction de //leurs Id par défaut.
$sql = "SELECT produit,societe,description,prix,url FROM annuaire WHERE keywords LIKE %$recherche%' order by produit ASC";
$req = @mysql_query($sql);
$res= @mysql_num_rows($req);
//Si le nombre de résultat est superieur à zero
if($res>0)
{
echo "<p align=center><b><font color=navy face=Verdana size=3><span style=background-color:aqua>Résultats de la recherche</span></font></b></p><br><font color=black face=Verdana size=2>Pour le mot <b>".$recherche."</b> il y a <b>$res</b> résultat(s)<br><br>";
}
//Sinon
else
{
echo "<p align=center><b><font color=navy face=Verdana size=3 ><span style=background-color:aqua>Résultats de la recherche</span></font></b></p><br><br><font color=black face=Verdana size=2>Aucun résultat pour la recherche sur <b>$recherche</b><br>
Essayez avec un autre orthographe ou un autre produit";
include('search.htm');
exit;
}
//Voici la boucle
while( $sortie = mysql_fetch_array($req))
{
//C'EST LE PLUS IMPORTANT , NUMEROTATION DES RESULTATS (PETITE BOUCLE AU SEIN DE LA PREMIERE)
// static = se souvient de la valeur a l'appel precedent
static $i=1 ;
//S'il y a un seul résultat rien ne s'écrit comme numérotation ou vous pouvez mettre une //expression: echo "le seul résultat"; au lieu du vide
if ($i==1 && $res==1)
{
echo "";
}
//S'il y a plus qu'un résultat, pour le premier résultat il s'écrit comme numérotation
//1er résultat
if ($i==1 && $res>1)
{
echo "<font color=orange><b>$i er</b></font> résultat<br>";
}
//S'il y a plus qu'un résultat pour le reste des résultat il s'écrit comme numérotation
//2ème résultat , 3ème résultat......
if ($i!=1)
{
echo "<font color=orange><b>$i ème</b></font> résultat<br>";
}
//de toute façon on peut enlever "er" et "ème" après la vriable $i dans les 3 conditions et //on obtiendra que des chiffres purs .
//Incrémentation des résultats par un à chaque résultat
$i++ ;
//FIN DE LA PETITE BOUCLE (L'OBJET PRINCIPAL DE CE SCRIPT,"NUMEROTATION DES RESULTATS")
//AFFICHAGE DES RESULTATS TROUVES
print "<b><br><font color=navy>Nom de produit:</font></b> $sortie[produit].<br>";
print "<b><br><font color=navy>Société productrice:</font></b> $sortie[societe].<br>";
print "<b><br><font color=navy>Description:</font></b> $sortie[description].<br>";
print "<b><br><font color=navy>Prix:</font></b> $sortie[prix].<br><br>";
print "<b><font color=navy>Adresse URL:</font></b><br>";
//Si aucune url n'est spécifiée pour la société dans la base de données
if (empty($sortie[url])) {
print "Aucune adresse URL n'est spécifiée<br><br>";
}
//Sinon l'adresse apprait et sous forme de lien Hyper Text
else{
print"<a href='$sortie[url]'>$sortie[url].</a><br><br>";
}
//On sépare les résultats par une barre hr avec couleur et taille configurables
print "<hr color=#FF6666 size=2><br>";
}
//FIN DE LA BOUCLE
//Après l'affichage des résultats trouvés(numérotés), on peut effectuer une autre recherche
echo "Effectuer une autre recherche";
include('search.htm');
exit;
//Il faut toujours penser à fermer la connexion
mysql_close();
//On libère la mémoire
mysql_free_result ;
//Conseil, suivez les étapes et commentaires, une fois vous avez tout compris enlevez les //commentaires sans oublier de garder une copie de ce code commenté pour la nécéssité
// Ce code (php+mysql) est testé sous apache / Windows XP , ça marchait parfaitement avec moi.
// Des problèmes? Serai ravis de recevoir vos messages/commentaires à: sidoummoudz@yahoo.fr
//Je sai que j'ai mis trop de commentaires. J'espère qu'il searait utile à tous comme meme, à++
?>