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] Utilisation Ajax


Sujet :

JavaScript

  1. #21
    Membre éclairé Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Par défaut
    c'est tres simple en ce qui concerne la fonction go :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    function go( valeur , page , resultat )
    {
    alert("Fonction go appelée >> \n - valeur : " + valeur + "\n - page appelée : " + page + "\n -Destination resulat : " + resultat );
    }
    voila tu mets ça dans ta fonction ( au début par exemple ) , pour le premier select tu vas avoir un alert donc avec les infos qui vont bien .

    Si pour le second select il y a un probleme ( rien ne s'affiche ça veut dire que la fonction go dans le onchange n'est pas bien defini )

    Si l'alert se passe bien c'est le resultat qui n'est pas bon et dans ce cas le innerhtml ou dans la page principale tu as ecrit ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="text" name="processeur" id="processeur" readonly value="'.$resultat.'" />'

  2. #22
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Citation Envoyé par NeHuS
    kANKRELUNE &gt;&gt; il est obligé de passer par un div pour remplir les options du select , en effet IE et les innerhtml c'est pas le grand amour en ce qui concerne les select ....
    Non il n'est pas obligé de passer par une div... où est ce que tu as vu du innerHTML dans mon code... .. !

    Le code que je donne marche parfaitement sous IE, MOzilla/Firefox et Opéra... seul petit bug avec IE c'est qu'il ne veut pas afficher le processeur dans le champs text une fois les deux select sélectionnées... mais c'est à cause de l'id qui ne se transmet pas... .. .

    Le problème ne vient pas de mon code mais surement des requetes sql qui génèrent une erreure... .. .

    Donc reprennons... .. .

    Page testSelect.php (tu peux l'appeler comme tu veux... .. .

    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
    <html>
    <head>
    <script type="text/javascript">
    function getElement(id) 
    {
    	var Elem;
     
    	if(document.getElementById) 
    	{
    		if (typeof document.getElementById(id) == "object") 
    			Elem = document.getElementById(id);
    				else 
    					Elem = void(0);
    	} 
    	else if(document.all) 
    	{
    		if (typeof document.all[id] == "object") 
    			Elem = document.all[id];
    				else 
    					Elem = void(0);
    	} 
    	else if(document.layers) 
    	{
    		if (typeof document[id] == "object") 
    			Elem = document[id];
    				else 
    					Elem = void(0);
    	}
    	else Elem = void(0);
     
    	return Elem;
    }
     
     
    var xhr = null;
     
    function getXhr()
    {
    	if (window.XMLHttpRequest) 
    	{
    		xhr = new XMLHttpRequest();
    	}
    	else if (window.ActiveXObject)  // if IE
    	{ 
    		var ieversions = ['Msxml2.XMLHTTP',
    						  'Microsoft.XMLHTTP',
    						  'Msxml2.XMLHTTP.5.0',
    						  'Msxml2.XMLHTTP.4.0',
    						  'Msxml2.XMLHTTP.3.0'
    						 ]; 
     
    		for(var i=0; !xhr && i<ieversions.length; i++) 
    		{ 
    			try
    			{
    				xhr = new ActiveXObject(ieversions[i]);
    			} 
    			catch(e) 
    			{ 
    				xhr = null;
    			}
    		}
    	}
     
    	if(!xhr)// XMLHttpRequest non supporté par le navigateur
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    }
     
     
    /**
    * Méthode qui sera appelée sur le click du bouton
    */
    function updateSelect(select,form,target)
    {
    	getXhr();
     
    	xhr.onreadystatechange = function()
    	{
    		if(xhr.readyState == 4)
    		{		
    			if(xhr.status == 200 || xhr.status == 304)
    			{
    				getElement("debug").innerHTML = xhr.responseText;
    				eval(xhr.responseText);
    			}
    		}
    	};
     
    	xhr.open("POST","updateSelect.php",true);
    	xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    	xhr.send("form="+escape(form)+"&type="+escape(select.id)+"&id="+escape(select.value)+"&target="+escape(target));
    }
    </script>
    </head>
    <body>
    <form method="post" id="formulaire" action="base_enreg_saisie_materiel.php">
      <table width="100%" border="0">
        <tr>
          <td width="29%"><div align="right"><strong>Nom du mat&eacute;riel :</strong></div></td>
          <td width="25%"><strong>
            <select name="materiel" id="materiel" onChange="javascript:updateSelect(this,'formulaire','modele');">
    			<option value="">------</option>
    			<option value="test">test</option>
    			<option value="pwet">pwet</option>
    			<option value="plop">plop</option>
    			<?php
                            /*
                                    $materiel = $_GET["materiel"];
                                    echo '<option value="'.$materiel.'">'.$materiel.'</option>';
                                    
                                    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
                                            echo '<option value="'.$row['materiel'].'">'.$row['materiel'].'</option>';
                                            */
                            ?>
            </select></strong>
    		</td>
        </tr>
        <tr>
          <td><div align="right"><strong>Type de mat&eacute;riel : </strong></div></td>
          <td><strong>
            <div style="display:inline">
              <select name="modele" id="modele" onChange="javascript:updateSelect(this,'formulaire','processeur');">
                <option value="">------</option>
              </select>
    		</div>
    		</td>
    	</tr>
    	<tr>
          <td><div align="right"><strong>Processeur : </strong></div></td>
          <td><strong><input type="text" name="processeur" id="processeur" readonly value="" /></td>
    	</tr>
    	</form>
    </table>
    <br />
    responseText :
    <div id="debug"></div>
    </body>
    </html>
    Page updateSelect.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
    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
    <?php
     
    //echo '<pre>';
    //print_r($_POST);
    //echo '</pre>';
     
    if(!empty($_POST) || !empty($_GET))
    {
    	if(isset($_POST['type']))
    		$type = strip_tags($_POST['type']);
    			elseif(isset($_GET['type']))
    				$type = strip_tags($_GET['type']);
    					else
    						$type = '';
     
    	if(isset($_POST['id']))
    		$id = strip_tags($_POST['id']);
    			elseif(isset($_GET['id']))
    				$id = strip_tags($_GET['id']);
    					else
    						$id = '';
     
    	if(isset($_POST['form']))
    		$form = strip_tags($_POST['form']);
    			elseif(isset($_GET['form']))
    				$form = strip_tags($_GET['form']);
    					else
    						$form = '';
     
    	if(isset($_POST['target']))
    		$target = strip_tags($_POST['target']);
    			elseif(isset($_GET['target']))
    				$target = strip_tags($_GET['target']);
    					else
    						$target = '';
     
    	//require("connect_atelier.php");
    	$options = array(
    					'test' => array('test 1','test 2','test 3'),
    					'pwet' => array('pwet 1','pwet 2','pwet 3'),
    					'plop' => array('plop 1','plop 2','plop 3')
    					);
     
     
    	if($type == 'modele')
    	{
    		if($id != '')
    		{
    			/*$req = 'SELECT processeur FROM fiche_type WHERE modele="'.$id.'"';   
    			$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );
    			$row = mysql_fetch_assoc($res);
     
    			echo 'getElement("'.$target.'").value = "'.$row["processeur"].'";';*/
     
    			echo 'getElement("'.$target.'").value = "Intel '.$id.'";';
    		}
    		else echo 'getElement("'.$target.'").value = "";';
    	}
    	else
    	{
    		echo 'getElement("processeur").value = "";
    		var select = document.forms["'.$form.'"].elements["'.$target.'"];
    		select.options.length = 0;
    		select.options[select.options.length] = new Option("------");'; 
     
    		if($id != '')
    		{
    			/*$req = 'SELECT DISTINCT modele FROM fiche_type WHERE materiel=\''.$id.'\' ';   
    			$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );
     
    			while($row = mysql_fetch_assoc($res)) 
    				echo 'select.options[select.options.length] = new Option("'.$row["modele"].'");'; */
     
    			foreach($options[$id] as $option)
    				echo 'select.options[select.options.length] = new Option("'.$option.'");'; 
    		}
    	}
    }
    ?>
    Ca c'est le premier test... une fois que tu as constaté que ça marche tu décommante le code php dans la page html et vire les options test,pwet et plop... dans la page php tu décommente le code de requete et tu commente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'getElement("'.$target.'").value = "Intel '.$id.'";';
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    foreach($options[$id] as $option)
    	echo 'select.options[select.options.length] = new Option("'.$option.'");';
    Si ça marche pas tu devrais avoir le code retourné par la page php qui apparait en bas de la page html... dis nous les erreurs qu'il y a... si y a pas d'erreur essaye de simuler la requete sur la page php en passant les paramètres via l'url je l'ais modifié pour qu'elle accept les $_GET[*]

    @ tchaOo°

    ps : et plutot que de dire que tu trouve ça plus compliqué... n'hésite pas à demander une explication sur ce que tu ne comprend pas... .. .

  3. #23
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par défaut Ajax
    J'ai essaye ton truc NeHus et effectivement j'ai un probleme sur mon deuxieme select. Sur le premier j'ai bien l'alerte mais pas sur le deuxieme.
    Mon go() est donc mal defini mais je comprends pas pourquoi.
    C'est comme si il ne prenait pas mon choix dans le menu deroulat modele en compte.
    Où est-ce qu k'ai merdé dans ma page?

  4. #24
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut


    @ tchaOo°

  5. #25
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par défaut Ajax
    Merci pour la commande js


    "alert("Fonction go appelée >> \n - valeur : " + valeur + "\n - page appelée : " + page + "\n -Destination resulat : " + resultat );"



    Ca m'a permis de regler un soucis. Maintenant j'arrive a faire fonctionner ton alert sur les deux fonctions. En fait, il fallait que je mette le onchange dans ma page requete_modele.php.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    	echo "<select name='modele' id='idmodele' onChange=\"go('modele','requete_processeur.php','processeur')\">";
    	if(isset($_POST["idmateriel"])){
    		require("connect_atelier.php");
    		$req = 'SELECT DISTINCT modele FROM fiche_type WHERE materiel="'.$_POST["idmateriel"].'" ORDER BY modele ASC';   
    		$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );
    		while($row = mysql_fetch_assoc($res)){
    			echo "<option value='".$row["modele"]."'>".$row["modele"]."</option>";
    		}
    	}
    	echo "</select>";
    Par contre ca ne regle pas tout a fait mon soucis car le resultat n'arrive toujours pas dans mon input text.
    C'est quand meme le but au final lol

  6. #26
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par défaut Ajax
    Salut kankrelune,
    j'ai essaye tes script mais rien ne marche et je n'ai pas de message d'erreur.
    Par contre ce que j'ai fait plus haut à l'aide du control de NeHus fonctionne du moins ces deux controles se lancent et donc les deux fonctions go() marche mais je n'ai qu'un resultat celui du second select mais rien de nouveau sur mon input text.
    Cela viendrait-il du innerHTML?

  7. #27
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut


    Je sais pas comment tu fais... le code que je t'ais mis marche sous IE,Mozilla/Firefox,Opera... le seul bug que j'ais pu constater c'est la mise à jour du champs texte sous IE... .. .

    Tu as testé avec le code en l'état sans décomanter les requetes sql... .. ?

    @ tchaOo°

    ps : innerHTML est utilisé nul part dans mon code... .. .

  8. #28
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par défaut
    salut Kankrelune,
    Pour pouvoir faire ton truc j'ai tout vire de ma page sauf ce que tu m'a demande de faire ca donne cà :

    base_saisie_materiel.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
    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
     
    <html>
    <head>
    <?php
     
    require("connect_atelier.php");
    ?>
    <script type="text/javascript">
    function getElement(id) 
    {
    	var Elem;
     
    	if(document.getElementById) 
    	{
    		if (typeof document.getElementById(id) == "object") 
    			Elem = document.getElementById(id);
    				else 
    					Elem = void(0);
    	} 
    	else if(document.all) 
    	{
    		if (typeof document.all[id] == "object") 
    			Elem = document.all[id];
    				else 
    					Elem = void(0);
    	} 
    	else if(document.layers) 
    	{
    		if (typeof document[id] == "object") 
    			Elem = document[id];
    				else 
    					Elem = void(0);
    	}
    	else Elem = void(0);
     
    	return Elem;
    }
     
     
    var xhr = null;
     
    function getXhr()
    {
    	if (window.XMLHttpRequest) 
    	{
    		xhr = new XMLHttpRequest();
    	}
    	else if (window.ActiveXObject)  // if IE
    	{ 
    		var ieversions = ['Msxml2.XMLHTTP',
    						  'Microsoft.XMLHTTP',
    						  'Msxml2.XMLHTTP.5.0',
    						  'Msxml2.XMLHTTP.4.0',
    						  'Msxml2.XMLHTTP.3.0'
    						 ]; 
     
    		for(var i=0; !xhr && i<ieversions.length; i++) 
    		{ 
    			try
    			{
    				xhr = new ActiveXObject(ieversions[i]);
    			} 
    			catch(e) 
    			{ 
    				xhr = null;
    			}
    		}
    	}
     
    	if(!xhr)// XMLHttpRequest non supporté par le navigateur
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    }
     
     
    /**
    * Méthode qui sera appelée sur le click du bouton
    */
    function updateSelect(select,form,target)
    {
    	getXhr();
     
    	xhr.onreadystatechange = function()
    	{
    		if(xhr.readyState == 4)
    		{		
    			if(xhr.status == 200 || xhr.status == 304)
    			{
    				getElement("debug").innerHTML = xhr.responseText;
    				eval(xhr.responseText);
    			}
    		}
    	};
     
    	xhr.open("POST","updateSelect.php",true);
    	xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    	xhr.send("form="+escape(form)+"&type="+escape(select.id)+"&id="+escape(select.value)+"&target="+escape(target));
    }
    </script>
    </head>
    <body>
    <form method="post" id="formulaire" action="base_enreg_saisie_materiel.php">
      <table width="100%" border="0">
        <tr>
          <td width="29%"><div align="right"><strong>Nom du mat&eacute;riel :</strong></div></td>
          <td width="25%"><strong>
            <select name="materiel" id="materiel" onChange="javascript:updateSelect(this,'formulaire','modele');">
    			<?php
                    
                                    $materiel = $_GET["materiel"];
                                    $select = 'SELECT DISTINCT materiel FROM materiel ORDER BY materiel desc';
                                    $result = mysql_query($select,$connect) or die ('Erreur : '.mysql_error() );
                                    echo '<option value="'.$materiel.'">'.$materiel.'</option>';
                                    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
                                            echo '<option value="'.$row['materiel'].'">'.$row['materiel'].'</option>';
                                    
                            ?>
            </select></strong>
    		</td>
        </tr>
        <tr>
          <td><div align="right"><strong>Type de mat&eacute;riel : </strong></div></td>
          <td><strong>
            <div style="display:inline">
              <select name="modele" id="modele" onChange="javascript:updateSelect(this,'formulaire','processeur');">
                <option value="">------</option>
              </select>
    		</div>
    		</td>
    	</tr>
    	<tr>
          <td><div align="right"><strong>Processeur : </strong></div></td>
          <td><strong><input type="text" name="processeur" id="processeur" readonly value="" /></td>
    	</tr>
    	</form>
    </table>
    <br />
    responseText :
    <div id="debug"></div>
    </body>
    </html>
    et pour updateSelect.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
    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
     
    <?php
     
    //echo '<pre>';
    //print_r($_POST);
    //echo '</pre>';
     
    if(!empty($_POST) || !empty($_GET))
    {
    	if(isset($_POST['type']))
    		$type = strip_tags($_POST['type']);
    			elseif(isset($_GET['type']))
    				$type = strip_tags($_GET['type']);
    					else
    						$type = '';
     
    	if(isset($_POST['id']))
    		$id = strip_tags($_POST['id']);
    			elseif(isset($_GET['id']))
    				$id = strip_tags($_GET['id']);
    					else
    						$id = '';
     
    	if(isset($_POST['form']))
    		$form = strip_tags($_POST['form']);
    			elseif(isset($_GET['form']))
    				$form = strip_tags($_GET['form']);
    					else
    						$form = '';
     
    	if(isset($_POST['target']))
    		$target = strip_tags($_POST['target']);
    			elseif(isset($_GET['target']))
    				$target = strip_tags($_GET['target']);
    					else
    						$target = '';
     
    	//require("connect_atelier.php");
    	$options = array(
    					'test' => array('test 1','test 2','test 3'),
    					'pwet' => array('pwet 1','pwet 2','pwet 3'),
    					'plop' => array('plop 1','plop 2','plop 3')
    					);
     
     
    	if($type == 'modele')
    	{
    		if($id != '')
    		{
    			/*$req = 'SELECT processeur FROM fiche_type WHERE modele="'.$id.'"';   
    			$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );
    			$row = mysql_fetch_assoc($res);
     
    			echo 'getElement("'.$target.'").value = "'.$row["processeur"].'";';*/
     
    			/*echo 'getElement("'.$target.'").value = "Intel '.$id.'";';  */ }
    		else {
    		echo 'getElement("'.$target.'").value = "";';  }
    	}
    	else
    	{
    		echo 'getElement("processeur").value = "";
    		var select = document.forms["'.$form.'"].elements["'.$target.'"];
    		select.options.length = 0;
    		select.options[select.options.length] = new Option("------");'; 
     
    		if($id != '')
    		{
    			/*$req = 'SELECT DISTINCT modele FROM fiche_type WHERE materiel=\''.$id.'\' ';   
    			$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );
     
    			while($row = mysql_fetch_assoc($res)) 
    				echo 'select.options[select.options.length] = new Option("'.$row["modele"].'");'; */
     
    		       /*	foreach($options[$id] as $option)  
    				echo 'select.options[select.options.length] = new Option("'.$option.'");';  */
    		}
    	}
    }
    ?>
    Et voilà le message d'erreur qu'il me retourne lorsque je choisis un element de mon premier select:

    responseText :
    getElement("processeur").value = ""; var select = document.forms["formulaire"].elements["modele"]; select.options.length = 0; select.options[select.options.length] = new Option("------");


    et quand je ne decommante pas avec pwet.... ca donne :

    responseText :
    getElement("processeur").value = ""; var select = document.forms["formulaire"].elements["modele"]; select.options.length = 0; select.options[select.options.length] = new Option("------");select.options[select.options.length] = new Option("pwet 1");select.options[select.options.length] = new Option("pwet 2");select.options[select.options.length] = new Option("pwet 3");

  9. #29
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    A première vu il n'y a aucune erreur dans le code retourné... as tu vérifié que le contenu du select ne changeait pas car j'ais laisser le "------" en première option même une fois que celui ci est mis à jour... .. .

    @ tchaOo°

  10. #30
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par défaut Ajax
    Merci à toi ca y est ca marche du moins avec tes pages php. j'arrive à faire mes deux requetes et à obtenir le resultat atendu.
    Par contre je n'arrive pas à l'integrer dans ma page initiale. Si je vire
    responseText :
    <div id="debug"></div>
    ca marche plus.
    Bizarre

  11. #31
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Non c'est normal... .. .

    remplace...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(xhr.status == 200 || xhr.status == 304)
    {
    	getElement("debug").innerHTML = xhr.responseText;
    	eval(xhr.responseText);
    }
    Par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(xhr.status == 200 || xhr.status == 304)
    	eval(xhr.responseText);


    @ tchaOo°

    ps : par contre j'ais toujours pas trouvé d'où venait le bug avec le input text sous IE... mais bon... j'ais pas cherché non plus ça doit pas être sorcier... .. .

  12. #32
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par défaut Ajax
    Alors toi, tu es vraiment trop fort. Là tu m'epates. Comme on dit : Respect Man.
    je vais juste abuser un peu et apres je t'embete plus.
    voilà. En fait, ma requete sur le modele me donne trois ellement : le processeur que tu as resolu avec brio, la capacité disque dur et la ram du PC.
    J'ai toute ces infos sur une requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	$req = 'SELECT processeur,disque,ram FROM fiche_type WHERE modele="'.$id.'"';   
    			$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );
    			$row = mysql_fetch_assoc($res);
    Tu comprends bien que j'ai 3 input text du meme type que processeur.
    Comment puis-je faire pour afficher les trois en meme temps sur le select de mon modele?

    voilà le code de ma page principale

    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
    <form method="post" name="formulaire" action="base_enreg_saisie_materiel.php">
      <table width="100%" border="0">
        <tr>
          <td width="29%"><div align="right"><strong>Nom du mat&eacute;riel :</strong></div></td>
          <td width="25%"><strong><strong>
            <select name='materiel' id='materiel' onChange="javascript:requete('requete_materiel.php',this,'formulaire','modele');">
              <?php
    	$materiel=$_GET["materiel"];
    	echo '<option value="'.$materiel.'">'.$materiel.'</option>';
    	while ($row= mysql_fetch_array($result, MYSQL_ASSOC)) 
    	{$var= $row["materiel"];
    	echo '<option value="'.$var.'">'.$var.'</option>';
    	}
    	?>
            </select>
          </strong></strong></td>
          <td width="6%">&nbsp;</td>
          <td width="40%"></td>
        </tr>
        <tr>
          <td><div align="right"><strong>Type de mat&eacute;riel : </strong></div></td>
          <td><strong>
            <div id='modele'>
              <select name='modele' id='modele' onChange="javascript:requete('requete_materiel.php',this,'formulaire','processeur');">
                <option value='-1'></option>
              </select>
              </div>
          </strong></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          
          <td><div align="right"><strong>Type de processeur : </strong></div></td>
          <td><strong><input type="text" name="processeur" id="processeur" readonly value="" />
          </strong></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td><div align="right"><strong>Capacit&eacute; du disque dur : </strong></div></td>
          <td>
              <input type="text" name="disque" id="disque" readonly >
                 </td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td><div align="right"><strong>Capacit&eacute; de la m&eacute;moire vive : </strong></div></td>
          <td>
              <input type="text" name="ram" id="ram" readonly /></div></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
    J'ai essayé cà mais ca marche pas. Ca me met la ram sur le input du processeur.

    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
    	require("connect_atelier.php");
    
    	
    	if($type == 'modele')
    	{
    		if($id != '')
    		{
    			$req = 'SELECT processeur,disque,ram FROM fiche_type WHERE modele="'.$id.'"';   
    			$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );
    			$row = mysql_fetch_assoc($res);
    			
    			echo 'getElement("'.$target.'").value = "'.$row["processeur"].'";'; 
    			echo 'getElement("'.$target.'").value = "'.$row["disque"].'";';
    			echo 'getElement("'.$target.'").value = "'.$row["ram"].'";';
    		
    		}
    	
    	}

  13. #33
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par défaut Ajax
    C'est bon j'ai trouvé voilà ce que j'ai fait

    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
     
    <?php
     
     
    if(!empty($_POST) || !empty($_GET))
    {
    	if(isset($_POST['type']))
    		$type = strip_tags($_POST['type']);
    			elseif(isset($_GET['type']))
    				$type = strip_tags($_GET['type']);
    					else
    						$type = '';
     
    	if(isset($_POST['id']))
    		$id = strip_tags($_POST['id']);
    			elseif(isset($_GET['id']))
    				$id = strip_tags($_GET['id']);
    					else
    						$id = '';
     
    	if(isset($_POST['form']))
    		$form = strip_tags($_POST['form']);
    			elseif(isset($_GET['form']))
    				$form = strip_tags($_GET['form']);
    					else
    						$form = '';
     
    	if(isset($_POST['target']))
    		$target = strip_tags($_POST['target']);
    			elseif(isset($_GET['target']))
    				$target = strip_tags($_GET['target']);
    					else
    						$target = '';
     
    	if(isset($_POST['target1']))
    		$target1 = strip_tags($_POST['target1']);
    			elseif(isset($_GET['target1']))
    				$target1 = strip_tags($_GET['target1']);
    					else
    						$target1 = '';
     
    	if(isset($_POST['target2']))
    		$target2 = strip_tags($_POST['target2']);
    			elseif(isset($_GET['target2']))
    				$target2 = strip_tags($_GET['target2']);
    					else
    						$target2 = '';
     
     
    	require("connect_atelier.php");
     
     
    	if($type == 'modele')
    	{
    		if($id != '')
    		{
    			$req = 'SELECT processeur,disque,ram FROM fiche_type WHERE modele="'.$id.'"';   
    			$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );
    			$row = mysql_fetch_assoc($res);
     
    			echo 'getElement("'.$target.'").value = "'.$row["processeur"].'";';
    		        echo 'getElement("'.$target1.'").value = "'.$row["disque"].'";';
    		        echo 'getElement("'.$target2.'").value = "'.$row["ram"].'";';
    		}
     
    	}
    	else
    	{
    		echo 'getElement("processeur").value = "";
    		var select = document.forms["'.$form.'"].elements["'.$target.'"];
    		select.options.length = 0;
    		select.options[select.options.length] = new Option("");'; 
     
    		if($id != '')
    		{
    			$req = 'SELECT DISTINCT modele FROM fiche_type WHERE materiel=\''.$id.'\' ';   
    			$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );
     
    			while($row = mysql_fetch_assoc($res)) 
    			echo 'select.options[select.options.length] = new Option("'.$row["modele"].'");'; 
     
     
    		}
    	}
    }
    ?>
    Voilà ca marche j'espere que j'ai pas fait d'erreur? en tout cas ca marche
    Encore Merci pour tout. Sans toi j'etais perdu

  14. #34
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut


    Il pourrait être pas mal de remplacer...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    else
    {
    	echo 'getElement("processeur").value = "";
    	var select = document.forms["'.$form.'"].elements["'.$target.'"];
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    else
    {
    	echo 'getElement("processeur").value = "";
            getElement("disque").value = "";
            getElement("ram").value = "";
    	var select = document.forms["'.$form.'"].elements["'.$target.'"];
    Mais c'est du détail... .. .

    @ tchaOo°

  15. #35
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par défaut Ajax
    salut à tous,
    voilà j'utilise un script que l'on m'a fourni ici pour mettre à jour des menus déroulant et ca fonctionne tres bien avec tout ce qu'on a fait precedemment.
    Par contre, quand je veux raffaichir un menu deroulant sur lui meme ca marche pas. Ca marche qu'avec un lien mais ca recharge ma page et je comprends pas pourquoi et je veux surtout pas recharger ma page alors que ca marche bien avec le reste.

    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
    <script type="text/javascript">
    function getElement(id) 
    {
    	var Elem;
     
    	if(document.getElementById) 
    	{
    		if (typeof document.getElementById(id) == "object") 
    			Elem = document.getElementById(id);
    				else 
    					Elem = void(0);
    	} 
    	else if(document.all) 
    	{
    		if (typeof document.all[id] == "object") 
    			Elem = document.all[id];
    				else 
    					Elem = void(0);
    	} 
    	else if(document.layers) 
    	{
    		if (typeof document[id] == "object") 
    			Elem = document[id];
    				else 
    					Elem = void(0);
    	}
    	else Elem = void(0);
     
    	return Elem;
    }
     
     
    var xhr = null;
     
    function getXhr()
    {
    	if (window.XMLHttpRequest) 
    	{
    		xhr = new XMLHttpRequest();
    	}
    	else if (window.ActiveXObject)  // if IE
    	{ 
    		var ieversions = ['Msxml2.XMLHTTP',
    						  'Microsoft.XMLHTTP',
    						  'Msxml2.XMLHTTP.5.0',
    						  'Msxml2.XMLHTTP.4.0',
    						  'Msxml2.XMLHTTP.3.0'
    						 ]; 
     
    		for(var i=0; !xhr && i<ieversions.length; i++) 
    		{ 
    			try
    			{
    				xhr = new ActiveXObject(ieversions[i]);
    			} 
    			catch(e) 
    			{ 
    				xhr = null;
    			}
    		}
    	}
     
    	if(!xhr)// XMLHttpRequest non supporté par le navigateur
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    }
     
     
    /**
    * Méthode qui sera appelée sur le click du bouton
    */
    function requete(page,select,form,target,target1,target2,target3,target4)
    {
    	getXhr();
     
    	xhr.onreadystatechange = function()
    	{
    		if(xhr.readyState == 4)
    		{		
    		if(xhr.status == 200 || xhr.status == 304)
    			eval(xhr.responseText);
    		}
    	};
     
    	xhr.open("POST",page,true);
    	xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    	xhr.send("form="+escape(form)+"&type="+escape(select.id)+"&id="+escape(select.value)+"&target="+escape(target)+"&target1="+escape(target1)+"&target2="+escape(target2)+"&target3="+escape(target3)+"&target4="+escape(target4));
    }
     
    </script>
     
    .............................
     
    <div id="divoam" onclick="javascript:requete('requete_oam.php','oam','formulaire','divoam');">
           <?php
            echo "<select name='oam' id='oam' style='width:240' >";
            echo "<option value=''></option>";
            $req10 = 'SELECT DISTINCT oam FROM oam ';
            $res10 = mysql_query($req10,$connect) or die ('Erreur : '.mysql_error() );
            while($row10 = mysql_fetch_assoc($res10)){
            echo "<option value='".$row10['oam']."'>".$row10['oam']."</option>";
            }
            echo "</select>";
            ?>      
    	</div>
          </td>
          <td><a href="param_oam.php" onClick="window.open(this.href); return false;"><strong><img src="./icone/enreg.gif" alt="image"></strong></a></td>
          <td><strong><a href="" onclick="javascript:requete('requete_oam.php','oam','formulaire','divoam');"><img src="./icone/rechargement.gif" alt="image" ></td>
        </tr>
    et le code de ma page requete_oam.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
    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
     
     <?php
     if(!empty($_POST) || !empty($_GET))
    {
    	if(isset($_POST['type']))
    		$type = strip_tags($_POST['type']);
    			elseif(isset($_GET['type']))
    				$type = strip_tags($_GET['type']);
    					else
    						$type = '';
     
    	if(isset($_POST['id']))
    		$id = strip_tags($_POST['id']);
    			elseif(isset($_GET['id']))
    				$id = strip_tags($_GET['id']);
    					else
    						$id = '';
     
    	if(isset($_POST['form']))
    		$form = strip_tags($_POST['form']);
    			elseif(isset($_GET['form']))
    				$form = strip_tags($_GET['form']);
    					else
    						$form = '';
     
    	if(isset($_POST['target']))
    		$target = strip_tags($_POST['target']);
    			elseif(isset($_GET['target']))
    				$target = strip_tags($_GET['target']);
    					else
    						$target = '';
     
     
    	if($type == 'oam')
    	{
    		if($id != '')
    		{       
    		$str = "<select name='oam' id='oam' style='width:240'>\n";
            	$str.= "<option value=''></option>\n";
    		require("connect_atelier.php");
    		$req = 'SELECT DISTINCT oam FROM oam ';   
           		$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );
           		while($row = mysql_fetch_assoc($res)){
    		        $str.="<option value='".$row['oam']."'>".$row['oam']."</option>";
    		}
    	        $str.="</select>";  
    		echo 'document.getElementById("'.$target.'").innerHTML = '.$str.';';
     
    		}
     
    	}
     
    }
     
     
    ?>
    Je comprends pas ce qui va pas. Ca marche avec mon lien de raffraichissement mais ca recharge ma page alors que ca marche pas quand je clique sur mon menu.

Discussions similaires

  1. [AJAX] Utilisation AJAX avec IE
    Par Death83 dans le forum Général JavaScript
    Réponses: 42
    Dernier message: 01/07/2006, 21h33
  2. [AJAX] Utilisation Ajax et IE
    Par Seb06 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/06/2006, 13h56
  3. [AJAX] Utilisation ajax
    Par Benjiijneb dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/04/2006, 19h48
  4. [AJAX] Utilisation AJAX
    Par topolino dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/02/2006, 10h30
  5. [AJAX] Utilisation AJAX
    Par illegalsene dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 24/01/2006, 12h55

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