Rechercher chaîne de caractères dans une table sur plusieurs champs

Répondre
smotte76
le 24/03/2011 à 20:06
smotte76
Bonjour,

J'ai créé un annuaire en PHP.
L'utilisateur peut :
- Saisir un nom et tous les noms des contacts correspondant apparaissent.
- Saisir un prénom et toues les prénoms des contacts apparaissent.
En revanche, lorsque je saisis le nom et le prénom, je rencontre un problème.
Exemple : si je saisie paul martin, le site m'affiche tous les martin et tous les paul.
Je voudrai qu'il me recherche l'expression entière. Le souci est que je recherche dans deux champs : nom et prénom.

En fait l'utilisateur doit pouvoir rechercher soit :
- par le nom
- par le prénom
- par l'expression exacte (ex : paul martin) sauf qu'il me sorte tous les martins.

Voici mon code si vous avez une idée ou un tuyau.

Merci beaucoup.

<?php
include("../connexion.php");
$sql = "select * from tadherents";
if (isset($_REQUEST["filtre"]))
{

$v_contact=$_GET['filtre'];

$v_nb=str_word_count($v_contact);

if ($v_nb==1)
{
$sql .= " where nom like '%$v_contact%' or prenom like '%$v_contact%'";
}
else
{

$mots = explode( " ", $v_contact );


$sql = "SELECT * FROM tadherents WHERE ";
for( $i = 0; $i < count( $mots ); $i++ ) {
$sql .= "nom LIKE '%". $mots[$i] ."%' OR prenom LIKE '%". $mots[$i] ."%'";
if( $i < count( $mots ) - 1 )
$sql.= " OR ";
}


}

}
$vresultat=mysql_query($sql);
?>
<HTML>
<H1>Résultat</H1>
<Form>
<input type="text" name="filtre">
<input type="submit" value="rechercher">
</Form>
<TABLE border=2 align=center>
<TR align='center'>
<TD>Nom</TD>
<TD>Prénom</TD>
<TD>Photo</TD>
</TR>
<?php while(($vligne = mysql_fetch_assoc($vresultat ))!==false): ?>
<TR>
<TD><?php echo $vligne["nom"];?></TD>
<TD><?php echo $vligne["prenom"];?></TD>
<TD><IMG SRC="/images/<?php echo $vligne ['photo']; ?>"></TD>
</TR>
<?php endwhile; ?>
</Table>
</UL>
</BODY>
</HTML>
Stéph
smotte76
le 24/03/2011 à 20:09
smotte76
J'ai oublié...

En gros le même principe que FaceBook.
Je me suis mal exprimé... Si je saisis "Paul Martin", je veux que les Paul martin et non tous les Martin (martin Pierre, martin alain...)
En revanche si je saisie que le mot martin il me sortira uniquement les personnes dont le nom est martin.

Merci par avance si vous avez une idée.
:)
Stéph
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours