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

  1. #41
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Tu dois aussi lire un tutoriel javascript, qui est le base d'AJAX.

    A+.

  2. #42
    Invité
    Invité(e)
    Par défaut
    Comme tu n'as pas d'id pour tes boutons, ni d'idées (!) qui te donne des boutons (!!), on va ruser...

    1/ On va créer 3 champs cachées dans le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	<input type="hidden" id="choix_id_famille" value="" />
    	<input type="hidden" id="choix_id_matiere" value="" />
    	<input type="hidden" id="choix_id_tc_simple" value="" />
    2/ Fonction qui va remplir la value d'un input sur le clic du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script>
    function fill_input_cache(id, val){
    	document.getElementById(id).value = val;
    	alert(id + ' -> ' + val); // pour TEST !
    	// on lance la fonction goOutils()
    	goOutils();
    }
    </script>
    ?.php (choix 1) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
                                    echo "<button onclick='goMateriaux(this.value); goCharacter(this.value); fill_input_cache(\'choix_id_famille\', this.value);' value='".$donnees["id_famille"]."'>".$donnees['diametre_outil']." </button>";
                                    $var = $donnees["id_famille"];
    ?>
    ajaxMateriaux.php (choix 2) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
                                    echo "<button onclick='fill_input_cache(\'choix_id_matiere\', this.value);' value='".$donnees["id_matiere"]."'><img src=".$donnees["repere_matiere"]." ".$donnees["info_matiere"]."<br/> ".$donnees["nom_matiere"]."</button>";
    ?>
    ajaxCharacter.php (choix 3) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
                                    echo "<button onclick='fill_input_cache(\'choix_id_tc_simple\', this.value);' value='".$donnees["id_tc_simple"]."'>".$donnees["taille_caract_simple"]."</button>";
    ?>
    POUR VERIFIER, on NE va mettre QUE ceci dans goOutils() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script>
    			function goOutils(){ 
    				// On récupère ici les value des INPUT CACHES
    				var id_famille = document.getElementById('choix_id_famille').value;
    				var id_matiere = document.getElementById('choix_id_matiere').value;
    				var id_tc_simple = document.getElementById('choix_id_tc_simple').value;
    				alert('id_famille = ' + id_famille + ', id_matiere = ' + id_matiere + ', id_tc_simple = ' + id_tc_simple);
    				// SI tu récupères bien tes choix, tu peux alors ajouter le script AJAX.
    				// Il faudra sans doute TESTER si les 3 valeurs sont bien remplies
    			}
    </script>

  3. #43
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    Ok, merci, effectivement, voilà quelque chose de très bête (même pour ma part)
    Tu m'as rapproché de la solution.

    J'ai ajouté des name et id a chacun de mes boutons. (choix1, choix2, choix3) et j'ai changer les valeurs de mon scripts :

    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
    function goOutils(){ 
    				var xhr = getXhr();
    				var id_famille = document.getElementById('choix1').value;
    				var id_matiere = document.getElementById('choix2').value;
    				var id_tc_simple = document.getElementById('choix3').value;
    				// 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+"&id_matiere="+id_matiere+"&id_tc_simple="+id_tc_simple);
    			}

    J'ai placé mon onclick='goOutils()' dans le button de mon choix3 (id_tc_simple), comme c'est le dernier choix
    J'obtiens 3 valeurs (une valeur pour chacune de mes id), mais elles ne me rendent que id=1 (pour les 3 variables), peut importe le bouton cliqué.
    J'ai donc dorénavant un résultat pour ma requête finale (ma page ajaxOutils.php s'affiche, mais je n’obtiens donc que le résultat de mes 3 choix à id=1

    Voilà ce que me donne mes tests pour voir si les variables passent
    ajaxOutils.php :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    	echo "<p name='outils'>";
    	echo "lid famille choisi est ".$_POST["id_famille"]." !!!<br/>"; // me donne : id famille choisi est 1
    	echo "lid matiere choisi est ".$_POST["id_matiere"]." !!!<br/>"; // me donne : id matiere choisi est 1
    	echo "lid character choisi est ".$_POST["id_tc_simple"]." !!!";  // me donne : id character choisi est 1

    J'ai déjà un résultat!

    Je viens de voir ton dernier post (en écrivant celui-ci), j'ai essayé également, mais la page de mon choix 2 ne s'affiche plus, j'essaie de trouver pourquoi.

  4. #44
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Peut-on voir le code html généré actuel de la page?

    A+.

  5. #45
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    ok,

    index.php : (choix1)

    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
    // 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");
     
    	 // On récupère tout le contenu de la table famille_outils
    $req = mysql_query("SELECT DISTINCT *
    					FROM famille_outils
    					");
     
    					// Je recupère toutes les colonnes de la table famille_outils
     
    // On affiche chaque entrée une à une (boucle while)
    while($donnees = mysql_fetch_assoc($req))
    {
    ?> 
     
    		<ul class="thumbnails">		
    			<li class="span4">
    			<div class="thumbnail"><img src="<?php echo $donnees['image_famille'];?>"><?php echo $donnees['famille_outil'];?><br/><br/>
    			<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
    <?php
    				echo "<button name='choix1' id='choix1' onclick='goMateriaux(this.value); goCharacter(this.value)' value='".$donnees["id_famille"]."'>".$donnees['diametre_outil']." </button>";
    ?>			
    			</a>
    			</div>
    			</li>
     
    <?php 
    }
    ?>

    ajaxMateriaux.php : (choix2)

    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
    <?php
    	echo "<p name='materiaux'>";
    	if(isset($_POST["id_famille"])){
    	// 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");
     
    	 // On récupère tout le contenu de la table materiaux
    $req = mysql_query("SELECT materiaux.*
    					FROM materiaux, famille_outils, jointure_famille_materiaux
    					WHERE materiaux.id_matiere = jointure_famille_materiaux.id_matiere
    					AND famille_outils.id_famille = jointure_famille_materiaux.id_famille
    					AND famille_outils.id_famille = ".$_POST["id_famille"]." ");
     
    		while($donnees = mysql_fetch_assoc($req))
    		{
    ?> 
     
    			<li class="span3">
    			<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree">
    				<?php
    				echo "<button name='choix2' id='choix2' value='".$donnees["id_matiere"]."'><img src=".$donnees["repere_matiere"]." ".$donnees["info_matiere"]."<br/> ".$donnees["nom_matiere"]."</button>";
    				?>
    				<input type="hidden" id="choix_id_matiere" value="" />
    			</a>
    			</li>
     
    <?php 
    		}
    	}
    	echo "</p>";
    ?>

    ajaxCharacter.php : (choix3)

    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
    44
    45
    46
    47
    48
     <?php
    	echo "<p name='character'>";
    	if(isset($_POST["id_famille"]))
    	{
    	if($_POST["id_famille"] <= 4)   // Condition (si l'id famille choisi est inférieur ou égal à 4, alors)
    	{
    ?>
    		<h5>Character simple-line</h5>
    <?php
    	// 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"); 
     
    	 // On récupère tout le contenu de la table taille_caracteres_simple
    $req = mysql_query("SELECT *
    					FROM taille_caracteres_simple
    					WHERE taille_caract_simple
    					");
     
    					// Je recupère toutes les tailles de caractères simple
     
    // On affiche chaque entrée une à une (boucle while)
     
    		while($donnees = mysql_fetch_assoc($req))
    		{
    ?> 
    		<ul class="thumbnails">		
    			<li class="span3">
    			<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseResult">
    				<div class="thumbnail">
    				<?php
    				echo "<button name='choix3' id='choix3' onclick='goOutils()' value='".$donnees["id_tc_simple"]."'>".$donnees["taille_caract_simple"]."</button>";
    				?>
    				<input type="hidden" id="choix_id_tc_simple" value="" />
    				</div>
    			</a>
    			</li>
     
    <?php 
    		} // Fermeture du while
    ?> 
    		</ul>

    La page ajaxOutils.php n'a pas changée.

    J'ai toujours l'id=1 des 3 variables, je pense que je dois maintenant trouver un moyen des les récupérer après le choix au lieu que ce soit la première id récupérée par défaut.
    Si je comprend bien je cherche la page au onclick au moment de mon troisième choix, mais je n'envoies aucunes valeurs, donc c'est la valeur = 1 par défaut qui est prise du boutton.
    J'essaie de faire fonctionner le code de jreaux62 parallèlement.

  6. #46
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    J'ai demandé le code HTML généré, ce qui se trouve dans ton navigateur, mais pas ton code PHP. En générant les boutons dans des boucles, tu auras des id qui se répètent. Un id doit être unique dans un document. Et pourquoi utiliser des plusieurs bouton au lieu d'un select par exemple ou des input radio?

    A+.

  7. #47
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    Je n'ai pas l'autorisation d’héberger ma page :/
    Voilà un screen de ce que cela me donner après avoir fait mes 3 choix en ci_joint.
    Je n'ai pas utilisé de input, ni de bouton radio la présentation ne donnait pas ce qu'on m'a demandé de faire visuellement et/ou ça ne fonctionnait pas aussi bien qu'avec les balises button

  8. #48
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Fait comme ce qu'a dit jreaux62, utilise des input hidden pour mettre les valeurs des boutons cliqués.

    A+.

  9. #49
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    Ok, ses input hidden, je les places n'importe où dans ma page index.php, entouré de balise <form></form>?
    Le fill_input_cache de :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<button onclick='goMateriaux(this.value); goCharacter(this.value); fill_input_cache(\'choix_id_famille\', this.value);' value='".$donnees["id_famille"]."'>".$donnees['diametre_outil']." </button>";
    bloque l'ouverture de ma page ajaxMateriaux.php

  10. #50
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Tu les mets dans le body.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<button onclick="goMateriaux(this.value); goCharacter(this.value); fill_input_cache(\'choix_id_famille\', this.value);" value="'.$donnees["id_famille"].'">'.$donnees['diametre_outil'].' </button>';

  11. #51
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Ou tu devais simplement remplacer les singles quotes qui entourent les paramètres javascript par des doubles quotes.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<button onclick='goMateriaux(this.value); goCharacter(this.value); fill_input_cache(\"choix_id_famille\", this.value);' value='".$donnees["id_famille"]."'>".$donnees['diametre_outil']." </button>";

  12. #52
    Membre à l'essai
    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
    Points : 15
    Points
    15
    Par défaut
    pffiiiouuuuu ! Merci à vous deux, ça fonctionne parfaitement !
    C'était bien un problème de quotes.
    J'ai fait différents test ! les id sont bien les bonnes choisies.
    J'ai des erreur de logique dans les résultats, mais je me suis vite rendu compte qu'il s'agit d'erreurs dans la base de données!

    Encore merci à vous et désolé d'avoir usé votre patience (je ne suis pas un cas facile).
    J'aurais plus de temps pour moi en septembre et je vous promet de plancher sur le javascript afin de me perfectionner et d'avoir une meilleure logique du script.

    Edit: je dirais même avoir une logique tout court

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

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