Tom's Guide > Forum > Programmation > Creation d'un systeme de recherche

Creation d'un systeme de recherche

Forum Programmation : Creation d'un systeme de recherche

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour ,

Je souhaiterais creer un module de recherche qui permettrais de retrouver des mots , je voudrais en tapant par exemple photoshop , retrouver ce mot dans une liste préalablement fait avec une definition de ce mot .

Est ce que quelqu un pourrait m'aider pour faire ce module de recherche ?

Merci


Message édité par rocket_270@IDN le 31-08-2006 à 12:42:19
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Tu peux écrire ta liste comme ça (liste.txt) :

Citation :

photoshop | Logiciel d'édition d'images professionnel qui coûte la peau du cul
truc | définition
...



Et le script php :

Citation :

<?php
$fichier = file('http://XXXXXXXX/liste.txt');

for ($i=0;$i<count($fichier); $i++)
{
$ligne = explode(" | ",$fichier[$i]);
if ($ligne[0] == $recherche)
{
echo $ligne[1] . "\n";
}
}
?>



Si ce fichier est nommé recherche.php, l'adresse pour avoir la définition de photoshop sera :
http://XXXXXXXX/recherche.php?recherche=photoshop

Répondre à Rennou

Ca ne marche pas


Message édité par rocket_270@IDN le 29-08-2006 à 01:01:25
Répondre à rocket_270@IDN

Voila ce que ca mets quand je lance recherche.php:

Warning: file(): php_network_getaddresses: gethostbyname failed in c:\program files\easyphp1-8\www\site\recherche.php on line 2

Warning: file(http://XXXXXXXX/liste.txt): failed to open stream: No error in c:\program files\easyphp1-8\www\site\recherche.php on line 2

Notice: Undefined variable: recherche in c:\program files\easyphp1-8\www\site\recherche.php on line 7

Notice: Undefined offset: 1 in c:\program files\easyphp1-8\www\site\recherche.php on line 9

Répondre à rocket_270@IDN

Tu t'es gouré dans l'adresse.

Remplace :
c:\program files\easyphp1-8\www\site\recherche.php
par
http://localhost/site/recherche.php

Répondre à Rennou

Maintenant voila ce qui s'affiche :

Not Found
The requested URL /site/recherche.php was not found on this server.

Apache/1.3.33 Server at localhost Port 80

Sinon ca serais pour mon utilisation personnelle .

Répondre à rocket_270@IDN

Mais si mais si ^^

Ton problème est que tu ne sais pas décoder précisemment une URL...
Comme on te l'a dit, dans ton navigateur avec le serveur lancé tu devra mettre http://localhost/recherche.php et SI NECESSAIRE (ça n'est pas obligatoire) rajouter le nom du dossier qui contient ton fichier recherche.php...DANS TOUS LES CAS, ton dossier contenant le fichier DOIT se trouver dans le dossier www de EasyPHP

Exemple: Ton fichier se trouve sur ton disque au chemin c:\program files\EasyPHP\www\Siteweb1\recherche.php . Alors tu rentrera comme URL http://localhost/Siteweb1/recherche.php

Si ton fichier se trouve simplement à c:\program files\EasyPHP\www\recherche.php alors dans l'URL tu n'auras plus qu'a taper http://localhost/recherche.php

@+

Répondre à Nisnor

j'ai plus de message d'erreur mais ca ouvre sur une page blanche , pas de module de recherche.


Message édité par rocket_270@IDN le 31-08-2006 à 11:46:42
Répondre à rocket_270@IDN

Normal car avec le code que l'on t'as fourni, tu as le module de recherche mais pas celui qui te permet de modifier ce module pour entrer les paramètres de ta recherche...

  • Voici donc ton "nouveau" module de recherche que tu met à la place du code existant dans recherche.php:
Citation :

<?php
$reponse_fichier = file('http://XXXXXXXX/liste.txt');//Récupération des données du fichier sous forme d'array. Une ligne fichier = une ligne indexée dans l'array $reponse_fichier

foreach ($reponse_fichier as $ligne){//Plus efficace et plus simple que la commande for(...). Elle scanne automatiquement toutes les lignes de l'array donné en argument et le stocke temporairement dans la deuxième variable $ligne
$data = explode(" | ",$ligne);//Coupe la chaine de caractère dans un array a chaque occurence du caractère | contenu dans $ligne
if ($data[0] == $_POST['recherche']){//Vérifie si le 1er élément du tableau d'information (=nom du logiciel) est égal au nom demandé
echo ($data[1]."\n" );//Si la condition est vérifiée, affiche la description contenue dans la 2eme cellule de l'Array (=description du logiciel)
}
}?>



  • Ici, le code a copier-coller dans un fichier nommé "chercher.html" qui DOIT se trouver dans le même dossier que recherche.php. Sans ça, ça ne marchera jamais:
Citation :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
</head>
<body>
<form method="post" action="recherche.php">
<label>Nom du logiciel a chercher:<input type="text" name="recherche"/></label>
<input type="submit" value="Rechercher"/>
</form>
</body>
</html>



  • Et voila le système prêt...Maintenant tu ouvre ton navigateur et tu rentre les adresses qu'on t'as déjà donné en oubliant pas de remplacer "recherche.php" par "chercher.html". Normalement ça devrai fonctionner


@+


Message édité par Nisnor le 31-08-2006 à 12:26:36
Répondre à Nisnor

Merci pour foreach, je vais essayer sur mon site.

Répondre à Rennou

Y'a pas de quoi ;)
Note: Je vient de remarquer une erreur de cohérence entre les commentaire et le code...J'arrange ça de suite


Message édité par Nisnor le 31-08-2006 à 12:26:12
Répondre à Nisnor

Merci ca marche nickel ,et sinon une petite derniere si je voudrais rechercher une ligne d'un rapport hijackthis il faudrait que je mette quoi voici un exemple:
O2 - BHO: AcroIEHlprObj Class - {06849E9F-C8D7-4D59-B87D-784B7D6BE0B3} - C:\Program Files\Adobe\Acrobat 7.0\ActiveX\AcroIEHelper.dll


Message édité par rocket_270@IDN le 31-08-2006 à 12:42:08
Répondre à rocket_270@IDN
- 0 +

là faut passer par des regexp, mais vu qu'il a fallu tout te coder, je pense pas que t'y arrivera tout seul !

Répondre à OmaR

Bin tu cherche un attribut de ligne de ce rapport qui est strictement différent d'une ligne a une autre, tu regarde si il se trouve un caractère qui ne bouge pas juste après et dans le script PHP, tu remplace | par ton caractère constant et dans le champ sur le navigateur, tu dois rentrer le paramètre variant que tu as repéré et qui sera spécifique a une ligne (ou a un ensemble de ligne concernant le meme évennement)

Répondre à Nisnor

Ok je pense que je vais faire par processus et par dll , comme ca je devrais pouvoir y arriver.

Sinon ces quoi regxp.?


Message édité par rocket_270@IDN le 31-08-2006 à 13:49:06
Répondre à rocket_270@IDN

Les regexp ce sont des expressions régulière qui peuvent te permettre de rechercher/vérifier/remplacer une certaine forme(structure?!!) dans les chaines de caractères.

Répondre à Nisnor
Tom's Guide > Forum > Programmation > Creation d'un systeme de recherche
Aller à :

Il y a 1612 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens