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

PHP & Base de données Discussion :

Problème de listes déroulantes liées avec requêtes sql


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Points : 86
    Points
    86
    Par défaut Problème de listes déroulantes liées avec requêtes sql
    Bonjour,

    Je suis débutant et malgré Mon pb est le suivant

    je possède les tables suivante

    ordinateur (matricule_ord, ..... )
    logiciel(nom_logiciel....
    instal_log (matricule_ordi,nom_logiciel.....) //table ou se trouve les logiciels installé sur tel ordinateurs

    je souhaite dans ma page PHP que l'utilisateur selectionne un logiciel et indique sur quel pc il voudrait l'installer via deux listes déroulantes

    mais ce que je souhaite également c'est que lorsque l' on selectionne un nom de logiciel, je ne trouve dans ma liste déroulante d'ordinateurs que les ordinateurs sur lequel le logiciel n'est pas encore installé


    je n'arrive pas malgré mes recherches à rafraichir ma liste ordinateur selon le logicel utilisé

    voicis le code de ma page ou je selectionne le logiciel et l'ordinateur. Si vous pouviez m'aider à trouver le code manquant. Je n'ai pas compris les tutoriaux que j'avais trouvé

    Merci d'avance

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
     
           <title>Gestion du parc informatique</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
           <link rel="stylesheet" media="screen" type="text/css" title="format" href="styles/format.css" />
       </head>
     
     
       <body class="page">
    <h1 align="center"><img src="images/logo.gif" width="200" height="70"></h1>
    <h2 align="center"><i><b> Gestion du parc informatique </i></b></h2>
    <hr>
    <br>
    <A HREF="index.htm"> Acceuil  </A> >
    <br>
    <br>
    <h3 align="center"><b><u>Installer une licence sur un PC</b></u></h3>
     
     
     
     
     
    <table>
     
    <form name="ajout" enctype="multipart/form-data" action="ajoutaffect.php" method="post">
    <col valing=left width=300>
     
     
    <!-- Selection dans la table des logiciel avec nombre d'achat de licences superieur à 0 !-->
     
    <td><td><H3 ALIGN="left">choix du logiciel </b></td>
    <td>
          <SELECT name="nom_log" size="1">
                  <?mysql_connect("localhost", "root", "");
    				mysql_select_db("keinfor");
    				$SQL = "SELECT nom_log
    					FROM logiciel
    					WHERE nbr_valid_lic > '0' ";
     
    				$res = mysql_query($SQL);
    				while($val=mysql_fetch_array($res)) {
    				echo '<option>'.$val['nom_lic'].'   '.$val['key_lic'].'</option>';
    				}
    				?>
          </SELECT>
    </td>
    <tr>
     
     
    <!-- Selection dans la table ordinateur des ordinateurs !-->
     
    <td><td><H3 ALIGN="left">Choisissez le PC </b></td>
    <td>
          <SELECT name="mat_ord" size="1">
                  <?mysql_connect("localhost", "root", "");
    				mysql_select_db("keinfor");
    				$SQL = "SELECT mat_ord
    					FROM ordinateur
    					WHERE etat_ord NOT LIKE 'HS'
    				";
    				$res = mysql_query($SQL);
    				while($val=mysql_fetch_array($res)) {
    				echo '<option>'.$val['mat_ord'].'</option>';
    				}
    				?>
          </SELECT>
    </td>
    </TABLE>
    <br>
     
    <h3 align="center">
    <input type="submit" value="Valider">
    <INPUT type="reset"></h3>
     
    </body>
    </html>

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Bonjour
    si j'ai bien compris ce que tu demandes, ton probleme est dans le rafraichissement de tes liste déroulante...En autres mots, ce n'est pas ta requete Mysql qui cause probleme

    Alors moi j'avais un truc sensiblement semblable a faire dans un projet
    J'avais un liste de compagnie et une autre list qui était les utilisateurs relié a cette compagnie
    Donc quand je changeait de cie, la liste d'utilisateur devait se rafraichir également
    Le cas est semblable d'après moi alors je te laisse une partie de mon 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
     
    <select name="cieAssurance" onChange="submitAssurance('newDossier.php?cie=1#rev',this.name);">
    									<option value="0" selected>Sélectionner la Compagnie</option>
    								<?
    									//Remplir les champs des compagnies d'assurance
    									$strScript = "Select cieAssuranceID,cieAssuranceNom
    													FROM tblcieassurance
    													ORDER BY cieAssuranceNom";
     
    									$req = mysql_query($strScript);
     
    									while($lig = mysql_fetch_array($req)){
    										if(isset($_GET["cie"])&&($_POST["cieAssurance"] == $lig[0])){
    											echo"<option value=$lig[0] selected>$lig[1]</option>";
    										}
    									else{
    											echo"<option value=$lig[0]>$lig[1]</option>";
    										}
    									}
    								?>
    								</select>
    C'était la premiere liste, la fonction onChange a pour but d'appeler la page une seconde fois avec comme parametre une valeur bidon utiliser par la 2e liste comme suit

    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
     
    <select name="reviseur">
    									<option value="0" selected>Sélectionner le réviseur</option>
    									<?
    										$cieID = $_POST["cieAssurance"]; //C'est la valeur de la première liste pour construire la requete de la 2e liste
     
    										//Remplir les reviseurs par rapport à la compagnie selectionnée
    										$strScript = "SELECT ca.cieAssuranceID, r.reviseurID, r.reviseurNom, r.reviseurPrenom
    														FROM tblcieassurancereviseur AS ca
    														INNER JOIN tblreviseur AS r 
    														ON ca.reviseurID = r.reviseurID
    														WHERE ca.cieAssuranceID = $cieID
    														ORDER BY r.reviseurNom";
     
    										$req = mysql_query($strScript);
     
    										while($lig = mysql_fetch_array($req)){
    												echo"<option value=$lig[1]>$lig[2], $lig[3]</option>";
     
    										}
    								?>
    								</select>
    Alors c'est ca
    dans le onchange de ta première liste tu appelles une fonction quoi va rafraichir ta 2e liste et tu places des conditions pour bâtir ta requete
    J'espère t'avoir mis sur un voie
    bonne journée
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Points : 86
    Points
    86
    Par défaut
    Merci bcp pour ton code!

    en tout cas ca ressemble à ce que je cherche, bon, j'avourais que y'a certaine variable ds ton code que j'ai pas trop compris, mais je pense comprendre que c'est le OnChange dans la premiere colone qui compte et qui envoi la variable reçus pour traitement dans la seconde liste ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Points : 86
    Points
    86
    Par défaut
    salut

    j'ai donc ésayer ton code mais peux tu me dire ce que tu mets dans ta fonction "SubmitAssurance" qui permets de récupérer la valeur et de la retransmettre à la variable php

    Merci

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Pour mettre à jour dynamiquement une liste sans recharger toute la page, le mieux est de passer par javascript et plus précisément par XmlHttpRequest. Le changement est instantanné et invisible pour l'utilisateur.

  6. #6
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Salut,

    Citation Envoyé par Richton95
    j'ai donc ésayer ton code mais peux tu me dire ce que tu mets dans ta fonction "SubmitAssurance" qui permets de récupérer la valeur et de la retransmettre à la variable php
    Ouais ya rien de complexe voilà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /*@param pageAction c'est la page que tu veux transmettre donc tu peux mettre la meme comme dans le code plus haut
    @param name, je ne l'utilise pas pour le moment bref inutile dans cette fonction*/
    function submitAssurance(pageAction,name){
    		document.frmNewDossier.action = pageAction;
    		document.frmNewDossier.submit();
    	}
    j'espere t'avoir aidé un peu
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

Discussions similaires

  1. problème de listes déroulantes liées dynamiques avec jsp
    Par solfegepro dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 09/08/2007, 17h11
  2. Réponses: 2
    Dernier message: 26/05/2007, 17h28
  3. Gestion de 5 listes déroulantes liées avec paramètres SQL
    Par kenshir0 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 06/04/2007, 18h46
  4. [MySQL] Liste déroulante liée, chargée par SQL
    Par Krakt dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 23/03/2007, 10h55
  5. [AJAX] Listes déroulantes liées avec Ajax
    Par paupiette dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/08/2006, 16h51

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