IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

PHP & JS


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Par défaut PHP & JS
    Bonjour

    Je débute, j'essaie de comprendre, mais là je plante.
    Est-ce que quelqu'un pourrait m'aider ?
    Voila deux j'ai deux listes déroulantes "camp" et "block".
    Un formulaire de départ; "arrivée.php"
    un script java "camp_xhr.js"
    un fichier "u_block.php".

    J'arrive a créer ma première liste et à l'afficher.
    Mais pas la deuxième.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
      <div class="main_page_b" style="background-color:white">
      	<h1 align=center><?php echo $_SESSION['msg_104'] ;?> </h1>
      	<FONT size=2><CENTER><?php echo $_SESSION['msg_105'] ;?> </CENTER><BR/>
        <FORM class="form_3" method=post action="maj_arrivee.php" >
         Type Attribution : <SELECT Name="heb_statut" style="background-color:cyan;"  >
    	            <?php  
                        Connect_Base();
                        $sql_heb="SELECT C_LIB_HEB_STATUT FROM statut_heb ORDER BY C_ID_HEB_STATUT";
      	            $result = mysql_query($sql_heb);
      	            while ($row = mysql_fetch_assoc($result))
                         echo "<option value=\"".$row["C_LIB_HEB_STATUT"]."\""
                         .( ($row["C_LIB_HEB_STATUT"]==$_SESSION['heb_statut'] ) ? " selected" : "" )
                         .">".$row["C_LIB_HEB_STATUT"]."</option>" ;
      	            mysql_free_result($result);
    	           ?>
                       </SELECT> <BR/><BR/>
        Date attribution : <INPUT Name="heb_arr" size="20" 
                        value="<?php if (isset($_SESSION['heb_arr'])) echo $_SESSION['heb_arr'] ;?>" /><BR/><BR/>
        Date d&eacute;part pr&eacute;vue : <INPUT Name="heb_dep" size="23" 
                              value="<?php if (isset($_SESSION['heb_dep'])) echo $_SESSION['heb_dep'] ;?>" /><BR/><BR/>
        Installation occup&eacute;e :<BR><BR>
        Camp : 
           <?php
            /* Requete SQL de recuperation des donnees de la premiere liste */
           $sql_camp="SELECT C_ID_CAMP as idcamp, C_LIB_CAMP  FROM camp ORDER BY C_ID_CAMP";
           Connect_Base();
           $res_camp = mysql_query($sql_camp);
           /* Création du tableau PHP des valeurs récupérées */
           $camp = array();
           /* Index block par tableau camp */
           $id = 0;
           while($ligne = mysql_fetch_assoc($res_camp))
           {
             $camp[$ligne['idcamp']] = $ligne['C_LIB_CAMP'];
           }
          ?>
          <select name="heb_id_camp" id="camp" onchange="getBlock(this.value);">
          <option value="vide"></option>
           <?php
           /* Construction de la première liste : on se sert du tableau PHP */
           foreach($camp as $nr => $nom)
           {
             ?>
                      <option value="<?php echo($nom); ?>"><?php echo($nom); ?></option>
            <?php
        }
        ?>
        </select>
        <!-- ICI, le secret : on met un bloc avec un id ou va s'insérer le code de la seconde liste déroulande -->
        <?php $_SESSION['camp']= ($_POST['idcamp']); echo "jjjj".$_SESSION['camp']; ?> 
        <span id="SelectBlock"></span><br />
        Chambre : <SELECT Name="heb_id_chb" style="background-color:cyan;"  >
    	            <?php  
                        Connect_Base();
                        $sql_chb="SELECT C_ID_CHB FROM infrastructure ORDER BY C_ID_CHB
                        where C_ID_BLOCK="."\"".$_POST['heb_id_block']."\"".
                        " and C_FLAG_DISPO=\"OUI\"";
      	            $res_chb = mysql_query($sql_chb);
      	            while ($row = mysql_fetch_assoc($res_chb))
                         echo "<option value=\"".$row["C_ID_CHB"]."\""
                         .( ($row["C_ID_CHB"]==$_SESSION['heb_id_chb'] ) ? " selected" : "" )
                         .">".$row["C_ID_CHB"]."</option>" ;
      	            mysql_free_result($res_chb);
    	           ?>
                       </SELECT> 
        Lit : <SELECT Name="heb_id_lit" style="background-color:cyan;"  >
    	            <?php  
                        Connect_Base();
                        $sql_lit="SELECT C_ID_LIT FROM infrastructure ORDER BY C_ID_LIT
                        where C_ID_CHB="."\"".$_POST['heb_id_chb']."\"".
                        " and C_FLAG_DISPO=\"OUI\"";
      	            $res_lit = mysql_query($sql_lit);
      	            while ($row = mysql_fetch_assoc($res_lit))
                         echo "<option value=\"".$row["C_ID_LIT"]."\""
                         .( ($row["C_ID_LIT"]==$_SESSION['heb_id_lit'] ) ? " selected" : "" )
                         .">".$row["C_ID_LIT"]."</option>" ;
      	            mysql_free_result($res_lit);
    	           ?>
                       </SELECT> <BR/><BR/>
        Type de chambre : <INPUT Name="heb_typ_chb" READONLY size="22" 
                          value="<?php if (isset($_POST['heb_id_camp'])) { echo Recherche_Installation($_POST['heb_id_camp'],$_POST['heb_id_block'],$_POST['heb_id_chb'], $_POST['heb_id_lit']); } ?> " /><BR/><BR/>
        Commentaire h&eacute;bergement :<BR/>
        <TEXTAREA rows="3" name="heb_msg" cols="67" > 
                   <?php if (isset($_SESSION['heb_msg'])) echo $sql_block ;?> 
        </TEXTAREA><BR/>
             <INPUT  Value="Valider" type='submit' name="bt_heb" />
        </FORM>
        </FONT>  
      </div>
    Ensuite mon JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    /* Création de la variable globale qui contiendra l'objet XHR */
    var requete = null;
    function creerRequete()
    {
        try
        {
            /* On tente de créer un objet XmlHTTPRequest */
            requete = new XMLHttpRequest();
        }
        catch (microsoft)
        {
            /* Microsoft utilisant une autre technique, on essays de créer un objet ActiveX */
            try
            {
                requete = new ActiveXObject('Msxml2.XMLHTTP');
            }
            catch(autremicrosoft)
            {
                /* La première méthode a échoué, on en teste une seconde */
                try
                {
                    requete = new ActiveXObject('Microsoft.XMLHTTP');
                }
                catch(echec)
                {
                    /* À ce stade, aucune méthode ne fonctionne... mettez donc votre navigateur à jour ;) */
                    requete = null;
                }
            }
        }
        if(requete == null)
        {
            alert('Impossible de créer l\'objet requête,\nVotre navigateur ne semble pas supporter les object XMLHttpRequest.');
        }
    }
    /**
     * Fonction privée qui va mettre à jour l'affichage de la page.
     */
    function actualiserblock()
    {
        var listeBlock = requete.responseText;
        var SelectBlock = document.getElementById('SelectBlock');
        SelectBlock.innerHTML = listeBlock;
    }
     
    /**
     * Fonction publique appelée par la page affichée.
     * Cette fonction va initialiser la création de l'objet XHR puis appeler
     * le code serveur afin de récupérer les données à modifier dans la page.
     */
    function getBlock(idcamp)
    {
        /* Si il n'y a pas d'identifiant de camp, on fait disparaître la seconde liste au cas où elle serait affichée */
        if(idcamp == 'vide')
        {
            document.getElementById('SelectBlock').innerHTML = '';
        }
        else
        {
            /* À cet endroit précis, on peut faire apparaître un message d'attente */
            var SelectBlock = document.getElementById('SelectBlock');
           /* SelectBlock.innerHTML = "Traitement en cours, veuillez patienter..."+idcamp;   */
            /* On crée l'objet XHR */
            creerRequete();
            /* Définition du fichier de traitement */
            var url = 'u_block.php?idcamp='+idcamp;
            /* Envoi de la requête à la page de traitement */
            requete.open("POST", "arrivee.php", true); 
            requete.SetRequestHeader('Content-type', 'application/x-www-form-urlencoded');
            requete.send("idcamp="+idcamp);
            /* On surveille le changement d'état de la requête qui va passer successivement de 1 à 4 */
            requete.onreadystatechange = function()
            {
                /* Lorsque l'état est à 4 */
                if(requete.readyState == 4)
                {
                    /* Si on a un statut à 200 */
                    if(requete.status == 200)
                    {
                        /* Mise à jour de l'affichage, on appelle la fonction apropriée */
                        actualiserBlock();
                    }
                }
            };
            requete.send(null);
        }
    }
    Et enfin mon fichier PHP pour la creation du 2ème block
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    <?php
    session_start();
    /**
     * Code est appele par un objet XHR et qui
     * retourne la liste déroulante des blocks
     * correspondant à la camp sélectionnée.
     */
    /* On récupère l'identifiant de la région choisie. */
    $idcamp = isset($_POST['idcamp']) ? $_POST['idcamp'] : false;
    /* Si on a un camp, on procède à la requête */
    if(false !== $idcamp)
    {
        /* Cération de la requête pour avoir les blocks de ce camp */
        $sql_block="SELECT C_ID_BLOCK FROM infrastructure 
                        where C_ID_CAMP="."\"".$idcamp."\"".
                        " and C_FLAG_DISPO=\"OUI\" ORDER BY C_ID_BLOCK";
        Connect_Base();
        $rech_block = mysql_query($sql_block);
        /* Un petit compteur pour les blocks */
        $nd = 0;
        /* On crée un tableau pour les noms des blocks */
        $nom_block = array();
        /* On met les noms des blocks dans le tableaux */
        while(false != ($ligne_block = mysql_fetch_assoc($rech_block)))
        {
            echo $ligne_block['C_ID_BLOCK'];
            $nom_block[]  = $ligne_block['C_ID_BLOCK'];
            $nd++;
        }
        /* Maintenant on  construit la liste déroulante */
        $liste = "";
        $liste .= '<select name="heb_id_block" id="block" >'."\n";
        for($d = 0; $d < $nd; $d++)
        {
            $liste .= '  <option value="'. $nom_block[$d] .'">'. htmlentities($nom_block[$d]) .' ('. $nom_block[$d] .')</option>'."\n";
        }
        $liste .= '</select>'."\n";
        /* Un petit coup de balai */
        mysql_free_result($rech_block);
        /* Affichage de la liste déroulante */
        echo($liste);
    }
    /* Sinon on retourne un message d'erreur */
    else
    {
        echo("<p>Une erreur s'est produite. le camp sélectionné comporte une donnée invalide.</p>\n");
    }
    ?>
    J'attends vos conseils et/ou corrections avec impatience
    Merci à tous

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    Donnes nous le Code html généré pour le formulaire mais pas le code php et seulement le bout de code concerné mais pas tous.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo