petit pb avec un select
Posté : 04 avr. 2007, 16:08
Bonjour la communauté,
je crée actuellement une page qui doit m'afficher un tableau de valeurs (11 colonnes) généré par une requête. La particularité de ce tableau c'est qu'il possède en en-tête de chaque colonne une liste déroulante permettant à l'utilisateur de filtrer les résultats affichés, comme il pourrait le faire sur Excel avec la fonction "filtre automatique". Tout se passe impeccable pour l'instant : mon tableau s'affiche trés bien, les <SELECT> sont bien positionnés correctement et sont remplis avec les bonnes valeurs permettant d'éxécuter le filtrage. J'en suis maintenant à la dernière étape : récuperer la(les) valeur(s) selectionnée(s) par l'utilisateur dans le (ou les) <SELECT> pour réafficher le tableau correctement filtré. Pour comprendre le principe je travaille pour l'instant uniquement sur le première colonne (colonne "annee") en me disant que si j'arrive à coder pour le 1er <SELECT>, il suffira juste de réappliquer le principe sur les 10 autres. Mon problème c'est que quelquesoit la valeur que je sélectionne dans ce <SELECT>, c'est toujours la même valeur qui m'est renvoyé, à savoir la valeur "*" (définie dans le <SELECT> comme la valeur "Tous"). Pourriez vous m'aider? Je pense que la solution ne doit pas être trés loin mais je ne la vois pas.
Voici mon code :
La page :
en début de page je récupère la valeur du >SELECT> annee :
puis les <SELECT>
Par contre, voiçi les fonctions que j'utilise dans un fichier externe pour construire les <SELECT>
Merci d'avance pour vos réponses
je crée actuellement une page qui doit m'afficher un tableau de valeurs (11 colonnes) généré par une requête. La particularité de ce tableau c'est qu'il possède en en-tête de chaque colonne une liste déroulante permettant à l'utilisateur de filtrer les résultats affichés, comme il pourrait le faire sur Excel avec la fonction "filtre automatique". Tout se passe impeccable pour l'instant : mon tableau s'affiche trés bien, les <SELECT> sont bien positionnés correctement et sont remplis avec les bonnes valeurs permettant d'éxécuter le filtrage. J'en suis maintenant à la dernière étape : récuperer la(les) valeur(s) selectionnée(s) par l'utilisateur dans le (ou les) <SELECT> pour réafficher le tableau correctement filtré. Pour comprendre le principe je travaille pour l'instant uniquement sur le première colonne (colonne "annee") en me disant que si j'arrive à coder pour le 1er <SELECT>, il suffira juste de réappliquer le principe sur les 10 autres. Mon problème c'est que quelquesoit la valeur que je sélectionne dans ce <SELECT>, c'est toujours la même valeur qui m'est renvoyé, à savoir la valeur "*" (définie dans le <SELECT> comme la valeur "Tous"). Pourriez vous m'aider? Je pense que la solution ne doit pas être trés loin mais je ne la vois pas.
Voici mon code :
La page :
en début de page je récupère la valeur du >SELECT> annee :
if( !isset($_POST['annee'])) {
$wherenom = "1=1 ";}
elseif ($_POST['annee'] = "*") {
$wherenom = "1=1 ";
} else {
$wherenom = "annee=".$_POST['annee']." ";
}
echo $_POST['annee']; //pour tester
echo "<br>"; //pour tester
echo $wherenom; //pour tester
La requête pour extraire les infos du tableau:
$requete = "SELECT annee,typ,numaffaire,av,responsable,descriptif,client,totalht,labo,
typcontrat,resp_scien FROM $IdUser";
$ReqDroita = mysql_query($requete,$db) or die('Erreur SQL !<br>'.mysql_error());
j'affiche le tableau (en-tête de colonnes):
Code : Tout sélectionner
<table border="0" cellpadding="0" cellspacing="0" width="980" align="center">
<tr><td class="h13">
<table border="1" width="980" align="center">
<tr>
<td class="h6c">Année</td>
<td class="h6c">Type</td>
<td class="h6c">N° Affaire</td>
<td class="h6c">Av.</td>
<td class="h6c">Responsable</td>
<td class="h6c">Descriptif</td>
<td class="h6c">Client</td>
<td class="h6c">Total HT</td>
<td class="h6c">Labo</td>
<td class="h6c">Type Contrat</td>
<td class="h6c">Resp. Scientifique</td>
//mise en place des select
echo "<tr>";
echo "<form name='chgfiltr' action='' method='post' id='chgfiltr'>";
$latable = 0;
$nom_colonne = null;
$nom_colonne = array('annee','typ','numaffaire','av','responsable','descriptif','client','totalht','labo','typcontrat','resp_scien');
for($i=0;$i<sizeof($nom_colonne);$i++)
{
echo "<td>";
$nomduchamp = $nom_colonne[$i];
$codehtml = arraytoselect(pour_select($nomduchamp,$IdUser,$wherecond,$Labo,$cond,$latable),$nomduchamp);
echo $codehtml;
echo "</td>";
}
echo "</form>";
echo "</tr>";
//fin mise en place des selects
Enfin j'affiche les données du tableau (mais ca je vous en fais grâce).Par contre, voiçi les fonctions que j'utilise dans un fichier externe pour construire les <SELECT>
function pour_select($nomduchamp,$IdUser,$wherecond,$Labo,$cond,$latable)
{
//-------------------------------
//Connexion à la base
//----------------------
require('conf.php');
$db = mysql_connect($host,$user,$password);
mysql_select_db($database,$db);
//déclaration du tableau
$tablo = null;
$tablo = array();
if($cond ==0){
$req = "SELECT DISTINCT $nomduchamp FROM $IdUser WHERE $wherecond ORDER BY $nomduchamp";}
if($cond ==1){
$req = "SELECT DISTINCT $nomduchamp FROM $IdUser,$latable WHERE $wherecond ORDER BY $nomduchamp";}
$res = mysql_query($req) or die (mysql_error());
while($row = mysql_fetch_array($res))
{
$tablo[] = $row[$nomduchamp];
}
//print_r($tablo);
return $tablo;
}
function arraytoselect ($tablo,$nomduchamp)
{
//-------------------------------
//Connexion à la base
//----------------------
require('conf.php');
$db = mysql_connect($host,$user,$password);
mysql_select_db($database,$db);
$select = "<select name=\"$nomduchamp\" id=\"$nomduchamp\" onchange=\"document.chgfiltr.submit()\">\n";
$select .="<option value=\"*\">Tous</option>";
for ($i=0; $i<count($tablo); $i++)
{
$select .= "<option value=\"$tablo[$i]\">$tablo[$i]</option>\n";
}
$select .= "</select>";
return $select;
}
Voilà, je pense avoir été à peu prés complet...Merci d'avance pour vos réponses