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

PHP & Base de données Discussion :

Récupérer 'value' dans une 'function' ajax


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Par défaut Récupérer 'value' dans une 'function' ajax
    Bonjour, j'expose mon problème

    J'ai un menu déroulant qui appel automatiquement deux autres menus déroulants
    le soucis, c'est que je n'ai que la valeur du 1er menu déroulant qui rempli ma base mysql !

    Ca ne doit pas être grand chose, mais je tourne un peu en rond là !

    voici le code :

    ajax.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
    function ajax(strthis)
    {
    	var param = strthis.value;
                    var codedial = document.getElementById("codedial").options[document.getElementById("codedial").selectedIndex].value;
    	$("#tr_intitule").empty();
    	$.ajax
    	(
    		{
    			type: "POST",
    			url: "select_intitule.php",
    			data: "var="+param,
    			success: 
    			function(msg)
    			{
    				$("#tr_intitule").append("<td>"+ msg +"</td>");
    			}
    		}
     
    	);
     
    	var param = strthis.value;
                    var codedial = document.getElementById("codedial").options[document.getElementById("codedial").selectedIndex].value;
    	$("#tr_unite").empty();
    	$.ajax
    	(
    		{
    			type: "POST",
    			url: "select_unite.php",
    			data: "var="+param,
    			success: 
    			function(msg)
    			{
    				$("#tr_unite").append("<td>"+ msg +"</td>");
    			}
    		}
     
    	);
    }
    form1.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
     
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript" src="ajax.js"></script>
    <form method="POST" action="valide1.php" name="caapp">						<tr align="center">
    						  <td><div align="right">Code : </div></td>
                              <td><div align="left"><?php include('select_codedial.php')?></div></td>
                            </tr>
     
    						<tr align="center">
    						  <td><div align="right">Unité d'Emploi : </div></td>
                              <td><div align="left" id='tr_unite'><?php include('select_unite.php')?></div></td>
                            </tr>
     
    						<tr align="center">
    						  <td><div align="right">Intitulé Code : </div></td>
                              <td><div align="left" id='tr_intitule'><?php include('select_intitule.php')?></div></td>
                            </tr>
                          <tr align="center">
                            <td colspan="2"><input type="submit" value="Envoyer" /></td>
                            </tr>
                        <input type="hidden" name="id" value="<?php echo($id) ;?>">
                      </form>
    select_codedial.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
     
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript" src="ajax.js"></script>
    <select id='codedial' name='codedial' onchange="ajax(this)">
    <option value='void_codedial'>-</option>
      <?php
        include("../connexion.php");
     
     
        $query = "SELECT DISTINCT codedial FROM codedial ORDER BY codedial ASC";
        $rq = mysql_query($query) or die(mysql_error());
        while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
        {
          $codedial = $row["codedial"];
          echo "<option value='$codedial'>$codedial</option>";
        }
        mysql_close();
      ?>
    </select>
    select_unite.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
     
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript" src="ajax.js"></script>
    <select id='unite' name='unite'>
     
      <?php
        include("../connexion.php");
     
        $var=$_POST['var'];
        $query = "SELECT DISTINCT unite FROM codedial WHERE codedial='$var' ORDER BY unite ASC";
        $rq = mysql_query($query) or die(mysql_error());
        while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
        {
          $unite = $row["unite"];
          echo "<option value='$unite'>$unite</option>";
        }  
        mysql_close();
      ?>
    </select>
    select_intitule.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
     
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript" src="ajax.js"></script>
    <select id='intitule' name='intitule'>
     
      <?php
        include("../connexion.php");
     
        $var=$_POST['var'];
        $query = "SELECT DISTINCT intitule FROM codedial WHERE codedial='$var' ORDER BY intitule ASC";
        $rq = mysql_query($query) or die(mysql_error());
        while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
        {
          $intitule = $row["intitule"];
          echo "<option value='$intitule'>$intitule</option>";
        }  
        mysql_close();
      ?>
    </select>

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Par défaut
    Bonjour,

    J'ai un menu déroulant qui appel automatiquement deux autres menus déroulants
    le soucis, c'est que je n'ai que la valeur du 1er menu déroulant qui rempli ma base mysql !
    Je comprend pas trop quand tu dit "qui rempli ma base mysql" ... je vois que de "Select" et pas d' "Insert" ni d' "Update"? Il y a que des "lectures" et pas d'écritures dans ta base de données (code que tu à publié).

    Quand tu lance le script form1.php celui ci appel en premier le script select_codedial.php

    qui contiens la ligne de code suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select id='codedial' name='codedial' onchange="ajax(this)">
    Je suppose que tu attend que cette ligne t'appel ensuite la fonction "function ajax(strthis)" pour te remplir les deux autres listes ...mais je pense que cela ne se fait pas...?

    Ta que à essayer en ajoutent la ligne suivante
    alert('Appel function ajax O.K.');

    comme suite pour vérifier:
    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
    function ajax(strthis)
    {
    alert('Appel function ajax O.K.');
     
    var param = strthis.value;
                    var codedial = document.getElementById("codedial").options[document.getElementById("codedial").selectedIndex].value;
    	$("#tr_intitule").empty();
    	$.ajax
    	(
    		{
    			type: "POST",
    			url: "select_intitule.php",
    			data: "var="+param,
    			success: 
    			function(msg)
    			{
    				$("#tr_intitule").append("<td>"+ msg +"</td>");
    			}
    		}
     
    	);
    pour vérifier ... voir si tu reçoit un Message de "debug" ....

    Pour appeler la function ajax tu doit inclure ceci dans "select_codedial.php"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    </head>
    <body onload="ajax(param);" >
    ou cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
    window.onload=function(){ajax(param);};
    </script>

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Par défaut
    oui, exact je n'ai pas mis la page (valide1.php voir ci dessous) qui rempli la base parce qu'elle fonctionne bien, c'est à dire qu'avant que je rajoute cette nouvelle fonction, ma base se remplissait bien, donc je ne pense pas que le soucis vienne de là !

    alors si, visuellement le onchange fonctionnent bien, c'est à dire quand je choisi dans le menu déroulant select_codedial.php, j'ai bien le listening venant de ma base et quand je sélectionne un choix, les deux autres menus déroulant se remplissent automatiquement avec les bonnes réponses.

    j'ai aussi donc rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert('Appel function ajax O.K.');
    à ma page ajax.js et lors du choix du premier menu déroulant, j'ai bien le popup qui apparait

    Le soucis que j'ai avec ces trois menus déroulant, c'est que je n'ai que la valeur du premier qui est inséré dans la base, les deux autres :
    select_unite.php
    select_intitule.php
    ne sont pas insérés, j'ai l'impression que le value s'est perdu, peu être du à l'affichage ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><div align="left" id='tr_unite'><?php include('select_unite.php')?></div></td>
    en tout cas merci de te pencher sur mon cas

    valide1.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
    <?php 
        // On commence par récupérer les champs 
     
    if(isset($_POST['unite']))      $unite=$_POST['unite'];
    else      $unite="";
     
    if(isset($_POST['codedial']))      $codedial=$_POST['codedial'];
    else      $codedial="";
     
    if(isset($_POST['intitule']))      $intitule=$_POST['intitule'];
    else      $intitule="";
     
        // on écrit la requête sql 
        $sql = "INSERT INTO ".$table." (unite,	codedial,	intitule) VALUES('$unite','$codedial','$intitule')"; 
     
        // on insère les informations du formulaire dans la table 
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
     
        // on affiche le résultat pour le visiteur 
        echo '<center>Vos données ont été enregistrées.</center>';
     
        mysql_close();  // on ferme la connexion 
        //}  
    ?>

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Par défaut
    et bien j'ai trouvé la solution alors, je reviens la poster !

    je me suis vraiment pris la tête pour rien, car vous allez tomber de haut

    cela vient du navigateur !!!

    et oui cela fonctionne très bien sur IE mais pas du tout sur firefox, pourquoi ???

    je ne sais pas encore, je vais chercher, mais si vous savez pourquoi, merci de laisser un petit mot ici, avant que je clôture ce topic

  5. #5
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    mets ceci au début de ton java 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
    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 { 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr;
    			}

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Par défaut
    j'ai bien rajouté ton code au début de mon fichier ajax.js (voir ci-dessous)
    mais cela ce change rien, avec firefox mes données ne sont pas prisent en compte dans mysql


    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
    function ajax(strthis)
    {
    	var param = strthis.value;
                    var unite = document.getElementById("unite").options[document.getElementById("unite").selectedIndex].value;
    	$("#tr_codedial").empty();
    	$.ajax
    	(
    		{
    			type: "POST",
    			url: "select_codedial.php",
    			data: "var="+param,
    			success: 
    			function(msg)
    			{
    				$("#tr_codedial").append("<td><div align='right'>Code Dialogue :</div></td><td><div align='left'>"+ msg +"</div></td>");
    			}
    		}
    	);
    }
     
    function ajax2(strthis)
    {
    	var param = strthis.value;
                    var intitule = document.getElementById("intitule").options[document.getElementById("intitule").selectedIndex].value;
    	$("#tr_intitule").empty();
    	$.ajax
    	(
    		{
    			type: "POST",
    			url: "select_intitule.php",
    			data: "var="+param,
    			success: 
    			function(msg)
    			{
    				$("#tr_intitule").append("<td><div align='right'>Intitul&eacute; Code Dialogue :</div></td><td><div align='left'>"+ msg +"</div></td>");
    			}
    		}
    	);
    }

Discussions similaires

  1. [PHP 5.4] Comment récupérer une data-value dans une datalist?
    Par jecha266 dans le forum Langage
    Réponses: 0
    Dernier message: 14/02/2015, 23h36
  2. Récupérer une variable php dans une requete ajax
    Par bedomon dans le forum jQuery
    Réponses: 2
    Dernier message: 30/09/2010, 14h16
  3. Type "groupe de controles" dans une function
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 20/06/2008, 21h07
  4. plusieurs value dans une liste deroulante
    Par lepierre dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 16/11/2004, 14h53
  5. tbitmap.free dans une function
    Par portu dans le forum Langage
    Réponses: 7
    Dernier message: 19/06/2003, 22h08

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