Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/07/2011, 21h54   #1
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
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 :
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
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 09h23   #2
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

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

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Code :
$req_quatre_autresOption =   "SELECT fld_id_nom, fld_nom FROM $table_db_nom WHERE fld_id_nom_fruit != 'MUR' order by fld_nom";
__________________
Pensez à la balise [CODE].
Aucune réponse aux questions par MP.
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/07/2011, 09h44   #3
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
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 :
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)
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/07/2011, 15h54   #4
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
Citation:
Envoyé par gwharl Voir le message
Code :
$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 :
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
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 15h57   #5
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
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
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 18h08   #6
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
Bonjour Gwharl, Jreaux62 et les autres
Citation:
Envoyé par gwharl Voir le message
Code :
$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 :
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 :
Citation:
Unknown column 'MUR' in 'where clause'

Pourquoi ?
que je dois faire ?
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 18h24   #7
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
il fallait mettre mon variable entre les apostrophes

Code :
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...
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 11h56   #8
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Pour être plus "propre" et plus lisible (donc plus facile à déboguer), écris-le ainsi :
Code :
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;";
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 27/07/2011, 15h34   #9
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
merci pour cette info, jreaux62.
C'est ainsi plus clair comme tu dis
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 20h28   #10
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
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 :
1
2
" SELECT fld_id_nom, fld_nom
  FROM $table_db_nom  ";
il faut :
Code :
1
2
" SELECT fld_id_nom, fld_nom ".
" FROM .$table_db_nom";
mais pas celui-ci :
Code :
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 :
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
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 09h18   #11
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
C'est juste une question d'écriture, et de lisibilité du code.
Au lieu d'écrire sur une seule ligne (qui peut être très longue !), on indente la requête sur plusieurs lignes.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
 		// ici, on écrit toute la requête entre ".............."; 
 		// avec juste des passage à la ligne pour la lisibilité
$req_quatre_autresOption = "SELECT fld_id_nom, fld_nom FROM ".$table_db_nom." WHERE fld_id_nom != '".$toto."' ORDER BY fld_nom;";
		// 1ERE ECRITURE :
$req_quatre_autresOption = 
		"SELECT fld_id_nom, fld_nom
		FROM ".$table_db_nom." 
		WHERE fld_id_nom != '".$toto."' 
		ORDER BY fld_nom;";
 
		// ici, c'est de la concaténation : "lign1"."lign2"."lign3";
$req_quatre_autresOption = " SELECT fld_id_nom, fld_nom "." FROM ".$table_db_nom." WHERE fld_id_nom != '".$toto."' "." ORDER BY fld_nom;";
		// 2EME ECRITURE :
$req_quatre_autresOption = 
		" SELECT fld_id_nom, fld_nom ".
		" FROM ".$table_db_nom.
		" WHERE fld_id_nom != '".$toto."' ".
		" ORDER BY fld_nom;";
?>
Perso, j'utilise la 2ème écriture, mais c'est une question de choix personnel
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/07/2011, 14h52   #12
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
merci jreaux62, super

avec la jointure,selon tes explications, je fais ainsi :

Code :
1
2
3
4
5
6
 
" SELECT nevo.fld_id_nom_fruit, nom.fld_id_nom, nom.fld_nom ".
" FROM ". $table_db . " nevo".
" INNER JOIN ".$table_db_nom . " nom".
" ON nevo.fld_id_nom_fruit = nom.fld_id_nom ".
" WHERE nevo.fld_id_nom_fruit='MUR'";
bonne journée
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h31.


 
 
 
 
Partenaires

Hébergement Web