Multi select Dynamique power 2 ^^

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 3 juil. 2006 à 15:59
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 3 juil. 2006 à 17:12
voilà j ai un petit soucis avec ajax là ...
en fait je voudrais que l utilisateur utilise des select pour affinner son choix alors je remplis mon premier select dynamiquement via une table MySQL des que la personne choisi dans cette liste, un autre select apparait et il doit encore choisir mais là il voit pas la valeur de l index choisi.
voici l architecture de mes fichier
1/fichier js :
qui s occupe de faire un objet xmlhttp
et une fonction search avec 2 parametres (div ou il doit mettre le contenu et valeur du select en cours de choix)
2/fichier php :
de formulaire dans lequel  il y a le 1er select(a) rempli via MySQL puis 2 div qui contienent les 2 select dependent de (a)
3/autre fichier php:
celui ci s ossupe de faire les requetes et d afficher le contenu des selecte dependant :

Je voudrais si qqun a le tps de m expliker le fonctionnement que je dois mettre en oeuvre pour faire fonctionner ceci comme j aimerais

Voici son corps ...
<?php
header('content-type: text/html');
require('config.php');
require('../lib/mysql.lib.php');

$db=new DoliDb($type='mysql', $host, $user, $pass, $name);
if((isset($_POST["id_service"])) && (!empty($_POST["id_service"]))){
    $sSql='SELECT * FROM '.$prefixe.' entite WHERE id_service='.$_POST["id_service"];
    $rResult = $db->query($sSql);
    if($rResult){
          echo '<select name="id_entite" onchange="search(\'divPoste\',\'id_entite=\'+this.options[this.selectedIndex].value+\'\');">';
        while ($row = mysql_fetch_assoc($rResult)){
            echo '<option value="'.$row["id_entite"].'">'.$row["nom_entite"].'</option>';//celui ci fonctionne mais ne renvoie pas la valeur de l index choisi
        }
        echo '</select>';
    }
    else{
        echo 'Aucune Entite';
    }
    if((isset($_POST["id_entite"])) && (!empty($_POST["id_entite"]))){ //$_POST["id_entite"] est tjrs une variable vide donc aucun poste
        $sSql='SELECT * FROM '.$prefixe.' poste WHERE id_entite='.$_POST["id_entite"];
        echo $sSql;
        $rResult = $db->query($sSql);
        if($rResult){
            while ($row = mysql_fetch_assoc($rResult)){
                echo '<option value="'.$row["id_poste"].'">'.$row["nom_poste"].'</option>';
                $bPoste=true;
            }
        }
        else{
            echo 'Aucun Poste';
        }
        if((isset($_POST["id_poste"])) && (!empty($_POST["id_poste"]))){
            echo '';
        }
    }
}
?>
--------------------------------------------------------------------------------------------------
         Ilvaut mieux poser une question et passer pour bête que le rester toutesa vie

1 réponse

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
3 juil. 2006 à 17:12
je viens de voir que mon code est sale ^^ mais j ai pas arreté de le tripoter dans tous les sens alors je vais le mettre a nouveau et de facon plus propre ...

voici le formulaire:
require('config.php');
require('../lib/mysql.lib.php');
$db=new DoliDb($type='mysql', $host, $user, $pass, $name);
$bEmploye=false;
$bService=false;
echo '<script type="text/javascript" src="../js/refresh_affect.js"></script>';
echo '<form action="" method="post" id="form_affect">';
$sSql='SELECT * FROM '.$prefixe.' ldap_mysql';
$rResult = $db->query($sSql);
if($rResult){
    echo '<select name="id_employe">';
    while ($row = mysql_fetch_assoc($rResult)){
        if($row["valid"]==1){
            echo '<option value="'.$row["id"].'">'.$row["ldap_auth"].'</option>';
            $bEmploye=true;
        }
    }
    echo '</select>';
}
else{
    echo 'Aucun Employ&eacute;';
}
if($bEmploye==true){
    $sSql='SELECT * FROM '.$prefixe.' service';
    $rResult = $db->query($sSql);
    if($rResult){
        echo '<select name="id_service" onchange="search(\'divEntite\',\'id_service=\'+this.options[this.selectedIndex].value+\'\');">';
        while ($row = mysql_fetch_assoc($rResult)){
            echo '<option value="'.$row["id_service"].'">'.$row["nom_service"].'</option>';
            $bService=true;
        }
        echo '</select>';
    }
    else{
        echo 'Aucun Service;';
    }
}
echo '<select id="divEntite" name="id_entite" onchange="search(\'divPoste\',\'id_entite=\'+this.options[this.selectedIndex].value+\'\');">';
echo '</select>';
echo '<select id="divPoste" name="id_poste" onchange="search(\'divSubmit\',\'id_poste=\'+this.options[this.selectedIndex].value+\'\');">';
echo '</select>';
echo '</form>';

et voici la page de traitement

<?php
header('content-type: text/html');
require('config.php');
require('../lib/mysql.lib.php');

$db=new DoliDb($type='mysql', $host, $user, $pass, $name);
if((isset($_POST["id_service"])) && (!empty($_POST["id_service"]))){
    $sSql='SELECT * FROM '.$prefixe.' entite WHERE id_service='.$_POST["id_service"];
    $rResult = $db->query($sSql);
    if($rResult){
         
        while ($row = mysql_fetch_assoc($rResult)){
            echo '<option value="'.$row["id_entite"].'">'.$row["nom_entite"].'</option>';
            $bEntite=true;
        }
       
    }
    else{
        echo 'Aucune Entite';
    }
    //if((isset($_POST["id_entite"])) && (!empty($_POST["id_entite"]))){
        $sSql='SELECT * FROM '.$prefixe.' poste WHERE id_entite='.$_POST["id_entite"];
        echo $sSql;
        $rResult = $db->query($sSql);
        if($rResult){
            while ($row = mysql_fetch_assoc($rResult)){
                echo '<option value="'.$row["id_poste"].'">'.$row["nom_poste"].'</option>';
                $bPoste=true;
            }
        }
        else{
            echo 'Aucun Poste';
        }
        if((isset($_POST["id_poste"])) && (!empty($_POST["id_poste"]))){
            echo '';
        }
    //}
}

?>

Pardonnez le flood mais je vois mal comment qqun pourrais comprendre ce probleme de portée de variable sans avoir tout le code
Merci a ceux qui se pencheront car je sais pas trop comment faire ...

--------------------------------------------------------------------------------------------------
         Ilvaut mieux poser une question et passer pour bête que le rester toutesa vie
0
Rejoignez-nous