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

jQuery Discussion :

Liste liées PDO


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut Liste liées PDO
    Bonjour voilà j'ai repris un script PDO php pour la gestion de trois liste déroulante lièes , la premier valeur ok , la seconde rien et de même pour la troisième
    le plus simple c'est de vous ajouter le code jquery et php PDO
    Merci de votre aide
    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
    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
    // JavaScript Document
    $(document).ready(function() {
    	var $localite_un = $('#localite_un');
    	var $localite_deux = $('#localite_deux');
    	var $localite_trois = $('#localite_trois');
     
    	// chargement de la liste de localité un
    	$.ajax({
    		url: 'liste.php',
    		data: 'go', // on envoie $_GET['go']
    		dataType: 'json', // on veut un retour JSON
    		success: function(json) {
    			$.each(json, function(index, value) {
    				// pour chaque noeud JSON
    				// on ajoute l option dans la liste
    				$('#localite_un').append('<option value="'+ index +'">'+ value +'</option>');
    			});
    		}
    	});
     
    	// à la sélection de la localité un dans la liste
    	$localite_un.on('change_liste', function() {
    		var val = $(this).val(); // on récupère la valeur de la localité un
    		if(val != '') {
    			$localite_deux.empty(); // on vide la liste de localité deux
    			$localite_deux.append('<option value="">Choisir la localité deux</option>');
     
    			$.ajax({
    				url: 'liste.php',
    				data: 'localite_un='+ val, // on envoie $_GET['localite_un']
    				dataType: 'json',
    				success: function(json) {
    					$.each(json, function(index, value) {
    						$localite_deux.append('<option value="'+ index +'">'+ value +'</option>');
    					});
    				}
    			});
    		}
    		else {
    			$localite_deux.empty();
    			$localite_deux.append('<option value="">Choisir la localité deux</option>');
    			$localite_trois.empty(); // on vide la liste de localité deux
    			$localite_trois.append('<option value="">Choisir la localité trois</option>');
    		}
    	});
     
    	// à la sélection de la localité deux dans la liste
    	$localite_deux.on('change_liste', function() {
    		var val = $(this).val(); // on récupère la valeur de la localité deux
    		if(val != '') {
    			$localite_trois.empty(); // on vide la liste de localité trois
    			$localite_trois.append('<option value="">Choisir la localité trois</option>');
     
    			$.ajax({
    				url: 'liste.php',
    				data: 'localite_deux='+ val, // on envoie $_GET['localite_deux']
    				dataType: 'json',
    				success: function(json) {
    					$.each(json, function(index, value) {
    						$localite_trois.append('<option value="'+ index +'">'+ value +'</option>');
    					});
    				}
    			});
    		}
    		else {
    			$localite_trois.empty();
    			$localite_trois.append('<option value="">Choisir la localité trois</option>');
    		}
    	});
    });
    Code PDO 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    //connexion à la base de données
    include'require/config.php';
     
    // Vérification des paramètres d'accès au fichier liste.php
    if(isset($_GET['go']) || isset($_GET['localite_un']) || isset($_GET['localite_deux'])) {
     
    	$json = array();
     
    	if(isset($_GET['go'])) {
    		// requête qui récupère les localités un
    		$requete = "SELECT * FROM localite_un ORDER BY localite_un ASC";
    		// exécution de la requête
    		$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
    		// Création de la liste
    		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
    			// je remplis un tableau et mettant l'id en index
    			$json[$donnees["id_localite_un"]][] = utf8_encode($donnees["localite_un"]);
    		}
    	}
    	elseif(isset($_GET['localite_un'])) {
    		// requête qui récupère les localités un
    		$requete = "SELECT * FROM localite_deux WHERE id_localite_un = '".$_GET['localite_un']."' ORDER BY localite_deux ASC";
    		// exécution de la requête
    		$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
    		// Création de la liste
    		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
    			// je remplis un tableau et mettant l'id en index
    			$json[$donnees["id_localite_deux"]][] = utf8_encode($donnees["localite_deux"]);
    		}
    	}
    	elseif(isset($_GET['localite_deux'])) {
    		// requête qui récupère les localités un
    		$requete = "SELECT * FROM localite_trois WHERE id_localite_deux = '".$_GET['localite_deux']."' ORDER BY localite_trois ASC";
    		// exécution de la requête
    		$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
    		// Création de la liste
    		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
    			// je remplis un tableau et mettant l'id en index
    			$json[$donnees["id_localite_trois"]][] = utf8_encode($donnees["localite_trois"]);
    		}
    	}
    	 // envoi du résultat au success
    	echo json_encode($json);
    }
     
    ?>

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour l'aspect PDO, il faut que tu utilises des requêtes préparées avec des paramètres.

    Pour l'aspect jQuery ... je te transferts vers le forum jQuery.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    bonjour sabotage a la place du query prepare déjà fait rien ne change j'ai la premier liste s'affiche et les autres dans la nature

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    $localite_un.on('change_liste', function() { .

    Je ne comprend pas d'où vient l'événement "change_liste" ? Voir : http://api.jquery.com/change/

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    Bonjour danielhagnoul, j'ai fait le modification rien j'ai toujours que la premier liste .

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    Bonjour j'ai repris un tutoriel de développez liste liée en AJAX avec du PDO , le soucis rien ne fonction

    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
    40
    41
    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 { // XMLHttpRequest non supporté par le navigateur 
            alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
            xhr = false; 
        } 
        return xhr;
    }
    /**
    * Méthode qui sera appelée sur le click du bouton
    */
    function go(){
        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('modele').innerHTML = leselect;
            }
        }
        // Ici on va voir comment faire du post
        xhr.open("POST","ajaxmodele.php",true);
        // ne pas oublier ça pour le post
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        // ne pas oublier de poster les arguments
        // ici, l'id de l'auteur
        sel = document.getElementById('marque');
        idmarque = sel.options[sel.selectedIndex].value;
        xhr.send("idMarque="+idmarque);
    }
    Code html : 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
    <body>
    	<form>
    		<fieldset style="width: 500px">
    			<legend>Liste liées</legend>
    			<label>Marques</label>
    			<select name='marque' id='marque' onchange='go()'>
    				<option value='-1'>Aucun</option>
    <?
    include'require/config1.php';
    $reponse = $connection->prepare('SELECT * FROM marque  ORDER BY nom');
    $reponse->execute(array());
    while($result = $reponse->fetch(PDO::FETCH_ASSOC)){
            echo "<option value=".$result['id'].">".$result['nom']."</option>";
    }
    ?>
    			</select>
    			<label>Modèle</label>
    			<div id='modele' style='display:inline'>
    				<select name='modele'>
    					<option value='-1'>Choisir la marque</option>
    				</select>
    			</div>
    		</fieldset>
    	</form>
    </body>
    </html>

    ajaxmodel

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?PHP
    include'require/config1.php';
    echo "<select name='modele'>";
    if(isset($_POST["idMarque"])){	
    	$reponse = $connection->prepare('SELECT id, nom FROM modele WHERE idMarque=:idMarque ORDER BY nom');
        $reponse->execute(array('idMarque'=> $_POST["idMarque"]));
        while($result = $reponse->fetch(PDO::FETCH_ASSOC)){
    	echo "<option value='".$result['id']."'>".$result['nom']."</option>";
        }
    }
    echo "</select>";
    ?>

Discussions similaires

  1. Pb listes liées javascript/php
    Par boo64 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/06/2006, 12h35
  2. Deux listes lies et un lien
    Par arti2004 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/03/2006, 16h44
  3. [MySQL] 1 table et 2 listes liées
    Par Ekik dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 07/02/2006, 16h47
  4. XMLHTTPRequest et listes liées
    Par ben23 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/12/2005, 16h32
  5. Problème avec listes liées entre elles et bouton "précé
    Par Oluha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/08/2005, 15h10

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