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 :

Menu déroulant contient les informations qui se trouvent dans 2 "table"s différentes. [PHP 5.0]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut Menu déroulant contient les informations qui se trouvent dans 2 "table"s différentes.
    Bonjour,
    1re table, c'est le résultat [tb_fruits_new] qui contient 5 champs/colonnes

    fld_id ; fld_id_nom_fruit ; fld_nom_new ; fld_pepins ; fld_diametres
    et il y a 2 enregistrements*:
    1......ORA......Orange......cela dépend de......5 cm
    2......MUR......Mûre........autant..............0.5 cm

    Avec ces informations, je construis mon option sélectionnée de mon menu déroulant*:
    [<option selected="selected*» value="MUR">Mûre</option>]

    2e table contient les noms de fruits [tb_fruit_nom] qui contient 3 champs/colonnes
    id ; fld_id_nom ; fld_nom
    et il y a 4 enregistrements dedans*:
    1......ORA......Orange
    2......MEL......Melon
    3......MUR......Mûre
    4......FRA......Framboise

    Avec ces informations je construis mes autres options non sélectionnées de mon menu déroulant*:
    [<option value="FRA">Framboise </option><option value="MEL">Melon</option>...]

    Voici mon code qui marche*:
    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
      <select name="nom_menu" id="nom_menu"  class="valid"  onchange="submit()" >
            <?php
    		include"../bd_db/selection_test_fruits.php";
     
    //**************---------------------1er partie du menu :
    				//affichage 1ere option qui est séléctionné dans le menu exemple : 
    				//<option selected="selected" value="MUR">Mûre</option>
    //**************---------------------				
     
     
    			//requête  la jointure entre les deux tables
    			//je les desactive
    //				$req_quatre =   " SELECT new.fld_id_nom_fruit, nom.fld_id_nom, nom.fld_nom
    //										FROM $table_db new
    //										INNER JOIN $table_db_nom nom
    //											ON new.fld_id_nom_fruit = nom.fld_id_nom
    //										WHERE new.fld_id_nom_fruit='MUR'";
     
    			//requête  sans jointureavec la table db
    			$req_quatre =   " SELECT fld_id_nom_fruit, fld_nom
    									FROM $table_db
    									WHERE fld_id_nom_fruit='MUR'";
     
    			$rep_quatre =  mysql_query($req_quatre, $cnx) or die( mysql_error() ) ;
     
     
     
                while($affiche_contenu_quatre = mysql_fetch_array($rep_quatre)) {
     
     
    					$id_fruit_table_new=$affiche_contenu_quatre[0];
    					$id_fruit_table_nom=$affiche_contenu_quatre[1];
    					//$nom_table_nom=$affiche_contenu_quatre[2]; //pour la requête avec la jointure entre les deux tables
     
     
    				echo '<option selected="selected" value="'.$id_fruit_table_new.'"';
    									//echo '>'.$nom_table_nom.'</option>'; //pour la requête avec la jointure entre les deux tables
    									echo '>'.$id_fruit_table_nom.'</option>';
     
    				 }
    //**************---------------------1er partie du menu FIN ---------------------**************
     
     
    //:::::::::::::::::::::: 2e partie: affichage les autres options qui ne sont pas séléctionné	
     
     
    				$req_quatre_autresOption =   "SELECT fld_id_nom, fld_nom
    												FROM $table_db_nom order by fld_nom";
     
    				$rep_quatre_autresOption =  mysql_query($req_quatre_autresOption, $cnx) or die( mysql_error() ) ;
     
     
     
               		 while($affiche_contenu_quatre_quatre_autresOption = mysql_fetch_array($rep_quatre_autresOption)) {
     
     
     
    					$id_fruit=$affiche_contenu_quatre_quatre_autresOption[0];
    					$nom_fruit=$affiche_contenu_quatre_quatre_autresOption[1];
     
    				echo '<option value="'.$id_fruit.'">'.$nom_fruit.'</option>';
     
                }
    //:::::::::::::::::::::: 2e partie:  FIN :::::::::::::::::::::: 
            ?>
          </select>
    Mais j'ai un petit souci...
    Puisque, dans mon 2e enregistrement*: de ma 1re table contient «*MUR*» alors, il y a
    <option selected="selected*» value="MUR">Mûre</option> dans mon menu,
    mais dans ma 2e table, au 3e enregistrement, il y a aussi «*MUR*»...

    Donc, c'est normal que j'aie 2 mêmes options*: l'une est sélectionnée, l'autre n'est pas séléctionnée
    <option selected="selected*» value="MUR">Mûre</option>
    <option value="FRA">Framboise </option>
    <option value="MEL">Melon</option>
    <option value="MUR">Mûre</option>
    <option value="ORA">Orange</option>

    Comment peux-je éviter d'afficher la 2e qui n'est pas sélectionnée?
    Au moins, vous pouvez me donner des idées...

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_quatre_autresOption =   "SELECT fld_id_nom, fld_nom FROM $table_db_nom WHERE fld_id_nom_fruit != 'MUR' order by fld_nom";

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    es-tu sûr d'avoir bien REFLECHI à la CONCEPTION de tes tables ?

    A/ UNE SEULE TABLE aurait probablement suffi (il y a déjà 2 champs communs à tes 2 tables !)
    Avec une seule table : on prend l'ID comme value (car il est auto-incrémenté, et donc unique)
    Dans ton cas, tu risques d'être vite à cours de "code" à 3 lettres :
    - framboise => FRA
    - et pour ... fraise ??

    B/ Avec de DEUX TABLES :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    1/ table des noms de fruits [tb_fruit_nom] :
    id_fruit ; fld_code ; fld_nom
    1......ORA......Orange
    2......MEL......Melon
    3......MUR......Mûre
    4......FRA......Framboise 
    
    2/table des résultats (??) [tb_fruits_new] :
    fld_id ; id_fruit ; fld_pepins ; fld_diametres
    et il y a 2 enregistrements*:
    1......1......cela dépend de......5 cm
    2......3........autant..............0.5 cm
    Les 2 tables sont liées par id_fruit.
    Les requêtes se font alors en jointure + on utilise id_fruit en value (car unique)
    Dernière modification par Invité ; 26/07/2011 à 09h56.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Les 2 tables sont liées par id_fruit.
    Les requêtes se font alors en jointure + on utilise id_fruit en value (car unique)
    Bonjour jreaux62, tu as raison aussi... parce que c'est logique

    Je vais le voir aussi...

    Merci encore vos aides et bonne journée

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    Citation Envoyé par gwharl Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_quatre_autresOption =   "SELECT fld_id_nom, fld_nom FROM $table_db_nom WHERE fld_id_nom_fruit != 'MUR' order by fld_nom";
    Merci gwharl... Ça marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req_quatre_autresOption =   "SELECT fld_id_nom, fld_nom
    												FROM $table_db_nom  WHERE fld_id_nom != 'MUR' order by fld_nom";
    bonne journée

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    Bonjour Gwharl, Jreaux62 et les autres
    Citation Envoyé par gwharl Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_quatre_autresOption =   "SELECT fld_id_nom, fld_nom FROM $table_db_nom WHERE fld_id_nom_fruit != 'MUR' order by fld_nom";
    ça marche le code de Gwharl mais si je rectifie un peu comme le suivant, j'ai un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $toto = "MUR";
    $req_quatre_autresOption =   "SELECT fld_id_nom, fld_nom
    FROM $table_db_nom  WHERE fld_id_nom != $toto order by fld_nom";
    et voici le message :
    Unknown column 'MUR' in 'where clause'

    Pourquoi ?
    que je dois faire ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    il fallait mettre mon variable entre les apostrophes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $toto = "MUR";
    $req_quatre_autresOption =   "SELECT fld_id_nom, fld_nom
    FROM $table_db_nom  WHERE fld_id_nom != '$toto' order by fld_nom";
    Désolé pour ce dérangement...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Pour être plus "propre" et plus lisible (donc plus facile à déboguer), écris-le ainsi :
    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
    <?php
    $toto = "MUR";
    $req_quatre_autresOption = 
    		"SELECT fld_id_nom, fld_nom
    		FROM ".$table_db_nom." 
    		WHERE fld_id_nom != '".$toto."' 
    		ORDER BY fld_nom;";
     
    		// ou :
    $req_quatre_autresOption = 
    		" SELECT fld_id_nom, fld_nom ".
    		" FROM ".$table_db_nom.
    		" WHERE fld_id_nom != '".$toto."' ".
    		" ORDER BY fld_nom;";
    ?>

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    merci pour cette info, jreaux62.
    C'est ainsi plus clair comme tu dis

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Pour être plus "propre" et plus lisible (donc plus facile à déboguer), (...)
    Salut Jreaux62,
    Est-ce que tu pourrais me dire la règle de cette histoire?

    Par exemple avec celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    " SELECT fld_id_nom, fld_nom
      FROM $table_db_nom  ";
    il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    " SELECT fld_id_nom, fld_nom ".
    " FROM .$table_db_nom";
    mais pas celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    " SELECT fld_id_nom, fld_nom ".
    " FROM ".$table_db_nom.;
    et lorsqu'il y a une jointure?
    par exemple avec celui-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    "	SELECT new.fld_id_nom_fruit, nom.fld_id_nom, nom.fld_nom
    	FROM $table_db new
    	INNER JOIN $table_db_nom nom
    	ON new.fld_id_nom_fruit = nom.fld_id_nom
    	WHERE new.fld_id_nom_fruit='MUR'";
    Comment fais-tu?

    Merci et bonne journée

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/07/2015, 18h07
  2. Réponses: 6
    Dernier message: 18/07/2014, 13h21
  3. Réponses: 2
    Dernier message: 04/02/2014, 17h13
  4. Ou trouver les informations qui defile lors du boot ?
    Par piff62 dans le forum Administration système
    Réponses: 2
    Dernier message: 17/03/2005, 17h19

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