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

AJAX Discussion :

[AJAX] Plusieurs variables sql dans une fonction Ajax


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 42
    Par défaut [AJAX] Plusieurs variables sql dans une fonction Ajax
    Bonjour,

    Je m'explique, j'aimerais introduire plusieurs variables sql dans une fonction Ajax.
    J'ai ce script avec un id_famille

    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
    function goOutils(id_famille){
    	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('outils').innerHTML = leselect;
    		}
    	}
    	// Ici on va voir comment faire du post
    	xhr.open("POST","ajaxOutils.php",true);
    	// ne pas oublier ça pour le post
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Envoyer
    	xhr.send("id_famille="+id_famille);
    }

    J'aimerais qu'il y ai également deux autres id qui viennent d'autres requêtes (id_matiere et id_tc_simple) pour avoir un appel de base de données du genre :
    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
    if(isset($_POST["id_famille"]) && isset($_POST['id_matiere']) && isset($_POST['id_tc_simple'])){
     
    // Requête finale (devant comporter les trois variables sélectionnées précédemment) 
    $reponse = mysql_query("SELECT outils.*, famille_outils.image_famille
    	FROM outils, famille_outils, materiaux, jointure_materiaux, jointure_caracteres, taille_caracteres_simple, taille_caracteres_multi
    	WHERE famille_outils.diametre_outil = outils.diametre_outil
    	AND famille_outils.famille_outil = outils.famille_outil
    	AND outils.id_outil = jointure_materiaux.id_outil 
    	AND materiaux.id_matiere = jointure_materiaux.id_matiere
    	AND outils.id_outil = jointure_caracteres.id_outil
    	AND taille_caracteres_simple.id_tc_simple = jointure_caracteres.id_tc_simple
    	AND taille_caracteres_multi.id_tc_multi = jointure_caracteres.id_tc_multi
    	AND famille_outils.id_famille = ".$_POST["id_famille"]."
    	AND materiaux.id_matiere = ".$_POST["id_matiere"]."
    	AND taille_caracteres_simple.id_tc_simple = ".$_POST["id_tc_simple"]."
    ");						
     
    // On affiche chaque resultats
    while($donnees = mysql_fetch_assoc($reponse))
    {

    Comment faire pour mettre les 3 id dans la fonction Ajax?
    Où placer le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick='goOutils(this.value)'
    ?

    Merci de votre aide

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Question assez compliquée... Mettre trois paramètres dans l'appel d'une fonction puis dans des paramètres d'URL, ça va chercher loin...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function goOutils(id_famille, param2, param3){
    ...
    xhr.send("id_famille="+id_famille+'&param2='+param2+'&param3='+param3);
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 42
    Par défaut
    Bonjour,
    Merci pour la réponse.

    J'ai déjà essayé ça et ça ne fonctionne pas.
    Donc tu me certifie cette façon de faire alors le problème vient d’ailleurs.

    Peut être le onclick='goOutils(this.value)'
    Je dois le placer sur la dernière de mes 3 requêtes qui donne ma requête finale?
    Où c'est ma requête php qui ne s'écrit pas comme ça?

    Partant du principe que mon "param2" et mon "param3" sont appelés par deux autres fonctions Ajax dépendants de mon "param1". (Au même titre que des listes liées)

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Euh... j'ai un peu peur de comprendre là...
    Tu veux que trois requêtes différentes pointent vers un même script qui saura récupérer et traiter les trois valeurs ?
    Si c'est ça, ne cherche pas plus loin : c'est impossible !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 42
    Par défaut
    Arf, comment faire différemment alors?

    En gros mon "param1" modifie ce que mon "param2" et mon "param3" me propose.

    Ensuite quand mes 3 paramètres sont choisis, j'ai une requête qui doit prendre en compte ses 3 paramètres pour me donner un résultat précis.

    param1 + param2 + param3 = dernière requête qui donne une réponse précise.
    Je pensais pouvoir le faire avec une fonction Ajax, comme je l'ai fait avec les autres paramètres.

    Une idée pour une autre solution?
    3 fonctions Ajax différentes qui pointent vers la même page.php?

    Voici comme je l'imaginais :

    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
    39
    40
    41
    42
    43
    <?php
    	echo "<p name='outils'>";
    	if(isset($_POST["id_famille"]) && isset($_POST['id_matiere']) && isset($_POST['id_tc_simple'])){
     
    	// Déclaration des paramètres de connexion
    $host = "localhost";
    $user = "root";
    $bdd = "projet";
    $passwd = "";
     
     // On se connecte à MySQL
    			mysql_connect($host, $user, $passwd) or die ("erreur de connexion au serveur");
    			mysql_select_db($bdd) or die ("erreur de connexion à la base de données");
     
    // Requête finale (devant comporter les trois variables sélectionnées précédemment) 
    $reponse = mysql_query("SELECT outils.*
    			FROM outils, famille_outils, materiaux, jointure_materiaux, jointure_caracteres, taille_caracteres_simple, taille_caracteres_multi
    			WHERE famille_outils.diametre_outil = outils.diametre_outil
    			AND famille_outils.famille_outil = outils.famille_outil
    			AND outils.id_outil = jointure_materiaux.id_outil 
    			AND materiaux.id_matiere = jointure_materiaux.id_matiere
    			AND outils.id_outil = jointure_caracteres.id_outil
    			AND taille_caracteres_simple.id_tc_simple = jointure_caracteres.id_tc_simple
    			AND taille_caracteres_multi.id_tc_multi = jointure_caracteres.id_tc_multi
    			AND famille_outils.id_famille = ".$_POST["id_famille"]."
    			AND materiaux.id_matiere = ".$_POST["id_matiere"]."
    			AND taille_caracteres_simple.id_tc_simple = ".$_POST["id_tc_simple"]."
    			");						
     
    // On affiche chaque resultats
    		while($donnees = mysql_fetch_assoc($reponse))
    		{
    ?>
     
    Référence de l'outil trouvé : <?php echo $donnees['reference_outil']; ?><br/>
    Sa forme est : <?php echo $donnees['forme_outil']; ?><br/>
    Etc....
     
    <?php 
    		}
    	}
    	echo "</p>";
    ?>

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    en fait, c'est possible.
    Encore faut-il que tu nous montres autre chose que des bouts de code éparpillés.

    Une vision globale serait bienvenue.

    Principe :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function goOutils(){
    	var id_famille = document.getElementById('id_param1').value;
    	var param2 = document.getElementById('id_param2').value;
    	var param3 = document.getElementById('id_param3').value;
    	...
    	xhr.send("id_famille="+id_famille+'&param2='+param2+'&param3='+param3);
    	...
    }
    Et sur <input> :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="..." name="..." id="id_param1" onchange="goOutils();" />
    ou <select> :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="..." id="id_param1" onchange="goOutils();" />
    N.B. onchange semble plus approprié que onclick.

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

Discussions similaires

  1. 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
  2. [Prototype] Récupérer une valeur dans une fonction Ajax
    Par nkordiko dans le forum Bibliothèques & Frameworks
    Réponses: 17
    Dernier message: 08/01/2010, 11h50
  3. [AJAX] comment recupere une div dans une fonction ajax
    Par bachboucha dans le forum AJAX
    Réponses: 14
    Dernier message: 26/05/2009, 14h59
  4. Plusieurs requêtes T-SQL dans une fonction
    Par ellix86 dans le forum Développement
    Réponses: 3
    Dernier message: 26/02/2009, 16h48
  5. [AJAX] [XAJAX] Lancer une fonction JS dans une fonction AJAX
    Par sixieme-sens dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/12/2008, 15h26

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