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] Recharger un menu deroulant php sans recharger la page


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    60
    D�tails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par d�faut [AJAX] Recharger un menu deroulant php sans recharger la page
    Bonjour � tous,
    Voil� j'ai une page php avec un menu deroulant � partir d'une requete mysql et � cote un bouton-lien qui renvoie sur une nouvelle page php pour mettre � jour cette base si l'option n'est pas pr�sente dans le menu deroulant. Une fois le rajout effectu�, j'aimerais mettre � jour mon menu deroulant sans recharger ma page initiale.
    Est-ce possible?
    Merci d'avance.

  2. #2
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par d�faut
    Pas en PHP : une ex�cution en PHP est toujours sur le serveur, donc il faut un rechargement.

    Ajax peut sans doute faire ce que tu recherches.

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    60
    D�tails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par d�faut recharger un menu deroulant php
    Je sais j'ai dej� un fonction ajax mais elle fonctionne pas pour ce menu deroulant voila 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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    <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>
     
    .........
     
     
    <select name="oam" id="oam" onClick="javascript:requete('requete_oam.php',this,'formulaire');"  />
            <?php
            $oam=$_GET["oam"];
            echo '<option value="'.$oam.'">'.$oam.'</option>';
            while ($row1= mysql_fetch_array($result1, MYSQL_ASSOC)) 
            {$var1= $row1["oam"];
            echo '<option value="'.$var1.'">'.$var1.'</option>';
            }
            ?>
    	</select>
    Ca c ma page principale. et voila 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
    57
     
     
    <?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 = '';
     
     
     
     
     
    	require("connect_atelier.php");
     
     
    	if($type == 'oam')
    	{
    		if($id != '')
    		{
    			$req = 'SELECT oam FROM oam WHERE oam="'.$id.'"';   
    			$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );  
    			echo "<select name='oam' id='oam'>";
    		        echo '<option value=""></option>';
           			while ($row= mysql_fetch_array($res, MYSQL_ASSOC)) 
           			{$var1= $row["oam"];
           			echo '<option value="'.$var1.'">'.$var1.'</option>';  
           			echo "</select>";
           			}
     
     
    		}
     
     
     
    	}
    }
    ?>
    mais ca marche pas pour le menu deroulant. la fonction fonctionne pour d'autre element donc c vient pas de ma fonction mais putot de ma page requete_oam.php je pense
    Merci d'avance

  4. #4
    Membre �prouv�
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    F�vrier 2005
    Messages
    3 514
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : SQL
    Secteur : Finance

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 3 514
    Par d�faut
    J'ai pas regard� ton code parce que j'ai la fleme grave surtout un lundi. Je peux te dire que �a fonctionne. Tu as deux moyen.
    1 : tu fabrique de toute piece ton menu select cot� client et le menu select actuel est plac� dans un div. AJAX va appel� le fichier php qui va g�n�rer le code html du select et va afficher le contenu dans le div contenant l'ancien select.
    2 : Soit tu alimentes le select en construisant les fonctionns javascript cot� client. En faite c'est php qui genere cette fonction. Je t'avous que je me rappelle plus trop comment ajouter un �l�ment d'un select mais c'est facile � trouver.

    Edit apres avoir eu le courage de lire une partie de ton code tu as pris la premiere solution. Je crois que ton eval ne va pas fonctionner. fait ceci

    //mondiv c'est le div contenant l'ancien <select>.

    document.getElementById(mondiv).innerHTML = xhr.responseText;

  5. #5
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    60
    D�tails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par d�faut Select avec Ajax
    J'ai essaye ton truc mais ca ne marche pas j'ai surement une erreur dans mon code voil� une partie de mon script:

    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
     
    	function go(){
    				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){
     
    						// On se sert de innerHTML pour rajouter les options a la liste
    						document.getElementById('oam').innerHTML = xhr.responseText;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("GET","requete_oam.php",true);
    				xhr.send(null);
    			}
     
    ................
     
    voilà mon select : 
     
     
    <div id='oam' style='display:inline' onclick='go()'>
          <select name='oam' id='oam' style="width:240" >
            <option value=''></option>
          </select>
          </div>
    et voila le code de ma 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
     
    <?php
            echo "<select name='oam' id='oam' style='width:240'>";
            echo "<option value=''></option>";
            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)){
                    echo "<option value='".$row["oam"]."'>".$row["oam"]."</option>";
                    }
            echo "</select>";  
    ?>

    Merci encore

  6. #6
    Membre �prouv�
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    F�vrier 2005
    Messages
    3 514
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : SQL
    Secteur : Finance

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 3 514
    Par d�faut
    Dans l'id�e c'est �a .
    - As-tu execut� le fichier requete_oam.php seul pour voir s'il y avait pas une erreur cot� php ?
    - As-tu test� qu'il rentrait bien dans
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    if(xhr.readyState == 4 && xhr.status == 200){
    - As-tu test� que le div re�oit bien le contenu ?

    - As-tu fais le test sous FireFox et regard� dans le debuger de ce dernier ?

Discussions similaires

  1. [MySQL] selected dans un menu deroulant Php.
    Par sihammaster dans le forum PHP & Base de donn�es
    R�ponses: 3
    Dernier message: 26/06/2012, 14h36
  2. Charger une page sans recharger le menu flash
    Par overtrack dans le forum ActionScript 1 & ActionScript 2
    R�ponses: 0
    Dernier message: 27/04/2009, 12h25
  3. [MySQL] Actualiser donn�es PHP sans recharger page
    Par herve94400 dans le forum PHP & Base de donn�es
    R�ponses: 1
    Dernier message: 15/10/2008, 15h44
  4. [SQL] Menu deroulant PHP dynamique requete SQL
    Par pit2121 dans le forum PHP & Base de donn�es
    R�ponses: 2
    Dernier message: 21/12/2007, 16h16
  5. [AJAX] autocompletion sur menu deroulant
    Par bourvil dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 27/02/2007, 15h44

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