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 :

Lier 3 tables AJAX - PHP


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Par défaut Lier 3 tables AJAX - PHP
    Bonjour,

    Après avoir repris le tuto de SIDDH, j'ai réussi à lier 2 tables..(ligue et secteur)

    mes tables SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    table : ligue
    id_ligue
    nom_ligue
     
    table : secteur 
    id_secteur
    nom_secteur
    id_ligue
     
    table : departement
    id_departement
    nom_departement
    id_secteur
    index.php
    Code mixte : 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
     
    <form>
    			<fieldset>
     
    				<label>REGION</label>
    				<select name='ligue_j' id='ligue_j' onchange='cherche_secteur()'>  <!-- appel AJAX SECTEUR -->
    					<option value='-1'>Aucun</option>
     
    						<?php
                                                            require "ConnectPDO.php"; 
                    
                                                            $sql = ("SELECT * FROM ligue"); 
                                                            $stmt = $bdd->prepare($sql);
                                                            $stmt->bindValue(':nom_ligue','nom_ligue' , PDO::PARAM_STR); 
                                                            $stmt->execute();
     
                                                            $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
                                                                                                            
                                                            foreach ($result as $row) 
                                                                    {
                                                                            echo "<option value='".$row["id_ligue"]."'>".$row["nom_ligue"]."</option>";
                                                                    }
                                                    ?>
    				</select>
     
     
    				<label>SECTEUR</label>
    					<div id='secteur' style='display:inline; '>
    						<select id="secteur_j" name='secteur_j' onchange="cherche_departement()"> <!-- onload ??...APPEL AJAX DEPARTEMENT-->
    							<option value='-1'>Choisir</option>
    						</select>
    					</div>
     
    				<label>DEPARTEMENT</label>
    					<div id='departement' style='display:inline; '>
    						<select id="departement_j" name='departement_j'>
    							<option value='-1'>Choisir</option>
    						</select>
    					</div>
     
    			</fieldset>
    		</form>

    ajax_secteur.js
    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
     
    			function cherche_secteur()
    				{
     
    					oRegion = document.getElementById('ligue_j');
    					idRegion = oRegion.options[oRegion.selectedIndex].value; 
    					console.log(idRegion); 
     
    					var xhr = getXhr();
     
    					var url = "requete_secteur.php"
     
    					xhr.open("POST",url,true);
     
    					xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
    					xhr.onreadystatechange = function()
    						{
    							if(xhr.readyState == 4 && xhr.status == 200)
    								{
    									afficheResultat(xhr); 
    								}
    						}
     
     
    					xhr.send("id_ligue="+ encodeURI(idRegion));
    				}
     
     
     
    			function afficheResultat(xhr){
    				retourliste = document.getElementById('secteur_j'); 
    				retourliste.innerHTML = xhr.responseText;
    				 ;
    			}

    requete_secteur.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
     
    <?php
     
     	require "ConnectPDO.php";
     
     	$id_ligue = $_POST['id_ligue']; 
     	var_dump($id_ligue);
     
    	echo '<select>';
     
    		if(isset($id_ligue))
    			{ 
    				$sql = "
    					SELECT nom_secteur
    					FROM secteur 
    					WHERE id_ligue = :id_ligue 
    					ORDER BY nom_secteur
    				";
    				$stmt = $bdd->prepare($sql);
     
    				$stmt->bindValue('id_ligue', $id_ligue, PDO::PARAM_INT); // Valorisation du paramètre nommé
     
    				$stmt->execute();
     
    				$result = $stmt->fetchAll();
     
    					foreach ($result as $row) 
    						{
    							echo "<option value='".$row["id_secteur"]."'>".$row["nom_secteur"]."</option>";
    						}
    			}
     
    	echo "</select>";

    Tout content de moi, je pensais simplement reproduire la même démarche pour lier une 3ème table...badaboum ...je n'y arrive pas


    je ne sais pas si cela est une bonne démarche ? et comment la mettre en oeuvre ? j'ai lu des tutos sans succès

    Je crois que cela vient du fait que je n'arrive pas à récupérer la valeur du champ "secteur_j"

    quand je fais un : console.log(oSecteur) = - 1; comme s'il n'arrivait pas à rafraîchir le contenu et à le récupérer...

    Comment faire ? addEventListener, ..... j'ai lu de nombreux forums mais je n'y arrive pas

    Voici la deuxième ajax et requete

    ajax_departement.js
    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
     
    			function cherche_departement()
    				{
     
    					/* est-ce la bonne démarche ? */
    					/* JE N'ARRIVE PAS A RECUPERER LA VALEUR SECTEUR_J => il reste à -1 : addEventListener  / class date+text/ rafraichir champ  */
     
    					oSecteur = document.getElementById('secteur_j');
    					idSecteur = oSecteur.options[oSecteur.selectedIndex].value; 
    					console.log(idSecteur); 
     
    					var xhr = getXhr();
     
    					var url = "requete_secteur.php"
     
    					xhr.open("POST",url,true);
     
    					xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
    					xhr.onreadystatechange = function()
    						{
    							if(xhr.readyState == 4 && xhr.status == 200)
    								{
    									afficheResultat2(xhr); 
    								}
    						}
     
     
    					xhr.send("id_secteur="+ encodeURI(idSecteur));
    				}
     
     
     
    			function afficheResultat2(xhr){
    				retourliste = document.getElementById('departement_j'); 
    				retourliste.innerHTML = xhr.responseText;
    				 ;
    			}

    requete_departement.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
     
    <?php
     
     	require "ConnectPDO.php";
     
     	$id_secteur = $_POST['id_secteur']; 
     	var_dump($id_secteur);
     
    	echo '<select>';
     
    		if(isset($id_secteur))
    			{ 
    				$sql = "
    					SELECT nom_departement
    					FROM departement 
    					WHERE id_secteur = :id_secteur 
    					ORDER BY nom_departement
    				";
     
    				$stmt = $bdd->prepare($sql);
     
    				$stmt->bindValue('id_secteur', $id_secteur, PDO::PARAM_INT); // Valorisation du paramètre nommé
     
    				$stmt->execute();
     
    				$result = $stmt->fetchAll();
     
    					foreach ($result as $row) 
    						{
    							echo "<option value='".$row["id_departement"]."'>".$row["nom_departement"]."</option>";
    						}
    			}
     
    	echo "</select>";

    j'ai vu qu'avec Ajax_JQUERY cela était bien plus simple mais j'aimerai bien comprendre le fonctionnement des ajax on ne sait jamais si un jour...je continue à lire mais je ne trouve pas des liaisons avec 3 tables sans jquery

    J'espère ne pas être très loin pfff
    Merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- tu dis avoir lu des tutos : lesquels ?
    "3 listes liées Ajax "
    On trouve cette discussion : [AJAX] Plusieurs listes liées

    2- requete_secteur.php
    "Y'a comme un défaut", non ?
    • pas de name, ni d'id ?
    • et vu que tu construis des <option> qui vont déjà dans un <select>...



    3- ajax_departement.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function cherche_departement()
    {
    ...
    	var url = "requete_secteur.php"
    "Y'a comme un défaut" (bis), non ?
    • mauvaise URL


    BREF : non seulement il y a de la confusion (due à l'incompréhension et au manque de maitrise), mais aussi des fautes d'inattention.
    Il faut être plus rigoureux.

    Et INDENTE TON CODE proprement !!
    Ce sera plus facile à lire et à déboguer !
    Dernière modification par Invité ; 24/07/2018 à 17h10.

Discussions similaires

  1. [MySQL] Lier deux tables php mysql
    Par a.brioit dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/09/2008, 13h32
  2. [AJAX] Afficher les données d'une table AJAX PHP
    Par tetepro dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/04/2008, 21h59
  3. lier deux tables a partir dun calcul!!
    Par marie10 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/04/2004, 09h44
  4. comment lier deux tables?????
    Par baboune dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/03/2004, 14h45

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