Problème avec listes liées AJAX

cs_Vins974 Messages postés 104 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 20 février 2009 - 20 janv. 2009 à 12:07
cs_Vins974 Messages postés 104 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 20 février 2009 - 21 janv. 2009 à 05:02
Bonjour ,

J'ai un problème.. Je crée un site internet, et j'ai utilisé AJAX. Pour pouvoir effectuer trois listes liées.. Elles sont donc chacune dépendante de la précédente. Cependant lorsque je clique sur un bouton modifier, je veux faire en sorte qu'une autre page s'ouvre, et que dans la valeaure initiale de chaque liste déroulante soit définit par un élément retrouvé par une requête SQL. Mais voila je n'arrive pas à l'initialiser.

Voilà un morceau du code de ma page ValideLD2.php c'est la liste déroulante numéro 2, qui s'active une fois que la 1ere liste déroulante est défini :

     $retour = '<select style="width: 320" name="Liste2" id="Liste2" size="1" onchange="ValideLd3(this[this.selectedIndex].value);">';
     $retour .= '<option selected value="ca marche">';
     $retour.= $rep['Libelle_cellule'];
     $retour.= '</option>';

Ici logiquement, sa valeur initiale est "ca marche", mais lorsque je fais un echo $_POST['Liste2'] Rien ne s'affiche. Aidez moi svp!!!!!!
[ 'Tu trouveras toujours plus fort que toi' ]

