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 :

Listes liées PHP/Ajax mais aussi BDD


Sujet :

jQuery

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Par défaut Listes liées PHP/Ajax mais aussi BDD
    Bonjour,

    Je dois réaliser un formulaire de collecte pour lequel je dois afficher deux listes déroulantes toutes les deux remplies via ma base de données.
    La première liste influence les champs de la deuxième liste, sinon c'est pas marrant.

    J'ai mon fichier HTML général
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html lang="fr"><head>
        <title>Profitez des ventes privées Benefit Cosmetics</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8" />
        <link rel="stylesheet" type="text/css" href="CSS/infos.css"/>
     
    <script src="js-library/jquery-1.11.0.min.js"></script>
    <script>
    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
    $(document).ready(function() {
    	var $division = $('#division');
    	var $maison = $('#maison');
    	// chargement des régions
    	$.ajax({
    		url: 'maison_societe.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
    				$division.append('<option value="'+ index +'">'+ value +'</option>');
    			});
    		}
    	});
    	// à la sélection d'une région dans la liste
    	$division.on('click', function() {
    		var val = $(this).val(); // on récupère la valeur de la région
    		if(val != '') {
    			$maison.empty(); // on vide la liste des départements
    			$.ajax({
    				url: 'maison_societe.php',
    				data: 'id_division='+ val, // on envoie $_GET['id_region']
    				dataType: 'json',
    				success: function(json) {
    					$.each(json, function(index, value) {
    						$maison.append('<option value="'+ index +'">'+ value +'</option>');
    					});
    				}
    			});
    		}
    	});
    });
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    </script>
    <style>
    Code css : 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
    body	{width:820px;}
    div.corps	{border:2px solid #000;
    	border-radius:0.8em;
    	-moz-border-radius:0.8em;}
    p.formu	{text-align:left;}
    div.formulaireContact	{text-align:center;
    	padding-left:200px;}
    p.alerte	{color:#000;
    font-weight:bold}
    @font-face {
    	font-family: 'SignPainter-HouseScript';
    	src: url(fonts/signpainter/SignPainter-HouseScript.ttf);
    	src: local('?'), url(fonts/signpainter/SignPainter-HouseScript.ttf) format('truetype');
    	font-weight: normal;
    	font-style: normal;
    }
    @font-face {
    	font-family: 'PerspectiveSans';
    	src: url(fonts/perspective/PERSANS.TTF);
    	src: local('?'), url(fonts/perspective/PERSANS.TTF) format('truetype');
    	font-weight: normal;
    	font-style: normal;
    }
    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
    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
    </style>
    </head>
    <body>
    <center>
    <div class="corps">
    <p class="titre_contact">Texte pour expliquer le but du formulaire. <br  /></p>
    <div class="formulaireContact">
    <form action="formulaire-inscription.php" method="post" class="formu">
    	<p class="formu">
            <label for="civilite">* Civilité :</label>
            <SELECT name="civilite">
            <option value="Mme" >Madame </option>
            <option value="Mr." >Monsieur </option>
            </SELECT>
        </p>
        <p class="formu">
            <label for="nom">* Nom :</label>
            <input type="text" id="nom" name="nom" 
            	value="" 
            />
        </p>
        <p class="formu">
            <label for="prenom">* Prénom :</label>
            <input type="text" id="prenom" name="prenom" 
            	value="" 
            />
        </p>
        <p class="formu">* Choisissez
        <select id="division" name="division">
        <option value="">-- Votre division --</option>
    	</select>
    	</p>
        <p class="formu">* Choisissez
        <select id="maison" name="maison">
        <option value="">-- Votre Maison --</option>
    	</select>
    	</p>
        <p class="formu">
            <label for="email">* E-mail :</label>
            <input type="text" id="email" name="email" 
            	value=""
            />
        </p>
        <p class="submit">
            <input type="submit" name="envoye" value="VALIDER" />
        </p>
        <p class="formu">
            <input type="checkbox" name="newsletter" value="1"/>
            <label for="newsletter">M'inscrire aux ventes privées Benefit Cosmetics</label>
        </p>
    </form>
    </div>
    </div>
    </center>
    </body>
    </html>

    Mon fichier PHP qui doit récupérer le GET pour remplir les SELECT:
    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
    <?php 
    if(isset($_GET['go']) || isset($_GET['id_division'])) {
        $json = array();
        if(isset($_GET['go'])) {
            // requête qui récupère les régions
            $requete = "SELECT id, nom FROM lvmh_divisions";
        } 
    	else if(isset($_GET['id_division'])) {
            $id = htmlentities(intval($_GET['id_division']));
            // requête qui récupère les départements selon la région
            $requete = "SELECT id, name_maison FROM lvmh_maisons WHERE id_division = ". $id;
        }
        // connexion à la base de données
        try {
            $bdd = new PDO('mysql:host=MONSERVEUR;dbname=MATABLE', 'MONCODE', '');
        } catch(Exception $e) {
            exit('Impossible de se connecter à la base de données.');
        }
        // exécution de la requête
        $resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
        // résultats
        while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
            // je remplis un tableau et mettant l'id en index (que ce soit pour les régions ou les départements)
            $json[$donnees['id']][] = utf8_encode($donnees['nom']);
        }
        // envoi du résultat au success
        echo json_encode($json);
    }
    	else {
    		echo "J'ai un problème déjà ici";
    	}
    ?>

    Problème n°1 > le paramètre GET ne semble pas être lu
    Problème n°2 > lorsque j'efface les conditions de GET (pour voir au niveau de la BDD) il m'indique que la connexion a échoué, or, je suis sûre et certaine que ces informations sont correctes.

    Une idée de ce qui ne va pas ?

    Merci.

  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
    le paramètre GET ne semble pas être lu
    Il ne risque pas d'être lu vu qu'aucune valeur n'est associée au paramètre...

    il m'indique que la connexion a échoué, or, je suis sûre et certaine que ces informations sont correctes
    Un des premier réflexes qu'il faut avoir lorsqu'on est confronté à un bogue est de se méfier de ses certitudes : il est beaucoup plus fréquent que le problème vienne de là plutôt que d'une farce que te ferait PHP
    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 habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Par défaut
    Citation Envoyé par Bovino
    Il ne risque pas d'être lu vu qu'aucune valeur n'est associée au paramètre...
    Merci pour ton attention Bovino.

    C'est un script que j'ai récupéré pour adapter à mes besoins avec une connaissance limitée d'Ajax ... :/

    Comme il y a marqué data: 'go',
    A quel moment dois-je donner une valeur?! Est-ce que ce n'est pas déjà fait avec le :'go',

    Citation Envoyé par Bovino
    Un des premier réflexes qu'il faut avoir lorsqu'on est confronté à un bogue est de se méfier de ses certitudes : il est beaucoup plus fréquent que le problème vienne de là plutôt que d'une farce que te ferait PHP
    Quand je dis certaine c'est parce que l'accès depuis la partie formulaire sans prendre en compte la partie Ajax fonctionne très bien ...
    Je peux enregistrer une nouvelle inscription dans la BDD, donc je suis SURE et CERTAIN à 200% que l'accès à la base est OK.

  4. #4
    bm
    bm est déconnecté
    Membre extrêmement actif

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $.ajax({
    type: "GET",
    url: "test.js",
    dataType: "script"
    });
    Allez à la source de Jquery pour vérification :

    https://api.jquery.com/jQuery.ajax/

    Ajax peut déplacer des data locales ou distantes . Commencer par un formulaire suppose un niveau déjà avancé dans ce domaine !

Discussions similaires

  1. Liste déroulante liée (PHP-AJAX)
    Par emangeot dans le forum Langage
    Réponses: 1
    Dernier message: 01/12/2014, 15h41
  2. [AJAX] Listes déroulantes liées php+ajax
    Par Sh4dow49 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/07/2008, 15h31
  3. Listes liées php/ajax/javasript
    Par johnson95 dans le forum Langage
    Réponses: 3
    Dernier message: 21/04/2008, 16h24
  4. [Rico] Afficher depuis d'une liste deroulante (PHP+AJAX)
    Par maxis dans le forum Bibliothèques & Frameworks
    Réponses: 9
    Dernier message: 27/02/2006, 12h47

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