Accueil > > > NUMÉROTATION DES RÉSULTATS DE RECHERCHE AVEC PHP+MYSQL+TRUCS
NUMÉROTATION DES RÉSULTATS DE RECHERCHE AVEC PHP+MYSQL+TRUCS
Information sur la source
Description
Imaginant qu'on a réalisé une base de données avec une table contenant des informations mises à la disposition des visiteurs pour y rechercher des articles (sorte d'un petit annuaire),on cherche maintenant à savoir le nombre de résultats trouvés mais le plus important c'est de les numéroter respectivement. - On crée la table par exemple `annuaire` qui contient les champs `id` `date` `produit` `société` `description` `prix` `url` et `keywords` ce dernier contient les mots clefs - On crée ensuite une page "search.htm" contenant un formulaire de recherche dont le champ de saisie des mots clefs est "recherche", voici le code HTML de cette page: <html> <head> <title>Recherche</title> </he ad> <body bgcolor="white" text="black" link="blue" vlink="purple" alink="red"> <p> </p> <p> </p> <p> </p> <form name="form1" method="post" action="searching.php"> <p align="center"><font face="Verdana"><span style="font-size:9pt;"><b>Recherche dans notre base</b></span></font></p> <p align="left" style="line-height:100%; margin-top:0; margin-bottom:0;"><font face="Verdana"><span style="font-size:8pt;"> &nb sp;   ; & nbsp; Entrez un mot clef</span></font></p> <p align="center" style="line-height:100%; margin-top:0; margin-bottom:0;"> <input type="text" name="recherche" size="30"> <input type="submit" name="submit" value="Rechercher"></p> </form> </body> </html>
Source
-
- <? 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, à++
?>
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE?[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE? par JeremyJeanson
Avec la sortie de la RC de Visual Studio 2010, Microsoft a mis un peu les points sur leS i en ce qui concernait le passage d'arguments. Mais nous somme un certain nombre à avoir pris ce changement comme un coup dur. Pour résumer la situation : à la sortie...
Cliquez pour lire la suite de l'article par JeremyJeanson [RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|