Page 1 sur 1
double menu deroulant dynamique
Posté : 06 avr. 2005, 11:00
par peetgroob
Bonjour, je sui debutant en PHP et je galere depui kelkes jours sur ca :
Je veux afficher le nom des employés dans le menu2 suivant le choix du numero de departement dans le menu1. Sachant que jvai chercher mes donnees dans la base de donnees.
Les numeros de departements saffichent dans le 1er menu. Maintenant je veu ke quand on selectione un numero de departement, les noms des employés concernés apparaissent ds le 2eme menu et ca marche.
Fo faire un rafraichissement de la page ?
Merci de m'aider...
Voici mon code :
FORM NAME="menuDeroulant">
<div align="center">
<SELECT NAME="theme" method="post" action="$PHP_SELF">
<?
require("config/myConnexion.php");
$db = 'planning';
mysql_connect (SERVER,USER,PASSWD) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
$select = 'SELECT DISTINCT num_dept
FROM utilisateur';
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
echo "<OPTION VALUE=\"null\">-=Département=-</option>";
if ($total=0) {
echo "<option>Aucun dept</option>";
} else {
while ($row=mysql_fetch_array($result)) {
echo "<option value=\"".$row['num_dept']."\">".$row['num_dept']."</option>";
}
}
mysql_free_result($result);
mysql_close();
?>
</SELECT>
<? $theme == $_POST['theme'];
?>
<SELECT NAME="soustheme">
<?
require("config/myConnexion.php");
$db = 'planning';
mysql_connect (SERVER,USER,PASSWD) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
$select = 'SELECT DISTINCT nom_util
FROM utilisateur
WHERE num_dept="$theme"';
$result2 = mysql_query($select) or die ('Erreur : '.mysql_error() );
$total2 = mysql_num_rows($result);
echo "<OPTION VALUE=\"null\">Selectionnez D'abord Un Département</option>";
if ($total2=0) {
echo "<option>Aucun employé</option>";
} else if ($theme='num_dept'){
while ($row=mysql_fetch_array($result)) {
echo "<option value=\"".$row['nom_util']."\">".$row['nom_util']."</option>";
}
}
mysql_free_result($result2);
mysql_close();
?>
</SELECT>
</FORM>
Posté : 06 avr. 2005, 12:07
par Vince
Salut,
En fait je pense que ce n'es pas possible en php et réactualiser la page réinitialiserai le formulaire. Je pense qu'un javascript est la soulution. Cherche vers ici --->
http://www.g1script.com/home/LANGAGE/JS ... ombo/7.php
A+
Posté : 06 avr. 2005, 12:16
par iclo
Tout dépend de ce que tu veux faire, si aucun département n'est sélectionné, tu affiches tous les utilisateurs, ou aucun ??
Posté : 06 avr. 2005, 13:32
par pikachu639
j'avias le meme pb g longtemps cherché et personne ne ma donner la soluce tout du moins en php
donc g fais ca sur plusieur page
Posté : 06 avr. 2005, 14:15
par iclo
C'est tout à fait faisable en php, en actualisant la page, et en sélectionnant les options de la 2ème drop-Down à partir de la valeur de la 1ère
Il suffit d'avoir un formulaire qui renvoit vers la même page
et lors de l'affichage de la page tester si on récupère une valeur de la 1ère drop-down ( avec isset($_POST['premierDropDown']) et de faire le select en fonction.
Pour t'aider plus, il faut que tu nous en dise plus sur ce que tu veux faire exactement : afficher la deuxième dropDown que si la première a une une valeur sélectionnée,et sionon l'afficher avec tout les utilisateurs, l'afficher vide, désactivée, etc
Bref donne nous des détails....
double menu deroulant dynamique
Posté : 07 avr. 2005, 09:02
par peetgroob
Voila ou jen sui : Ca marche mai ka moitié. Pour les departements de 1 a 5 ya pa de pb les noms des employés s affichent. Mais pr les departements SG, SF, et AT ca rest blanc !!.. LE cod ene pren pa en compte kand le num_dept est des lettres. Pourtant ds ma base, le type est varchar. Si quelqu'un pouvait jeter un coup d'oeil a mon code et me dire pourkoi ca marche pas pour les lettres je lui serai tre reconnaissant. Merci...
My code :
<?php
@mysql_connect($hote, $user, $pass);
require("config/myConnexion.php");
$Base = 'planning';
?>
<SCRIPT LANGUAGE="JavaScript">
function ModifierListe(code_util) {
lg = document.frmDpt.zlEmpl.length;
// On vide la liste
for (i = lg - 1; i >= 0; i--) {
document.frmDpt.zlEmpl.options = null;
}
num_dept = document.frmDpt.zlDept.selectedIndex;
<?php
// Génération des noms des employés par Dept
$sql = "SELECT num_dept FROM departement";
$resultat = mysql_db_query($Base, $sql);
$max_lignes = 0;
$option_max = '';
while ($enr = mysql_fetch_array($resultat)) {
$sql = "SELECT code_util, nom_util ";
$sql .= "FROM utilisateur ";
$sql .= "WHERE num_dept='".$enr[0]."'";
$sql .= "ORDER BY nom_util";
$resultat2 = mysql_db_query($Base, $sql);
echo " if (document.frmDpt.zlDept.options[num_dept].value == ".$enr[0].") {\n";
echo " document.frmDpt.zlEmpl.length = ".(mysql_num_rows($resultat2)).";\n";
$cpt = 0;
while ($enr2 = mysql_fetch_array($resultat2)) {
echo " document.frmDpt.zlEmpl.options[".$cpt."].value = ".$enr2[0].";\n";
echo " document.frmDpt.zlEmpl.options[".$cpt."].text = \"".$enr2[1]."\";\n";
echo " if (code_util == ".$enr2[0].") document.frmDpt.zlEmpl.options[".$cpt."].selected = true;\n";
$cpt++;
if ($cpt > $max_lignes) $max_lignes = $cpt;
if (strlen($enr2[1]) > strlen($option_max)) $option_max = $enr2[1];
}
echo " }\n";
}
?>
}
</SCRIPT>
<?php
// Liste Départements
$sql = "SELECT * FROM departement ORDER BY num_dept";
$resultat = mysql_db_query($Base, $sql);
echo "<FORM METHOD=POST NAME='frmDpt'>";
echo '<br>';
echo "<BR> <B>Département</B> ";
echo " <SELECT NAME='zlDept' onChange='ModifierListe(-1)'>\n";
echo "<OPTION VALUE=\"null\">---=Choisir le Département=---</option>";
while ($enr = mysql_fetch_array($resultat)) {
echo "<OPTION VALUE='".$enr[0]."'";
if ($zlDept == $enr[0]) echo " SELECTED";
echo ">".htmlspecialchars($enr[1])."</OPTION>\n";
}
echo "</SELECT> \n";
echo '<br>';
// Liste Employés
echo '<br>';echo '<br>';
echo " <B>Nom de l'employé</B> ";
echo " <SELECT NAME='zlEmpl' style=\"width:225\">\n";
for ($cpt = 0; $cpt < $max_lignes; $cpt++)
echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n";
echo "</SELECT> \n";
if (!isset($zlEmpl))
{ $zlEmpl = -1;
echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$zlEmpl.");\n</SCRIPT>\n";
}
?>
<tr>
<td > </td>
</tr>
<?
echo '<br>';echo '<br>';
echo "<div align=\"center\"><INPUT TYPE='submit' VALUE='Valider'>\n</div>";
echo "</FORM>";
// Résultats des sélections
if (isset($zlDept) && $zlDept != "") {
$sql = "SELECT libelle_dept FROM departement WHERE num_dept='".$zlDept."'";
$resultat = @mysql_db_query($Base, $sql);
$enr = @mysql_fetch_array($resultat);
echo "libelle_dept = $zlDept [$enr[0]]<BR>\n";
}
if (isset($zlEmpl) && $zlEmpl != "" && $zlEmpl != -1) {
$sql = "SELECT nom_util FROM utilisateur WHERE num_dept='".$zlEmpl."'";
$resultat = @mysql_db_query($Base, $sql);
$enr = @mysql_fetch_array($resultat);
echo "nom_util = $zlEmpl [$enr[0]]<BR>\n";
}
?>
Posté : 07 avr. 2005, 09:06
par iclo
si tu pouvais nous poster ton code avec les tag php pour qu'on ait la coloration synthaxique, et aussi indente le un peu, car là, franchement, c'est dur à lire...
Posté : 07 avr. 2005, 09:33
par albat
Je vais le faire, parce que moi aussi, j'ai mal aux yeux...
<?php
@mysql_connect($hote, $user, $pass);
require("config/myConnexion.php");
$Base = 'planning';
?>
<SCRIPT LANGUAGE="JavaScript">
function ModifierListe(code_util)
{ lg = document.frmDpt.zlEmpl.length;
// On vide la liste
for (i=lg-1 ; i>=0 ; i--)
{ document.frmDpt.zlEmpl.options[i] = null;
}
num_dept = document.frmDpt.zlDept.selectedIndex;
<?php
// Génération des noms des employés par Dept
$sql = "SELECT num_dept FROM departement";
$resultat = mysql_db_query($Base, $sql);
$max_lignes = 0;
$option_max = '';
while ($enr = mysql_fetch_array($resultat))
{ $sql = "SELECT code_util, nom_util ";
$sql .= "FROM utilisateur ";
$sql .= "WHERE num_dept='".$enr[0]."'";
$sql .= "ORDER BY nom_util";
$resultat2 = mysql_db_query($Base, $sql);
echo " if (document.frmDpt.zlDept.options[num_dept].value == ".$enr[0].") {\n";
echo " document.frmDpt.zlEmpl.length = ".(mysql_num_rows($resultat2)).";\n";
$cpt = 0;
while ($enr2 = mysql_fetch_array($resultat2))
{ echo " document.frmDpt.zlEmpl.options[".$cpt."].value = ".$enr2[0].";\n";
echo " document.frmDpt.zlEmpl.options[".$cpt."].text = \"".$enr2[1]."\";\n";
echo " if (code_util == ".$enr2[0].") document.frmDpt.zlEmpl.options[".$cpt."].selected = true;\n";
$cpt++;
if ($cpt > $max_lignes) $max_lignes = $cpt;
if (strlen($enr2[1]) > strlen($option_max)) $option_max = $enr2[1];
}
echo " }\n";
}
?>
}
</SCRIPT>
<?php
// Liste Départements
$sql = "SELECT * FROM departement ORDER BY num_dept";
$resultat = mysql_db_query($Base, $sql);
echo "<FORM METHOD=POST NAME='frmDpt'>";
echo '<br>';
echo "<BR> <B>Département</B> ";
echo " <SELECT NAME='zlDept' onChange='ModifierListe(-1)'>\n";
echo "<OPTION VALUE=\"null\">---=Choisir le Département=---</option>";
while ($enr = mysql_fetch_array($resultat))
{ echo "<OPTION VALUE='".$enr[0]."'";
if ($zlDept == $enr[0]) echo " SELECTED";
echo ">".htmlspecialchars($enr[1])."</OPTION>\n";
}
echo "</SELECT> \n";
echo '<br>';
// Liste Employés
echo '<br>';echo '<br>';
echo " <B>Nom de l'employé</B> ";
echo " <SELECT NAME='zlEmpl' style=\"width:225\">\n";
for ($cpt = 0; $cpt < $max_lignes; $cpt++)
echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n";
echo "</SELECT> \n";
if (!isset($zlEmpl))
{ $zlEmpl = -1;
echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$zlEmpl.");\n</SCRIPT>\n";
}
?>
<tr><td > </td></tr>
<?
echo '<br>';echo '<br>';
echo "<div align=\"center\"><INPUT TYPE='submit' VALUE='Valider'>\n</div>";
echo "</FORM>";
// Résultats des sélections
if (isset($zlDept) && $zlDept != "")
{ $sql = "SELECT libelle_dept FROM departement WHERE num_dept='".$zlDept."'";
$resultat = @mysql_db_query($Base, $sql);
$enr = @mysql_fetch_array($resultat);
echo "libelle_dept = $zlDept [$enr[0]]<BR>\n";
}
if (isset($zlEmpl) && $zlEmpl != "" && $zlEmpl != -1)
{ $sql = "SELECT nom_util FROM utilisateur WHERE num_dept='".$zlEmpl."'";
$resultat = @mysql_db_query($Base, $sql);
$enr = @mysql_fetch_array($resultat);
echo "nom_util = $zlEmpl [$enr[0]]<BR>\n";
}
?>
Posté : 07 avr. 2005, 10:01
par iclo
Albat, ta bontée te perdra

