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 :

[AJAX] lier deux listes avec AJAX


Sujet :

JavaScript

  1. #1
    Membre du Club Avatar de batoule80
    Inscrit en
    Février 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 116
    Points : 53
    Points
    53
    Par défaut [AJAX] lier deux listes avec AJAX
    bonjour,

    j'ai éssayer de suivre le tuto d'ajax concernant la liaison de deux listes dynamiques mais aucun élément de la deuxième listes n'est affiché

    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
     
     
     
    <script type='text/javascript'>
     
    			function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr;
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go(){
    				var xhr = getXhr();
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les options a la liste
    						document.getElementById('fk_sous_type_incident').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","ajaxSousTypeIncident.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id du type incident
    				sel = document.getElementById('fk_type_incident');
    				FK_type_incident = sel.options[sel.selectedIndex].value;
    				xhr.send("fk_type_incident="+FK_type_incident);
    			}
    		</script>
     
     
    le code html :
     
     
    <tr>
                      <td width="25%"> Type d'incident :</td>
     
     
    				   <?php $Result=mysql_query("select * from hd_type_incident")or die(mysql_error());
              
                     $nb = mysql_num_rows($Result);  
                 $ListDir = '<option value="0">Type incident</option>'; 
    while ($tmpObject = mysql_fetch_object($Result)) //tant qu'il y a des types d'incidents, on les affiche
    {
       $ListDir .= '<option value="'.$tmpObject->id_type_incident.'">'.$tmpObject->type_incident.'</option>';
    }
    ?>
    				  <td width="15%" >
    				     <select name='fk_type_incident' id='fk_type_incident' onchange='go()'>
                            <?php echo $ListDir?>
                          </select>                  </td>
     
     
     
     
    		          <td >
    				  <div id='fk_sous_type_incident' style='display:inline'>
    				    <select name='fk_sous_type_incident'>
                          <option value='0'>Choisir un type d'incident</option>
                        </select>
    				  </div>				  </td>
    		</tr>
    le fichier ajaxSousTypeIncident.php :

    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
     
    <?php
            echo "<select name='fk_sous_type_incident'>";  
            if(isset($fk_type_incident)) 
            {
                                     $result = db_connect();
                      if (!$result)
                      die(mysql_error());
     
         // selection de la base de données 
    $select  = mysql_select_db($dbName,$result);
       if (!$select)
       die(mysql_error());
                    $res = mysql_query("SELECT * FROM hd_sous_type_incident 
                            WHERE fk_type_incident=".$fk_type_incident." ORDER BY sous_type_incident");
                    while($row = mysql_fetch_object($res))
                    {
                            echo "<option value='".$row->id_sous_type_incident."'>".$row->sous_type_incident."</option>";
                    }
            }
            echo "</select>";
    ?>
    mes deux tables :

    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
     
     
    CREATE TABLE `hd_type_incident` (
      `id_type_incident` int(11) NOT NULL auto_increment PRIMARY KEY,
      `type_incident` text NOT NULL, 
      `description` text NOT NULL,
      `fk_user` int(11),
       FOREIGN KEY(fk_user) REFERENCES hd_utilisateur(id_user) ON DELETE CASCADE ON UPDATE CASCADE,
       INDEX(fk_user)
    )TYPE=INNODB;";  
     
     
    CREATE TABLE `hd_sous_type_incident` (
      `id_sous_type_incident` int(11) NOT NULL auto_increment PRIMARY KEY,
      `sous_type_incident` text NOT NULL,
      `description` text NOT NULL,
      `fk_type_incident` int(11),
       FOREIGN KEY(fk_type_incident) REFERENCES hd_type_incident(id_type_incident) ON DELETE CASCADE ON   UPDATE CASCADE,
       INDEX(fk_type_incident)
     
    )TYPE=INNODB;";
    merci d'avance à tous ceux qui prendront du temps pour lire mon message

  2. #2
    Membre du Club Avatar de batoule80
    Inscrit en
    Février 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 116
    Points : 53
    Points
    53
    Par défaut
    j'ai pu régler mon problème

    je met mon nouveau code pour ceux qui ont auront besoin :

    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
     
     
    <?php
    			// connexion à la base
     include('fonctions.php');
     
     echo "<select name='fk_sous_type_incident'>";  
      if(isset($_POST['fk_type_incident']))              $fk_type_incident = $_POST['fk_type_incident'];
    else      $fk_type_incident="";
     
    				   $result = db_connect();
                      if (!$result)
                      die(mysql_error());
     
         // selection de la base de données 
    $select  = mysql_select_db($dbName,$result);
       if (!$select)
       die(mysql_error());
     
     
     
    		    $res = mysql_query("SELECT * FROM hd_sous_type_incident 
    			WHERE fk_type_incident=".$fk_type_incident." ORDER BY sous_type_incident");
    		while($row = mysql_fetch_object($res))
    		{
    			echo "<option value='".$row->id_sous_type_incident."'>".$row->sous_type_incident."</option>";
    		}
     
    	echo "</select>";
    ?>
    mais une autre question : y'aurai t_il un moyen d'nclure le code de la page ajaxSousTypeIncident.php dans la page add_incident.php " ma page proncipale " ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Lier deux listes déroulantes avec ajax
    Par king_soft dans le forum AJAX
    Réponses: 1
    Dernier message: 07/01/2011, 09h49
  2. [1.x] Lier deux liste avec les filtres symfony
    Par jotatan dans le forum Symfony
    Réponses: 8
    Dernier message: 04/01/2011, 17h01
  3. [AJAX] Lier une liste avec un tableau avec Ajax
    Par hakou08 dans le forum AJAX
    Réponses: 4
    Dernier message: 03/04/2009, 10h53
  4. [MySQL] Lier deux listes avec AJAX
    Par batoule80 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/09/2008, 00h00
  5. [AJAX] lier deux listes déroulantes alimenté par une base de données (Mysql)
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/04/2007, 01h06

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