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 :

listes deroulantes liées


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de sub-0
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 197
    Par défaut listes deroulantes liées
    Bonjour ,
    Est-il possible de créer deux listes déroulantes liées c'est à dire le contenu de la deuxième liste dépend de la valeur sélectionnée dans la première liste, j'ai deja vu la solution en ajax mais je cherche une solution en php.
    J'ai essayé ceci mais ça me donne une erreur de syntaxe après l'affichage de la premiere liste deroulante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    j'ai testé la requte dans phpmyadmin est ça marche , alors je ne sais pas l'origine de cette erreur.
    J'ai vraiment besoin de votre aide.
    Voila la partie du code que j'ai essayé:
    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
    <p>
     
                <label for="form_type">Type : </label>
    			<select id="form_type" name="type" >
    					<option value="dep">Département</option>			
    				    <option value="ser">Service</option>
    				</select>
    				<?php $typ= $_POST['type'];
    				    $verif_query=sprintf("SELECT `libelle` FROM `entite` WHERE type=".$typ.""); // requête sur la base administrateurs
    					$verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
    					if($verif){
    				$fic= '<label for="form_libelle">Libelle : </label><select id="form_type" name="type" >';
    				while($ligne = mysql_fetch_array($verif)) {
                    $fic.='option>'.$ligne[libelle].'</option>';	        
    			}			
    				$fic.='</select>';
                   echo $fic;} ?> 
            </p>

  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
    avant tu soumettes ton formulaire $_POST['type'] ne contient rien, donc ta requete fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE type=//fin de requete
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Bonjour,

    Si ça peut t'aider,
    voilà comment j'ai réécrit ton code.
    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
    // On récupère le type sélectionné sur la page appelante. Sinon le type par defaut est "département"
    (!empty($_POST['type'])) ? $type=$_POST['type'] : $type='dep';
    ?>
    <p>
    <label for="form_type">Type : </label>
    <select id="form_type" name="type" >
    	<!-- On marque selected le type retenu -->
    	<option value="dep" <?php if ($type=='dep') echo 'selected="selected"'; ?>>Département</option>			
    	<option value="ser" <?php if ($type=='ser') echo 'selected="selected"'; ?>>Service</option>
    </select>
     
    <label for="form_libelle">Libelle : </label>
    <select id="form_type" name="libelle" >
    <?php
    $verif_query="SELECT `libelle` FROM `entite` WHERE type=".$type.""); // requête sur la base administrateurs
    $verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
    $options='';
    if($verif){
    	while($ligne = mysql_fetch_array($verif)) {
    		$options.='<option>'.$ligne['libelle'].'</option>';	        
    	}
    }
    echo $options; 
    ?> 
    </select>
    </p>
    Je ne l'ai pas testé,
    mais cela doit permettre de lier les deux listes...
    enfin côté serveur.

    Cela ne résout pas ton problème.
    En effet, lorsque tu vas changer de type,
    les libellés eux resteront les mêmes,
    il faudra de toutes façons faire appel au serveur
    via javascript et l'événement onchange
    pour que ce changement soit pris en compte.

    Fred

  4. #4
    Membre confirmé Avatar de sub-0
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 197
    Par défaut
    Merci micetf ton lien ma beaucoup aidé , maintenant j'ai un autre problème car quand je remplit ma liste déroulante a partir de ma table elle m'affiche des caractères bizzare au lieu des accents je sais comment régler ce problème dans un paragraphe html normale mais dans mon cas j'ai aucune idée

  5. #5
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    Bonjour,

    Vérifie l'encodage dans votre DOCTYPE met le a UTF-8, si c'est déjà le cas ça pourrais provenir aussi de de l'encodage utilisé dans votre base de données.

    Ps: votre pseudo n'est pas très originale, on a un autre Sub0 sur le forum, je rigole

    a+ aityahia

  6. #6
    Membre confirmé Avatar de sub-0
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 197
    Par défaut
    J'ai essayé avec l'encodage UTF-8 mais aucun résultat , le problème c'est que j'ai déjà une liste dans le même formulaire et ça marche nikel alors ça doit être causé par le format de ma BD peut tu m'indiquer comment faire pour modifier cette format ??

    J'aime ton sens d'humour

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. 2 liste deroulante liées
    Par zaynabe dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/05/2008, 09h06
  2. Liste deroulante liée
    Par monphp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/05/2007, 14h05
  3. deux listes deroulantes liées
    Par skanderb dans le forum JSF
    Réponses: 10
    Dernier message: 21/05/2007, 18h10
  4. Deux listes deroulantes liées entre elles
    Par killerhertz dans le forum ASP
    Réponses: 4
    Dernier message: 16/07/2006, 22h43
  5. [AJAX] listes deroulantes liées x3
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/04/2006, 16h55

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