Moteur de recherche

Eléphant du PHP | 440 Messages

17 déc. 2006, 17:30

Bonjour,

est-il possible d'avoir un vrai moteur de recherche qui extrairait les résultats à partir d'un code php ? Ce code reprend en tableau les données d'une base MySql. L'idée est que la recherche ressorte en tableau les éléments trouvés.

Pour l'instant j'ai ce script en guise de moteur :

Code : Tout sélectionner

<form name="search" onSubmit="return findInPage(this.quoi.value);"> <font size=3> <input name="quoi" type="text" size=50 onChange="n = 0;" onclick="rechercher.value='Rechercher';javascript:DesactiveTouches();"> </font> <input type="submit" name="rechercher" value="Rechercher" onClick="this.value='Rechercher encore';javascript:ActiveTouches();"> </form>
Merci pour vos réponses.

Eléphant du PHP | 445 Messages

17 déc. 2006, 17:38

Tu peux faire un moteur de recherche basé sur la clause LIKE en MySQL par exemple.

Les données qui ressortiraient de ta requête pourraient être affichées simplement sous forme de tableau HTML.
LLDC
Ulti

Eléphant du PHP | 440 Messages

17 déc. 2006, 18:12

y a-t-il des exemples de scripts quelque part ?

Eléphant du PHP | 78 Messages

17 déc. 2006, 19:12

Si j'ai bien compris tu désiré faire un moteur de recherche par rapport a des pages php c'est ca ?

Ou alors j'ai mal compris :?

Eléphant du PHP | 445 Messages

17 déc. 2006, 22:31

Le script n'est pas très compliqué :
<?php

$recherche = $_POST['recherche']; // Données du formulaire de recherche, entrées par l'utilisateur

$liste = mysql_query("SELECT * FROM table WHERE champ LIKE '%".$recherche."%'"); // On sélectionne tous les champs de la table où la valeur que l'on veut comparer est égale à celle rentrée par l'utilisateur... Les signes % servent de joker

echo '<table>';
echo '<tr>';
echo '<td>Champ</td>';
echo '</tr>';
  
while($sql = $liste)  {
 
  echo '<tr>';
  echo '<td>'.$sql['champ'].'</td>';
  echo '</tr>';

}

echo '</table>';

?>
Pas testé, mais c'est dans l'idée de ce que tu recherches, afficher sous forme de tableau les résultats d'une recherche dans une base de données.

Cela nécessite au préalable un formulaire permettant de rentrer la valeur 'recherche'.

Si il y a quelque chose que tu en comprends pas, n'hésite pas.
LLDC
Ulti

Eléphant du PHP | 440 Messages

18 déc. 2006, 00:25

Le script n'est pas très compliqué :
<?php

$recherche = $_POST['recherche']; // Données du formulaire de recherche, entrées par l'utilisateur

$liste = mysql_query("SELECT * FROM table WHERE champ LIKE '%".$recherche."%'"); // On sélectionne tous les champs de la table où la valeur que l'on veut comparer est égale à celle rentrée par l'utilisateur... Les signes % servent de joker

echo '<table>';
echo '<tr>';
echo '<td>Champ</td>';
echo '</tr>';
  
while($sql = $liste)  {
 
  echo '<tr>';
  echo '<td>'.$sql['champ'].'</td>';
  echo '</tr>';

}

echo '</table>';

?>
Pas testé, mais c'est dans l'idée de ce que tu recherches, afficher sous forme de tableau les résultats d'une recherche dans une base de données.

Cela nécessite au préalable un formulaire permettant de rentrer la valeur 'recherche'.

Si il y a quelque chose que tu en comprends pas, n'hésite pas.
Le formulaire ce serait quoi ? une zone de texte et bouton Submit ?
Débutant complet en php/mysql. Merci pour votre aide.

ViPHP
ViPHP | 1961 Messages

18 déc. 2006, 01:53

Bonsoir,

Les champs ou tu dois faire ta recherche sont de quel type?

Regarde le full-text de MySQL.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 440 Messages

18 déc. 2006, 10:54

full-text ?

varchar, si j'ai bien compris la question !!
Débutant complet en php/mysql. Merci pour votre aide.

Eléphant du PHP | 440 Messages

18 déc. 2006, 10:54

full-text ?

varchar, si j'ai bien compris la question !!
Débutant complet en php/mysql. Merci pour votre aide.

Mammouth du PHP | 19672 Messages

18 déc. 2006, 10:55

Non, il a bien écrit "full-text" et il a même mis un lien que tu devrais suivre.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 440 Messages

18 déc. 2006, 11:02

j'ai bien lu la page en lien. c'est du charabia pour moi !
Débutant complet en php/mysql. Merci pour votre aide.

Mammouth du PHP | 19672 Messages

18 déc. 2006, 17:04

FULL TEXT est une sorte d'index dans MySQL au même titre que PRIMARY KEY ou KEY voire même FOREIGN KEY avec InnoDB. Ça permet de faire des recherches avec tri par pertinence.

Lis la doc moins vite et fais des essais avec les exemples de la doc, puis pousse plus loin en testant avec tes propres bases.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 440 Messages

14 janv. 2007, 13:36

echo '<table>'; 
echo '<tr>'; 
echo '<td>Champ</td>'; 
echo '</tr>'; 
   
while($sql = $liste)  { 
  
  echo '<tr>'; 
  echo '<td>'.$sql['champ'].'</td>'; 
  echo '</tr>'; 

} 

echo '</table>'; 

?> 
j'ai essayé en recopiant ce code autant de fois qu'il y a de champs et en remplaçant le mot "champ" par le nom du champ, mais ça ne fonctionne pas.
Débutant complet en php/mysql. Merci pour votre aide.