par
Henri » 12 juil. 2006, 10:34
Je te donne le principe, après à toi de jouer ...
Par exemple, ton tableau a été affiché par cette requête
$sql= "select nom, prenom, codepostal, ville from utilisateur";
Pour trouver tes en-têtes de colonnes, il faut que tu fasses 4 requêtes de plus
Code : Tout sélectionner
select distinct nom from utilisateur order by nom
select distinct prenom from utilisateur order by prenom
select distinct codepostal from utilisateur order by codepostal
select distinct ville from utilisateur order by ville
Ces 4 requêtes vont te permettre de construire les listes déroulantes en haut de chaque colonne.
<select>
<option name=nom value="*">Toutes les valeurs</option>
<?php
for ($i=0; $i<count(nom); $i++) {
echo "<option name=nom value=\"$nom[$i]\">$nom[$i]</option>\n";
}
?>
</select>
Tu mets tout ça dans un formulaire qui réappelle la page en lui passant les paramètres en post. (note : il faut que tu trouves un petit bout de javascript qui fait le submit à chaque changement dans une liste).
En début de ta page, tu vas tester les paramètre $_POST["nom"], $_POST["prenom"], ... ce qui va te permettre de construire ta requête en dynamique
(if isNull($_POST['nom'])) {
$wherenom = "1=1 ";
elseif ($_POST['nom'] = "*") {
$wherenom = "1=1 ";
} else {
$wherenom = "nom=$_POST['nom'] ";
}
Même chose pour les autres paramètres et au final
$sql= "select nom, prenom, codepostal, ville from utilisateur WHERE $wherenom $whereprenom $wherecode $whereville";
PS : Je suis presque sûr qu'il existe des solutions en javascript (ou Ajax ?) qui te permette de faire le filtrage sans être obligé de refaire une requête.
Je te donne le principe, après à toi de jouer ...
Par exemple, ton tableau a été affiché par cette requête
[php]
$sql= "select nom, prenom, codepostal, ville from utilisateur";
[/php]
Pour trouver tes en-têtes de colonnes, il faut que tu fasses 4 requêtes de plus
[code]
select distinct nom from utilisateur order by nom
select distinct prenom from utilisateur order by prenom
select distinct codepostal from utilisateur order by codepostal
select distinct ville from utilisateur order by ville
[/code]
Ces 4 requêtes vont te permettre de construire les listes déroulantes en haut de chaque colonne.
[php]
<select>
<option name=nom value="*">Toutes les valeurs</option>
<?php
for ($i=0; $i<count(nom); $i++) {
echo "<option name=nom value=\"$nom[$i]\">$nom[$i]</option>\n";
}
?>
</select>
[/php]
Tu mets tout ça dans un formulaire qui réappelle la page en lui passant les paramètres en post. (note : il faut que tu trouves un petit bout de javascript qui fait le submit à chaque changement dans une liste).
En début de ta page, tu vas tester les paramètre $_POST["nom"], $_POST["prenom"], ... ce qui va te permettre de construire ta requête en dynamique
[php]
(if isNull($_POST['nom'])) {
$wherenom = "1=1 ";
elseif ($_POST['nom'] = "*") {
$wherenom = "1=1 ";
} else {
$wherenom = "nom=$_POST['nom'] ";
}
[/php]
Même chose pour les autres paramètres et au final
[php]
$sql= "select nom, prenom, codepostal, ville from utilisateur WHERE $wherenom $whereprenom $wherecode $whereville";
[/php]
PS : Je suis presque sûr qu'il existe des solutions en javascript (ou Ajax ?) qui te permette de faire le filtrage sans être obligé de refaire une requête.