Posté : 07 avr. 2005, 10:04
par albat
Ne te méprends pas.
Ce n'était pas de l'altruisme... mais de la conjonctivite !

Posté : 07 avr. 2005, 10:07
par iclo
sinon je vois pas trop l'interet d'utiliser tu Javascrpit pour constuire une drop-Down, quand le code est de toute façon executé côté serveur, pourquoi ne pas générer de l'html directement ??
Posté : 07 avr. 2005, 10:09
par Invité
Merci pr la mise en page du code en couleur
Alors ya kelk1 qui voi ou est le pb.

?
Ca fai des jours ke je sui dessu
Je sui si pret du but
Jpens kil ya just un truc a modifier strlen ou jsai pa...
HELP ME
THANKS
Posté : 07 avr. 2005, 10:22
par iclo
oui, mais j'aimerai comprendre l'intérêt de passer par du javacript à partir du moment où tu passes quand même par le serveur, pourquoi ne pas tout faire en php ?
Posté : 07 avr. 2005, 10:42
par Invité
Bah on m a di ki jetai obligé de faire appel a du JavaScript de tt facon...
Vs proposez de faire ca kavec PHP ?
Mai bon, la ca march ya just le ptit bleme a trouver
Jen ai marre de me prendr la tete dessu
Just pr un type de variabl ou jsai pa koi ..SOS!