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

Langage PHP Discussion :

valeur liste déroulante lié


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut valeur liste déroulante lié
    Bonjour ,

    j'ai un petit probleme :

    j'ai une liste déroulante lié qui fonctionne bien c'est a dire que dans le premier champ je choisi la marque du wehicule ( peugeot ) et le 2 eme champ m'affiche des choix possible ( 208 , 308 etc... ) par contre quand au moment d'enregistrer le formulaire dans la base sql il m'enregiste les valeur dans les champ constructeur et model mais moi j'aimerais qu'il enregistre dans la base peugeot et 208 .

    voici le bout de code :

    le php :

    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
    <!DOCTYPE html>
    <html>
    <head>
    <title>Alimenter une liste de départements selon la région sélectionnée avec jQuery et MySQL</title>
    <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
    <link rel="stylesheet" href="css/styles.css" />
    <script src="jquery.js"></script>
    <script src="liste.js"></script>
    </head>
     
    <body>
     
    	<h2>Alimenter une liste de départements selon la région sélectionnée avec jQuery et MySQL</h2>
     
    	<form>
    		<select id="regions" name="regions">
    			<option value="">-- Régions --</option>
    		</select>
     
    		<select id="departements" name="departements">
    			<option value="">-- Départements--</option>
    		</select>
    	</form>
     
    </body>
     
    </html>

    fonctionaja.php

    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
    <?php
    if(isset($_GET['go']) || isset($_GET['id_region'])) {
     
        $json = array();
     
        if(isset($_GET['go'])) {
            // requête qui récupère les régions
            $requete = "SELECT id, nom FROM constructeurs ORDER BY nom";
        } else if(isset($_GET['id_region'])) {
            $id = htmlentities(intval($_GET['id_region']));
            // requête qui récupère les départements selon la région
            $requete = "SELECT id, nom FROM models WHERE id_region = ". $id ." ORDER BY nom";
        }
     
        // connexion à la base de données
        try {
            $bdd = new PDO('mysql:host=localhost;dbname=france', 'celia', '');
        } 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);
    }
    ?>
    le liste.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
    $(document).ready(function() {
    	var $regions = $('#regions');
    	var $departements = $('#departements');
     
    	// chargement des régions
    	$.ajax({
    		url: 'fonctionajax.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
    				$regions.append('<option value="'+ index +'">'+ value +'</option>');
    			});
    		}
    	});
     
    	// à la sélection d'une région dans la liste
    	$regions.on('change', function() {
    		var val = $(this).val(); // on récupère la valeur de la région
     
    		if(val != '') {
    			$departements.empty(); // on vide la liste des départements
     
    			$.ajax({
    				url: 'fonctionajax.php',
    				data: 'id_region='+ val, // on envoie $_GET['id_region']
    				dataType: 'json',
    				success: function(json) {
    					$.each(json, function(index, value) {
    						$departements.append('<option value="'+ index +'">'+ value +'</option>');
    					});
    				}
    			});
    		}
    	});
    });

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    il m'enregiste les valeur dans les champ constructeur et model mais moi j'aimerais qu'il enregistre dans la base peugeot et 208 .
    cette phrase n'est pas claire.
    tu veux dire que dans ta base de donnée actuellement tu insères le mot "constructeur" au lieu de "peugeot" ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,,
    actuellement, ce sont les 'id qui sont transmis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $json[$donnees['id']][] = utf8_encode($donnees['nom']);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $regions.append('<option value="'+ index +'">'+ value +'</option>');
    Les "id" sont bien pratiques, car uniques.
    Il servent ici notamment aussi pour définir la 2ème liste par rapport à l'id reçu de la 1ère.
    Ce qui n'est pas forcément le cas du "nom" ou "marque".

    Le mieux, à mon avis, est d'enregistrer tel quel (les id), et, lors d'un affichage suivant faire une requête avec JOINTURE sur les différentes tables, pour récupérer les "nom"/"marques"/...

    Par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(document).ready(function() {
    	var $regions = $('#regions');
    	var $departements = $('#departements');
    J'espère que tu sais faire la différence entre variable PHP et variable JavaScript

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut merci
    un peux plus de détails :

    j'ai crée un formulaire pour saisir des interventions.
    dans ce formulaire il 1 liste déroulante lié qui me sert a saisir le constructeur et le model du véhicule.

    quand je valide se formulaire il enregistre dans la table intervention la valeur 1 pour le constructeur Peugeot et la valeur 5 pour le model 208.

    j'aurais juste voulue savoir si au lieux d'enregistrer dans la table intervention les valeur 1 et 5 il etait possible d'enregistrer Peugeot pour le constructeurs et 208 pour le model .

  5. #5
    Invité
    Invité(e)
    Par défaut
    tu sais faire une requete pour recuperer un champ a partir de l'id, non ?
    alors tu sais quoi faire.

    N.B. Pourquoi j'ai l'impression que tu n'as pas écrit ce code... ?

Discussions similaires

  1. valeurs liste déroulante ne s'affichent pas
    Par pphil972 dans le forum IHM
    Réponses: 4
    Dernier message: 31/10/2008, 19h45
  2. Réponses: 2
    Dernier message: 20/03/2008, 10h19
  3. affichage =/= valeur (liste déroulante)
    Par laurent.c123 dans le forum JSF
    Réponses: 2
    Dernier message: 05/06/2007, 13h08
  4. Valeur liste déroulante dans un état
    Par guilpau dans le forum IHM
    Réponses: 4
    Dernier message: 29/01/2007, 11h52
  5. [VBA] choix valeur liste déroulante (champ texte d'1 table)
    Par Lou Pitchoun dans le forum Access
    Réponses: 14
    Dernier message: 22/02/2006, 10h27

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