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
    Points : 3
    Points
    3
    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
    Points : 15 059
    Points
    15 059
    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