Recherche dans base de données

Eléphanteau du PHP | 24 Messages

26 août 2005, 13:43

Salut,

Voila j'ai ma base de données sql créé avec phpmyadmin, elle fonctionne bien.
Elle repertorie une liste d'entreprise avec leur coordonnée. J'ai fais un site sur ces entreprises et j'aimerai inclure u systeme de recherche, par exemple lorsqu'on tape "paris" dans un champ texte d'un formulaire, je veux qu'il recherche dans ma base de données tous le mots contenant "paris" et qu'il affiche toutes les entreprises de paris que j'ai dans ma base.

Voila, j'attend de l'aide.

HD
Mammouth du PHP | 1181 Messages

27 août 2005, 15:34


Eléphant du PHP | 55 Messages

27 août 2005, 16:02

salut
en fait c'est tout simple, tu créé un formulaire comme ca par exemple:

Code : Tout sélectionner

<form method="post" action="trouver.php"> <br> <table border="1" cellspacing="0" cellpadding="0" bordercolor="#27476d" align="center" class="bordure" width="100%"> <tr> <td bgcolor="#315584"> <table border="0" cellspacing="0" cellpadding="2" align="center"> <tr> <td width="70"> <div align="left"> <input type="text" name="recherche" class="bouton"> </div> </td> <td> <input type="submit" name="submit" value="Recherche" class="bouton"> </td> </tr> </table> </td> </tr> </table> </form>
Et dans trouver.php:
<?
$db = mysql_connect('host','login','mdp') or die ("erreur de connexion");
mysql_select_db('bdd',$db) or die ("erreur de connexion base");

$req = mysql_query("SELECT * from nom_de_ta_table where texte LIKE '%$_POST[recherche]%' Order by titre Asc ") or die ("erreur sql ".mysql_error());
$nombre = mysql_num_rows($req);
?>
<i>Il y a <?php echo($nombre); ?>article(s) contenant «<?php echo($recherche); ?>».</i><br>
<?
// on affiche les résultats
while ( $resultat = mysql_fetch_array($req))
{
print '<a href="article.php&id='.$resultat[id].'">'.$resultat[titre].'</a><br>';
}

mysql_close();
?> 
Après <a href="article.php&id='.$resultat[id].'">'.$resultat[titre].'</a> peut changer, il suffit de mettre le '.$resultat[truc].' avec truc= une donnée de ta table, comme l'id, la date, le titre, etc...
Ta une demo ici: http://www.anneau-des-dieux.com/?page=wiki (en bas de la page, fait rechercher "stargate" par exemple)
Voila, je sais pas si c'est une super source? :?

Mammouth du PHP | 19672 Messages

27 août 2005, 16:15

Code : Tout sélectionner

<form method="post" action="trouver.php"> <br> <table border="1" cellspacing="0" cellpadding="0" bordercolor="#27476d" align="center" class="bordure" width="100%"> <tr> <td bgcolor="#315584"> <table border="0" cellspacing="0" cellpadding="2" align="center"> <tr> <td width="70"> <div align="left"> <input type="text" name="recherche" class="bouton"> </div> </td> <td> <input type="submit" name="submit" value="Recherche" class="bouton"> </td> </tr> </table> </td> </tr> </table> </form>
Plus lourd que ça, ça commence à devenir difficile ;)
Le même en plus simple:
<div style="text-align: center; background-color: #315584; border: 1px solid #27476d; padding: 3px 0">
<form method="post" action="trouver.php" style="margin: 0">
  <input type="text" name="recherche" class="bouton">&nbsp;<input type="submit" name="submit" value="Recherche" class="bouton">
</form>
</div>
D'autre part, il risque d'y avoir quelques surprises: les index des tableaux ne sont pas mis en chaine de caractères mais en constante, c'est le warning garanti: proposition de correction :
<?
$db = mysql_connect('host','login','mdp') or die ("erreur de connexion");
mysql_select_db('bdd',$db) or die ("erreur de connexion base");
$sql = "SELECT * FROM nom_de_ta_table WHERE texte LIKE '%". $_POST['recherche'] ."%' ORDER BY titre ASC ";
$req = mysql_query($sql) or die ("erreur sql ".mysql_error());
$nombre = mysql_num_rows($req);
?>
<i>Il y a <?php echo($nombre); ?>article(s) contenant «<?php echo($recherche); ?>».</i><br>
<?
// on affiche les résultats
while ( $resultat = mysql_fetch_array($req))
{
?>
<a href="article.php&id=<?php echo($resultat['id']); ?>"><?php echo($resultat['titre']); ?></a><br>
<?php
}
mysql_close();
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 55 Messages

27 août 2005, 17:11

lol je sais, c'est lourd, mais pour aller plus vite j'ai copié-collé le code de ma page directement ;) Les tableaux ne servent pas à grand chose... ;)
Merci pour l'amélioration, je vais en prendre compte ;)

Invité
Invité n'ayant pas de compte PHPfrance

29 août 2005, 08:30

Merci à tous les deux,

C'est la premiere fois que j'ecris un message sur ce forum et je suis pas decu ! --> Réponses rapides, completes et pertinantes.

PS : Il y a une petite erreur je crois dans le ligne :
<i>Il y a <?php echo($nombre); ?>article(s) contenant «<?php echo($recherche); ?>».</i><br>

On ne verra pas afficher le contenant " xxx " car "$recherche" n'est pas defini, j'ai mis "$_POST['recherche']" et ca tourne nikel.

@+

Mammouth du PHP | 19672 Messages

29 août 2005, 09:01

Un [Résolu] peut-être :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: