double menu deroulant dynamique

peetgroob
Invité n'ayant pas de compte PHPfrance

06 avr. 2005, 11:00

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>

Eléphant du PHP | 66 Messages

06 avr. 2005, 12:07

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+

ViPHP
ViPHP | 2144 Messages

06 avr. 2005, 12:16

Tout dépend de ce que tu veux faire, si aucun département n'est sélectionné, tu affiches tous les utilisateurs, ou aucun ??

Eléphant du PHP | 168 Messages

06 avr. 2005, 13:32

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
Tous les hommes aspirent à être heureux, mais personne ne s'entend sur la définition du bonheur.
Celui qui a un ami véritable n'a pas besoin d'un miroir.

ViPHP
ViPHP | 2144 Messages

06 avr. 2005, 14:15

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....

peetgroob
Invité n'ayant pas de compte PHPfrance

07 avr. 2005, 09:02

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>&nbsp;<B>Département</B>&nbsp;";
echo "&nbsp;<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>&nbsp;\n";
echo '<br>';

// Liste Employés
echo '<br>';echo '<br>';
echo "&nbsp;<B>Nom de l'employé</B>&nbsp;";
echo "&nbsp;<SELECT NAME='zlEmpl' style=\"width:225\">\n";

for ($cpt = 0; $cpt < $max_lignes; $cpt++)

echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n";
echo "</SELECT>&nbsp;\n";
if (!isset($zlEmpl))
{ $zlEmpl = -1;
echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$zlEmpl.");\n</SCRIPT>\n";
}
?>
<tr>
<td >&nbsp;</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";
}

?>

ViPHP
ViPHP | 2144 Messages

07 avr. 2005, 09:06

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...

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

07 avr. 2005, 09:33

Je vais le faire, parce que moi aussi, j'ai mal aux yeux... :wink:
<?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>&nbsp;<B>Département</B>&nbsp;";
echo "&nbsp;<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>&nbsp;\n";
echo '<br>';

// Liste Employés
echo '<br>';echo '<br>';
echo "&nbsp;<B>Nom de l'employé</B>&nbsp;";
echo "&nbsp;<SELECT NAME='zlEmpl' style=\"width:225\">\n";
for ($cpt = 0; $cpt < $max_lignes; $cpt++)
echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n";
echo "</SELECT>&nbsp;\n";
if (!isset($zlEmpl))
   { $zlEmpl = -1;
     echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$zlEmpl.");\n</SCRIPT>\n";
   }
?>
<tr><td >&nbsp;</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";
   }
?>

ViPHP
ViPHP | 2144 Messages

07 avr. 2005, 10:01

Albat, ta bontée te perdra :D :wink:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

07 avr. 2005, 10:04

Ne te méprends pas.
Ce n'était pas de l'altruisme... mais de la conjonctivite ! :lol:

ViPHP
ViPHP | 2144 Messages

07 avr. 2005, 10:07

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 ??

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2005, 10:09

Merci pr la mise en page du code en couleur

Alors ya kelk1 qui voi ou est le pb. :roll: ?

Ca fai des jours ke je sui dessu
:cry:
Je sui si pret du but
Jpens kil ya just un truc a modifier strlen ou jsai pa...
HELP ME
THANKS

ViPHP
ViPHP | 2144 Messages

07 avr. 2005, 10:22

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 ?

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2005, 10:42

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!