Page 1 sur 1

Recherche dans base de données

Posté : 26 août 2005, 13:43
par kenshin
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.

Posté : 27 août 2005, 15:34
par HD

Posté : 27 août 2005, 16:02
par Ðjehouty
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? :?

Posté : 27 août 2005, 16:15
par Cyrano

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();
?>

Posté : 27 août 2005, 17:11
par Ðjehouty
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 ;)

Posté : 29 août 2005, 08:30
par Invité
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.

@+

Posté : 29 août 2005, 09:01
par Cyrano
Un [Résolu] peut-être :?: