par
sadeq » 01 juin 2011, 15:09
De toutes façons tu peux utiliser un seul formulaire contenant tous les champs qui serviront comme critère de recherche et une seule requête SQL pour exécuter la recherche.
Mais, la première question qui s'impose est quelle est la combinaison logique que tu comptes utiliser entre les différents critères, est-ce un ET ou/et un OU? Pour pouvoir construire la clause WHERE de la requête SQL.
Si c'est un ET pour tous les champs du formulaire, alors c'est simple : ta requête utilisera un AND pour combiner toutes les conditions sur les champs dans clause Where. ça pourrait être comme ça:
$query = mysql_query("SELECT * FROM contact WHERE nom LIKE '%$nom%' AND adresse LIKE '%$adresse%' AND societe LIKE '%$societe%' ORDER BY societe DESC") or die (mysql_error());
Quand le formulaire de recherche est comme ça:
<p>Faire une recherche:</p>
<form action="recherche.php" method="post">
<input type="text" name="nom" size="20">
<input type="text" name="adresse" size="255">
<input type="text" name="societe" size="30">
<input type="submit" value="Rechercher">
</form>
Si la combinaison est un OU, il s'agit de la même solution que pour le ET il suffit simplement de remplacer AND par OR dans la requête SQL.
Par contre si les combinaisons ET/OU sont particulièrement distribuées entre les champs, il faudra que dans le formulaire l'utilisateur choisisse les combinaisons ET/OU avant de lancer la recherche puis au programme PHP de construire automatiquement la clause WHERE de la requête SQL. C'est la solution de recherche dynamique qu'on t'as déjà proposé dans les réponses précédentes. Mais j'attends ta réponse à mes questionnements, avant d'aller plus loin.
De toutes façons tu peux utiliser un seul formulaire contenant tous les champs qui serviront comme critère de recherche et une seule requête SQL pour exécuter la recherche.
Mais, la première question qui s'impose est quelle est la combinaison logique que tu comptes utiliser entre les différents critères, est-ce un ET ou/et un OU? Pour pouvoir construire la clause WHERE de la requête SQL.
Si c'est un ET pour tous les champs du formulaire, alors c'est simple : ta requête utilisera un AND pour combiner toutes les conditions sur les champs dans clause Where. ça pourrait être comme ça:
[php]
$query = mysql_query("SELECT * FROM contact WHERE nom LIKE '%$nom%' AND adresse LIKE '%$adresse%' AND societe LIKE '%$societe%' ORDER BY societe DESC") or die (mysql_error());[/php]
Quand le formulaire de recherche est comme ça:
[html]<p>Faire une recherche:</p>
<form action="recherche.php" method="post">
<input type="text" name="nom" size="20">
<input type="text" name="adresse" size="255">
<input type="text" name="societe" size="30">
<input type="submit" value="Rechercher">
</form>
[/html]
Si la combinaison est un OU, il s'agit de la même solution que pour le ET il suffit simplement de remplacer AND par OR dans la requête SQL.
Par contre si les combinaisons ET/OU sont particulièrement distribuées entre les champs, il faudra que dans le formulaire l'utilisateur choisisse les combinaisons ET/OU avant de lancer la recherche puis au programme PHP de construire automatiquement la clause WHERE de la requête SQL. C'est la solution de recherche dynamique qu'on t'as déjà proposé dans les réponses précédentes. Mais j'attends ta réponse à mes questionnements, avant d'aller plus loin.