Page 1 sur 1

Moteur de recherche

Posté : 17 déc. 2006, 17:30
par cmoi
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.

Posté : 17 déc. 2006, 17:38
par Ultim4T0m
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.

Posté : 17 déc. 2006, 18:12
par cmoi
y a-t-il des exemples de scripts quelque part ?

Posté : 17 déc. 2006, 19:12
par winni
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 :?

Posté : 17 déc. 2006, 22:31
par Ultim4T0m
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.

Posté : 18 déc. 2006, 00:25
par cmoi
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 ?

Posté : 18 déc. 2006, 01:53
par Ajoloca
Bonsoir,

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

Regarde le full-text de MySQL.

Posté : 18 déc. 2006, 10:54
par cmoi
full-text ?

varchar, si j'ai bien compris la question !!

Posté : 18 déc. 2006, 10:54
par cmoi
full-text ?

varchar, si j'ai bien compris la question !!

Posté : 18 déc. 2006, 10:55
par Cyrano
Non, il a bien écrit "full-text" et il a même mis un lien que tu devrais suivre.

Posté : 18 déc. 2006, 11:02
par cmoi
j'ai bien lu la page en lien. c'est du charabia pour moi !

Posté : 18 déc. 2006, 17:04
par Cyrano
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.

Posté : 14 janv. 2007, 13:36
par cmoi
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.