8 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
20 janv. 2009 à 12:12
bonjour,
je t'ai donné un exemple ( à adapter ) ici
où tu n'as d'ailleurs pas daigné répondre !?!?
c'est sympa pour ceux qui tentent d'aider
je tente une nouvelle fois ? peut-être ici
auras-tu la politesse de le faire ?
: on n'a pas assez de code pour répondre
Cordialement[mon Site][M'écrire]Bul
0
cs_Vins974 Messages postés 104 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 20 février 2009
20 janv. 2009 à 12:45
C'est gentil de m'avoir répondu, mais la dernière fois, lorsque j'avais poser la question, j'ai eu de suite le résultat et du coup je ne m'étais pas référer à ce que vous m'avez montré, vu que je suis un peu pris par le temps. Je suis d'ailleurs désolé.

Je vous donne tout le code alors.

J'ai mis en rouge les points importants, et en violet les points important quii ne marche pas

Ma page modifier.php :

<?php
        session_start();
        $login=$_SESSION['login'];//transport de la variable login afin de savoir qui est l'agent connecte
?>       
       
           

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=windows-1250">
        <meta name="generator" content="PSPad editor, www.pspad.com">
       
       
            <?php
            if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Firefox' ) !== FALSE ) // Si le navigateur choisi est Firefox
            {
            echo '<link rel="stylesheet" media="screen" type="text/css" title="css" href="style_fx.css" />'; //Il met la feuille de style adapté à firefox
            }
            else
            {
            echo '<link rel="stylesheet" media="screen" type="text/css" title="css" href="style_ie.css" />'; //Sinon il met la feuille de style adapté à IE
            }
            ?>
        <title>Modification d'une intervention</title>
                             <script type="text/javascript">
             var Ld1Id=''; //initialisation des variables
             var Ld2Id='';
             var id_liste='';
           
             function ValideLd2(val) {
            Ld1Id=val; //id_service
             id_liste='2';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
            var LD_URL = 'ValideLd2.php?Ld1='+Ld1Id;
             ObjetXHR(LD_URL)
             // Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
            if (Ld2Id!='') {ValideLd3(''); }
             }
           
             function ValideLd3(val) {
             Ld2Id=val; //id_cellule
            id_liste='3'; //Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
             var LD_URL = 'ValideLd3.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id;
             if (Ld2Id=='') {var LD_URL = 'ValideLd3.php';}
             ObjetXHR(LD_URL)
             }
           
             function ObjetXHR(LD_URL) {
             //creation de l'objet XMLHttpRequest
             if (window.XMLHttpRequest) { // Mozilla,...
            xmlhttp=new XMLHttpRequest();
            if (xmlhttp.overrideMimeType) {
            xmlhttp.overrideMimeType('text/xml');
             }
             xmlhttp.onreadystatechange=ChargeLd;
             xmlhttp.open("GET", LD_URL, true);
             xmlhttp.send(null);
             } else if (window.ActiveXObject) { //IE
             xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
             if (xmlhttp) {
             xmlhttp.onreadystatechange=ChargeLd;
             xmlhttp.open('GET', LD_URL, false);
             xmlhttp.send();
             }
             }
             // Bouton non apparent car modification de LD1 ou Ld2
             document.getElementById('buttons').style.display='none';
             }
          
             // fonction pour manipuler l'appel asynchrone
             function ChargeLd() {
             if (xmlhttp.readyState==4) {
             if (xmlhttp.status==200) {
             //span id="niv2" ou "niv3"
             document.getElementById('niv'+id_liste).innerHTML=xmlhttp.responseText;
             if (xmlhttp.responseText.indexOf('disabled')<=0) {
             //focus sur liste déroulante 2 ou 3
            document.getElementById('Liste'+id_liste).focus();
             }
             }
             }
             }
           
            
     </script>
       
    </head>
   
   
   
       
       
       
       

               
        <?php
       
            if(isset($_SESSION['login'])) // Si il existe un login
            {
            include ("connexionok.php");        //afficher la page "connexionok.php"
            }           
            else
            {
            include ("connexion.php");//sinon afficher la page "connexion"
            }
            include ("menuagent.php");//affiche le menu
                ?>
       
       

       
       

       
        <?php
   
    include ("connexionBDD.php"); //connexion à la base de donnees

   
    $resultat5=mysql_query("SELECT Libelle_type FROM type");// Permet de retourner le libelle de tous les types
    if (! $resultat5) { echo "Erreur requete"; exit;}  //message en cas d'erreure
   
   

   

        $num_intervention = $_GET['interv']; // le numero de l'intervention a ete place dans une variable pour pouvoir la transporté. Maintenant elle est mis dans une variable

    // requete retournant toutes les interventions en details de l'agent connecte   
    $sql1 = "SELECT * 
            FROM intervention, agent, service, type, cellule, user
            WHERE intervention.Num_agent = agent.Num_agent
            AND service.Num_service = intervention.Num_service
            AND type.Num_type = intervention.Num_type
            AND user.Num_user=intervention.Num_user
            AND cellule.Num_cellule=intervention.Num_cellule
            AND Num_intervention = '$num_intervention'";

   
    $resultsql = mysql_query($sql1) or die('Erreur SQL! '.$sql1.''.mysql_error()); // en cas d'erreure
    $rep = mysql_fetch_assoc($resultsql);
    $num_agent = $rep['Num_agent'];
    ?>

       
       
        Modifier une intervention

        <hr>
        <?php
        $modif=1;
        if (!isset($_POST['modifier']))
    {
        ?>
    Vous pouvez ici modifier comme bon vous semble cette intervention. Pour valider, cliquer sur "Modifier".

   
     <form action="modifier.php?interv=<?php echo $_GET['interv']; ?> " method='post'><!-- formulaire -->
   
        <!-- tableau sans bordure pour organiser et tout aligner -->
       
       
            ----

               
                Service* :,
                 
                            <?php
                           
                                include ("valideLd1.php");
                             ?><!--Pour remplir la liste déroulante 1-->
               ,
                             
                ----
             
                Cellule* :,
                             
                            

                             <?php
                                include ("valideLd2.php");
                             ?> <!--Pour remplir la liste déroulante 2-->
               ,              
                         
                ----
             
                Utilisateur* :,
                                         
                             <?php
                                include ("valideLd3.php");
                             ?> <!--Pour remplir la liste déroulante 3-->
                         
                         
                         
               ,    
           
       

            ----

                Type d'intervention :,
                                                <select style="width: 320" name="type"><!-- Liste deroulante, permettant de choisir les types -->
                    <option><?php echo $rep['Libelle_type']; ?></option><!-- le premier element afficher dans la liste deroulante -->
                        <?php
                            while ($ligne5=mysql_fetch_array($resultat5))//boucle permettant de lire tous les types existant dans la base de données
                            {
                        ?>
                        <option>
                            <?php
                                echo ''.$ligne5['Libelle_type'].'';    // Il affiche dans la liste deroulante, tant qu'existe des "libelle_type"
                            ?>
                        </option>
                        <?php
                            }
                        ?>   
                       
                    </select>
               ,    

           
            ----

                Libell&eacute; d'intervention :,
                ">, <!-- zone de texte -->
           
            ----

                Dur&eacute;e (en minutes) :,
                ">, <!-- zone de texte n'autorisant uniquement la saisie de chiffres-->
           
            ----

            ,
            /!\  Cliquez sur la date pour la modifier  /!\, <!--// Msg pour renseigner -->
           
            ----

                Date d&eacute;but :,
                "><?php include ("fonctioncalendrier.php");?>, <!-- zone de texte permettant d'avoir recours a un calendrier, en appelant la \"fonctioncalendrier.php\" -->
               
           
            ----

                Date fin :,
                "><?php include ("fonctioncalendrier.php");?>, <!-- zone de texte permettant d'avoir recours a un calendrier, en appelant la \"fonctioncalendrier.php\" -->
               
           
           

       

       

        <center>
       
        <!--  bouton modifier une intervention -->
       
        </center>
    </form>   
   
    <?php
    }
    if (isset($_POST['modifier']) )
    {
            $num_serv=$_POST['Liste1']; //chaque valeure entrée par l'agent est memorise dans une variable
            $num_cell=$_POST['Liste2'];
            $nom_user=$_POST['Liste3'];
            $type=$_POST['type'];
            $libelle=$_POST['libelle_inter'];
            $date_deb=$_POST['date_deb'];
            $date_fin=$_POST['date_fin'];
            $duree=$_POST['duree'];
    }
            if ($date_fin >= $date_deb) //Si la date de fin de l'intervention est bien supérieure ou egale a la date de debut, alors la variable correct prend la valeur 1
            {
            $correct=1;
            }

       
    if (isset($_POST['modifier']) && $correct==1 && $_POST['date_fin'] != "0000-00-00")
    // Si on clik sur modifier et que la variable correct est egale a 1 (c'est a dire que la date fin est est superieur ou égale a la date debut) et si le champs date_fin est different de sa valeure de départ (c'est a dire qu'il a ete change)
    {
   
    $statut="Terminé"; // la variable statut prend donc la valeur termine
    include ("tabrecapitulatif.php");// on affiche le tableau récapitulatif

    }
    elseif (isset($_POST['modifier']) && $_POST['date_deb'] != null && $_POST['date_fin'] == "0000-00-00")
    //Si on clik sur modifier, que la date de debut a ete choisi et que la date_fin n'as pas ete changer
    {
    $statut= "En cours"; //la variable statut prend la valeure "en cours"
    $date_fin=""; //la date_fin prend la valeure vide
    include ("tabrecapitulatif.php");// on affiche le tableau récapitulatif

    }
    elseif (isset($_POST['modifier']) && $correct!=1 && $_POST['date_fin'] != "0000-00-00")
    //Si on clik sur modofier, et que correct n'est pas egale a 1, (c'est a dire que la date fin est plus petit que la date debut, ce qui est illogique), et que la date fin a bien ete modifier de sa valeure de depart.
    {
   
    ?>
    <?php echo "Erreure de date!!! Recommencez!!" ?>

<!-- message d'erreure -->
    <?php
    }
    ?>

    <?php
    if (isset($_POST['modifier']) && $correct ==1 ) //si on clik sur modifier et que les dates debut et fin, sont correct
    {
       
            $typ "SELECT Num_type FROM type WHERE Libelle_type '$type' "; //Requete permettant de retourner le numero du type selectionne par l'agent
    $req2 = mysql_query($typ) or die('Erreur SQL! '.$sql.''.mysql_error()); // en cas d'erreure
    $data2 = mysql_fetch_assoc($req2); //les resultats de la requete est dans une variable
   
    $num_type = $data2['Num_type']; // Le numero du  type est stocke dans une variable
            $sql1 "SELECT Num_user FROM user WHERE Nom_user '$nom_user' ";
    $req1 = mysql_query($sql1) or die('Erreur SQL! '.$sql1.''.mysql_error()); // en cas d'erreure
    $data1 = mysql_fetch_assoc($req1); //les resultats de la requete est dans une variable
   
    $num_user = $data1['Num_user'];

    $modifsql="UPDATE intervention SET Libelle_intervention = '$libelle', Duree_intervention = '$duree', Date_debut = '$date_deb', Date_fin = '$date_fin', Statut_intervention = '$statut',    //Num_service '$num_serv', Num_type '$num_type', Num_agent = '$num_agent', Num_cellule = '$num_cell',    //Num_user '$num_user'  WHERE Num_intervention $num_intervention";
    mysql_query($modifsql)or die('Query failed: '.'<li>errorno='.mysql_errno().'<li>error='.mysql_error().'<li>query='.$modifsql);
   
    }
    ?>
    [consultmesinter.php Retour &agrave; mes interventions]

       

       
       
   
       
</html>

La page ValideLD1.php:

if ($modif ==1)
     {
     $libelle = $rep['Libelle_service'];
     $num = $rep['Num_service'];
     include ("connexionBDD.php");
     $rq="Select Num_service, Libelle_service from service order by Libelle_service;";
     $rq_pos_id=0; //position dans le SQL de la clé de la liste déroulante idem dans ValideLd2.php et ValideLd3.php
     $rq_pos_val=1; //position dans le SQL de la valeur de la liste déroulante idem dans ValideLd2.php et ValideLd3.php
   
     $result= mysql_query ($rq) or die ("Select impossible");
     $retour = '<select style="width: 320" name="Liste1" id="Liste1" size="1" onchange="ValideLd2(this[this.selectedIndex].value);">';
     $retour .= '<option selected value="';
     $retour .= $num;
     $retour .= '">';
     $retour.= $libelle;
     $retour.= '</option>';
     if (mysql_num_rows($result) != 0)
     {
     while ($row = mysql_fetch_row($result))
     {
     $retour .= '<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';
     }
     $retour .= '</select>';
     } else {
     $retour = '';
     }
     mysql_free_result($result);
     mysql_close();
     echo $retour;
     
     
     }
     
     
     
     ?>

ValideLD2.php :

if ($modif ==1)
     {

     
        include ("connexionBDD.php");
        $Ld1_retour =''; //id_département clé de la liste déroulante 1
       
        if (isset($_GET['Ld1']))
        {
            $Ld1_retour = $_GET['Ld1'];
        }
       
        if ($Ld1_retour!='')
        {
         
            $rq="Select Num_cellule, Libelle_cellule from cellule where Num_service=".$Ld1_retour." order by Libelle_cellule;";
            $rq_pos_id=0;
            $rq_pos_val=1;
            $result= mysql_query ($rq) or die ("Select impossible");
            $retour = '<select style="width: 320" name="Liste2" id="Liste2" size="1" onchange="ValideLd3(this[this.selectedIndex].value);">';
            $retour .= '<option selected value="c la valeure de la liste 2">'; // Elle ne pren pas en conte cette valeur
            $retour.= $rep['Libelle_cellule'];
            $retour.= '</option>';
         
       
            if (mysql_num_rows($result) != 0)
            {
                while ($row = mysql_fetch_row($result))
                {
                    $retour .= '<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';
                }
                $retour .= '</select>';
            }
            else
            {
                $retour = '<select style="width: 320" name="Liste2" id="Liste2" size="1" disabled>';
                $retour .= '<option selected value="c la valeure de la liste 2">';
                $retour.= $rep['Libelle_cellule'];
                $retour.= '</option>';
            }
            mysql_free_result($result);
            mysql_close();
        }
         
        else
         
        {
            $retour = '<select style="width: 320" name="Liste2" id="Liste2" size="1" disabled>';
            $retour .= '<option selected value="c la valeure de la liste 2">';
            $retour.= $rep['Libelle_cellule'];
            $retour.= '</option>';
       
        }
        echo $retour;
         
         
     
     }
     ?>

ValideLD3.php :

if ($modif ==1)
     {
      include ("connexionBDD.php");
     $Ld1_retour =''; //id_département clé de la liste déroulante 1
     $Ld2_retour =''; //id_commune clé de la liste déroulante 2
   
     if (isset($_GET['Ld1'])) {$Ld1_retour = $_GET['Ld1'];}
     if (isset($_GET['Ld2'])) {$Ld2_retour = $_GET['Ld2'];}
   
     if (($Ld1_retour!='')&&($Ld2_retour!='')) {
     $rq="Select Nom_user from user, service, cellule
     WHERE service.Num_service=cellule.Num_service
     AND cellule.Num_cellule=user.Num_cellule
     AND service.Num_service=".$Ld1_retour." AND cellule.Num_cellule=".$Ld2_retour." order by Nom_user;";
     $rq_pos_id=0;
     $rq_pos_val=0;
     $result= mysql_query ($rq) or die ("Select impossible");
     $retour = '<select style="width: 320" name="Liste3" id="Liste3" size="1" onchange="Affiche_Btn();">';
     $retour .= '<option selected value="ca marche">';
     $retour.= $rep['Nom_user'];
     $retour.= '</option>';
     if (mysql_num_rows($result) != 0)
     {
     while ($row = mysql_fetch_row($result)) {
     $retour .= '<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';
     }
     $retour .= '</select>';
     } else {
     $retour = '<select  style="width: 320" name="Liste3" id="Liste3" size="1" disabled>';
     $retour .= '<option selected value="ca marche">';
     $retour.= $rep['Nom_user'];
     $retour.= '</option>';

     }
     mysql_free_result($result);
     mysql_close();
     }else{
     $retour = '<select  style="width: 320" name="Liste3" id="Liste3" size="1" disabled>';
     $retour .= '<option selected value="ca marche">';
     $retour.= $rep['Nom_user'];
     $retour.= '</option>';
     }
     echo $retour;
     }
     
     
     ?>

Voila merci de m'aider!!!

[ 'Tu trouveras toujours plus fort que toi' ]
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
20 janv. 2009 à 12:49
mea culpa, mea culpa, mea maxima culpa...

je n'aurais jamais du dire : on n'a pas assez de code pour répondre
0
cs_Vins974 Messages postés 104 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 20 février 2009
20 janv. 2009 à 12:54
Lol ben je sais pas je me suis dit qu'il faudrait que vous ayez tout pour mieux comprendre :-s
[ 'Tu trouveras toujours plus fort que toi' ]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
20 janv. 2009 à 12:57
certes, certes...
alors il nous faut les include, la base de données, et tout le reste....
         [mon Site] [M'écrire]  Bul         
0
cs_Vins974 Messages postés 104 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 20 février 2009
20 janv. 2009 à 13:05
ok, ben voila la Base de donnée en SQL apelé CIB :

-- phpMyAdmin SQL Dump
-- version 2.11.0
-- http://www.phpmyadmin.net
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
20 janv. 2009 à 13:31
j'abandonne...
[mon Site][M'écrire]Bul
0
cs_Vins974 Messages postés 104 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 20 février 2009
21 janv. 2009 à 05:02
Ah :-s ben tant pis, merci quand meme..

Cordialement

[ 'Tu trouveras toujours plus fort que toi' ]
0