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 :

Utiliser un paramètre Javascript dans une requête PHP


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 138
    Par défaut Utiliser un paramètre Javascript dans une requête PHP
    Bonjour,

    Je veux spécifier valeur_prenom dans la requête comment faire ?
    javascript et je veux l'utiliser dans un requête php

    comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function charger_champ(valeur_prenom)
    {
    <?php
     include('functions.php');
     $bdd_mission_msas=connect();
    $reponse_nom = $bdd_mission_msas->query('SELECT nom FROM  agent where agent_id='.+valeur_prenom.'');
    while ($donnees_nom = $reponse_nom->fetch())
    {
    	echo $donnees_nom ['nom']);
    }
    ?>
    }
    Comment faire ?

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 205
    Par défaut
    Bonjour,

    JavaScript s'exécute côté client, hors NodeJS
    PHP s'exécute côté serveur et est inconnu côté client

    La communication Client Serveur peut se faire en Ajax mais absolument pas comme tu l'envisages.

    Voir :
      Comprendre les mécanismes d'AJAX

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 138
    Par défaut
    Bonjour,

    J'utilise maintenant Ajax mais mon problème est que ma requête ajax ne s’exécute qu’une seule fois alors que il est dans une fonction qui s’exécute qu'a chaque fois qu'une nouvelle ligne est créée et que le champ select change de valeur.
    Voici le
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <table id="tableau">
    <th>Prenom</th>
    <th>Nom</th>
    <th>Situation de famille</th>
    <th>Grade</th>
    <th>Fonction</th>
    <th>Direction</th>
    </table>
    <input type="button" onclick="ajouteLigne('tableau')" value="Ajouter agent"/>
    Code JavaScript : 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
     
    <script>
            "use strict";
    	var ligne ;	
    var code_HTML_nom;	
    var code_HTML_sitfam;
     
    function ajouteLigne(tableID)
    {
    	var table = document.getElementById(tableID);
    	ligne= table.insertRow(-1);
        var rowNumber = table.childNodes.length;
        var cell_prenom = ligne.insertCell(0);
     
     
     
     
    	    var codeHTML_prenom= '<select id="prenom_ag[]" onchange="charger_champ(this.value)" ><option value="-1">Choisir prenom</option>';
     
     
    		code_HTML_nom='<input id="test"/>';
    		code_HTML_sitfam='<input id="test_sitf"/>';
    	 <?php
    	   include('functions.php');
            $bdd_mission_msas=connect();
    		$reponse_prenom = $bdd_mission_msas->query('SELECT * FROM  agent');
    		 $optionsHTML_prenom="";				
    		while ($donnees_prenom = $reponse_prenom->fetch())
    {
    	$optionsHTML_prenom.='<option value="'.$donnees_prenom ['agent_id'].'">'.$donnees_prenom ['prenom'].'</option>';
    }
     
    $reponse_prenom->closeCursor();
     
    ?>
    codeHTML_prenom+='<?php echo $optionsHTML_prenom ."</select>"; ?>';
    cell_prenom.innerHTML=codeHTML_prenom;
     
     
     
     
    }
     
    function charger_champ(valeur_prenom)
    {
    	var cell_nom = ligne.insertCell(1);
    			  var cell_sitf = ligne.insertCell(2);
                 cell_nom.innerHTML=code_HTML_nom;
    			 cell_sitf.innerHTML=code_HTML_sitfam;
     
    	$.post(
                'recupere_nom.php', // Un script PHP que l'on va créer juste après
                {
                    valeur_prenomsd : valeur_prenom
                    		// Nous récupérons la valeur de nos input que l'on fait passer à connexion.php
     
                },
     
                function(data){
     
     
     
     
     
    			 var words = data.split(',');
    			 		document.getElementById("test").value=words[0];
    			document.getElementById('test').disabled=true;
                 document.getElementById("test_sitf").value=words[1];	
                 document.getElementById('test_sitf').disabled=true;
     
     
     
                },
     
                'text'
             );
     
     
     
     
     
     
     
    }
     
     
     
     
     
            $( window ).load( function(){
     
            });
     
     
        </script>


    code recupere_nom.php
    Code PHP : 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
     
     
    	<?php
    	     include('functions.php');
    	     $bdd_mission_msas=connect();
    		 $tab_ag = array();
    		 $valeur_prenom=$_POST['valeur_prenomsd'];
    		 if(( !empty($valeur_prenom)&& ($valeur_prenom!=-1)))
    		 {
     
     
     
    		$reponse_nom = $bdd_mission_msas->query('SELECT nom FROM  agent where agent_id='.$valeur_prenom.'');
     
    		while ($donnees_nom = $reponse_nom->fetch())
    {
    	array_push($tab_ag,$donnees_nom ['nom']);
    }
     
    $reponse_nom->closeCursor();
     
    $reponse_sitf = $bdd_mission_msas->query('SELECT siuationfamille FROM  agent ag,situation_famille sitf where (agent_id='.$valeur_prenom.' and ag.sitfamille_id=sitf.sitfamille_id)');
     
    		while ($donnees_sitf = $reponse_sitf->fetch())
    {
    	array_push($tab_ag,$donnees_sitf ['siuationfamille']);
    }
     
    $reponse_sitf->closeCursor();
     
    		 }
    		 else
    		 {
    			 array_push($tab_ag,"KO");
    		 }
     
    echo implode(',',$tab_ag);
    ?>
    Mais quand je clique sur le bouton Ajout agent, à la première ligne quand je sélectionne le prenom, le nom et la situation se chargent sans problème mais quand je crée une deuxième ligne, ça ne charge pas. j'ai l'impression que ma requête ajax ne s’exécute qu’une seule fois.

    Quel est le problème ?

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 205
    Par défaut
    Les premières choses à faire sont de regarder le code HTML généré, CTRL +U, et d'observer les messages dans la console du navigateur, F12.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 138
    Par défaut
    Bonjour,

    Juste il n'y a aucun message dans la console du navigateur.
    Le problème est que la requête ajax n’amène les donnes que quand je change la valeur du champ sur la première ligne. sur la deuxième ligne quand je change de valeur, aucune donnée n'est amenée ??

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 205
    Par défaut
    sur la deuxième ligne quand je change de valeur, aucune donnée n'est amenée ??
    Pas exactement !

    Tu as ceci comme code que tu dupliques à chaque ajout d'une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    code_HTML_nom='<input id="test"/>';
    code_HTML_sitfam='<input id="test_sitf"/>';
    hors une ID doit être UNIQUE, bilan lorsque tu fais ta requête se sont toujours les premiers champs qui sont remplis.

    Il te faut ajouter ces champs au retour de ta réponse en leur donnant un name sous forme de tableau, quelque chose comme
    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
    $.post('recupere_nom.php', {
      valeur_prenomsd: valeur
    }, function (data) {
      const words = data.split(',');
      // création des cellules
      const cellNom = ligne.insertCell(1);
      const cellSitf = ligne.insertCell(2);
      // création élément et initialisation
      const inputNom = document.createElement("INPUT");
      inputNom.name = "name[]";
      inputNom.disabled = true;
      inputNom.value = words[0];
      // ajout à la cellule
      cellNom.appendChild(inputNom);
      // création élément et initialisation
      const inputSitf = document.createElement("INPUT");
      inputSitf.name = "sitf[]";
      inputSitf.disabled = true;
      inputSitf.value = words[1];
      // ajout à la cellule
      cellSitf.appendChild(inputSitf);
    }, 'text');
    • Ta variable ligne est visiblement globale, ce n'est pas ce qui se fait de mieux, tu pourrais récupérer la <tr> parent de ton <select>, mais cela sera au prochain épisode.

    • Je note également que tu utilises $.post, de jQuery, si c'est juste pour Ajax, cela c'est superflu

Discussions similaires

  1. [Requête_VBA_Access] Paramètre ignoré dans une requête
    Par Tari_calaelen dans le forum VBA Access
    Réponses: 6
    Dernier message: 03/07/2007, 16h06
  2. Réponses: 1
    Dernier message: 20/04/2007, 09h12
  3. [PHP-JS] mettre une variable javascript dans une variable php
    Par Mounr dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/04/2007, 09h09
  4. Récupération de données javascript dans une variable PHP
    Par Taz_8626 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/05/2006, 15h23
  5. Mettre le résultat d'un javascript dans une variable php??
    Par kahya dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 19/05/2006, 09h43

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