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 :

Listes liées [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de fabpeden
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 131
    Par défaut Listes liées
    bonjour, j'ai des problèmes avec des listes liées dans une page en php. Sur ma page, j'ai 3 listes liées. D'office la première est remplie par une requête sur ma base de données MYSQL. Le choix d'une des valeurs dans cette liste amène un autre choix dans la seconde liste. Et un choix dans cette seconde liste amène un choix dans une troisième liste. De la première liste à la deuxième cela fonctionne parfaitement, mais de la deuxième à la troisième pas du tout. J'ai essayé de faire des modifications, de mettre une autre requête et rien n'y fait.

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <HTML>
     
    <HEAD>
    <TITLE>
    GESTION DES ABONNEMENTS ECO GSM
    </TITLE>
    </HEAD>
    <BODY BGCOLOR=#ECF4DA>
     
    <table width="750" border="0" height="350" align="center">
    	<tr>
    		<td colspan="2" class="titre" height="94">Gestion des abonnements Eco GSM</td>
    		</tr>
    			<tr>
    				<td class="principal" width="273" height="99"> Choisissez un distributeur dans la liste:
    					<td class="principal" width="467" height="99">
    						<form method="post" name="formu" action="<?echo $PHP_SELF;?>">
    							<?php
    							//--- Connexion à la base de données ecocountoxchge ---//
    							mysql_connect("mysql5-3","ecocountoxchge","7NuisncT");
    							mysql_selectdb("ecocountoxchge") or die("Connexion impossible");
    							echo('<select name="distri">');
    							//--- Exécution de la requête de sélection des différents distributeurs ---//
    							$requete=mysql_query("SELECT DISTINCT NomDistributeur FROM gestionabonnements ORDER BY NomDistributeur") or die ("requète non executé") ;?>
    							<br> 
    							<?
    							if(! $requete) 
    							{
    								echo "Erreur requete"; 
    								exit;
    							}
    							while($ligne=mysql_fetch_array($requete))
    							{
    							?>
    								<option>
    								<?php
    								echo ''.$ligne['NomDistributeur'].'';
    								 ?> 
    								</option>
    								<?php
    							}
    							echo('</select>');
    							?>
    							<input type="submit" name="bnsubmit" value="Valider" >
    							</form>
    							<form name="formaccess" method="POST" action="action.php">
    							<input type="text" name="champnomdistributeur" size="20">
    							<input type="submit" value="Ajouter un distributeur" name="envoyer">&nbsp;&nbsp;&nbsp;
    						</form>
    					</td>
    				</tr>
    			</td>
    		<tr>
    		<td class="principal" width="273" height="106"> Choisissez un domaine dans la liste: </td>
    		<td class="principal" width="467" height="106">
    			<form method="post" name="med" action="<?echo $PHP_SELF;?>">
    				<?php 
    				echo('<select name="domaine">');
    				//--- Exécution de la requête de sélection des différents domaines ---//
    				$requete1=mysql_query("SELECT NomDomaine FROM gestionabonnements WHERE NomDistributeur='$distri'") or die ("requète non executé") ;
    				?>
    				<br>
    				<?
    				if(! $requete1) 
    				{
    					echo "Erreur requete"; 
    					exit;
    				}
    				while ($ligne=mysql_fetch_array($requete1))
    				{
    				?>
    						<option>
    						<?php echo ''.$ligne['NomDomaine'].'';
    						?> 
    						</option>
    						<?php
    				}
    				mysql_close();
    				?>
    				<input type="submit" name="bnvalider" value="Valider">
    			</form>
    		</td>
    	</tr>
    	<tr>
    		<td class="principal" width="273" height="106"> Choisissez un dans la liste: </td>
    		<td class="principal" width="467" height="106">
    			<form method="post" name="medi" action="">
    				<?php 
    				echo('<select name="NbCompteur">');
    				//--- Exécution de la requête de sélection du nombre de compteurs max autorisés ---//
    				$requete2=mysql_query("SELECT NbMaxCompteurs FROM gestionabonnements WHERE NomDomaine= '$domaine'") or die ("requète non executé") ;;
    				?>
    				<br>
    				<?
    				if(!$requete2) 
    				{
    					echo "Erreur requete"; exit;
    				}
    				while ($ligne=mysql_fetch_array($requete2))
    				{
    				?>
    						<option>
    						<?php 
    						echo ''.$ligne['NbMaxCompteurs'].'';
    						?> 
    						</option>
    						<?php
    				}
    				mysql_close();
    				?>
    				<input type="submit" name="bnvalidere" value="Valider">
    			</form>
    		</td>
    	</tr>
    </table> 
     
     
    </BODY>
    </HTML>
    Auriez une piste à me suggérer, merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bonjour

    Ton problème provient peut-être du mysql_close() qui se promène à la fin de ton 2e formulaire.

    Quelques remarques supplémentaires :
    Utiliser mysql_query(...) or die() est une très bonne idée. Mais dans ce cas, il n'est pas nécessaire (et même totalement inutile) de placer un bloc(!$requete), puisque c'est exactement la fonctionnalité du or die

    Au niveau de la sysntaxe de tes listes, il me semble qu'il faut impérativement un attribut value dans les balises option. Sans quoi, tes listes n'envoient aucune information. Et tu n'es pas obligé de jongler avec les balises <?php ?>.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="'.$ligne['NomDistributeur'].'">'.$ligne['NomDistributeur'].'</option>';
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre confirmé Avatar de fabpeden
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 131
    Par défaut
    Merci pour tes conseils cela fonctionne parfaitement.
    Lorsque je sélectionne une option dans la première liste, grâce à l'option "selected", celle-ci reste affichée. Par contre lorsque j'appuie sur le valider de la 2ème liste, la première perd la sélection. Est-il possible de garder une sélection sur une liste précédente ou faut-il ajouter l'option "selected" de la première liste entre les balises de la seconde liste?

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tes listes sont dans des formulaires séparés, non ? Ce que tu peux faire c'est ajouter un champ caché dans ton 2e formulaire qui renvoie l'info de la 1ere liste :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="distri" value=" <?php echo $_POST['distri'] ?> ">
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre confirmé Avatar de fabpeden
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 131
    Par défaut
    Oui elles sont dans deux formulaires séparés, mais cela ne résoud pas le problème. Je regarde où j'ai fait une erreur.

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    <!---------------------------------------------------------------->
     
    <!--------------------------------------------------------------->
     
    <HTML>
     
    <HEAD>
    <TITLE>
    GESTION DES ABONNEMENTS ECO GSM 
    </TITLE>
    </HEAD>
    <BODY BGCOLOR=#ECF4DA>
     
    <table width="750" border="0" height="350" align="center">
    	<tr>
    		<td colspan="2" class="titre" height="94"><center><font size=10 color=#006465> Gestion des abonnements Eco GSM</font></center></td>
    		</tr>
    			<tr>
    				<td class="principal" width="273" height="99"> Choisissez un distributeur dans la liste. Si celui-ci n'y figure pas, veuillez l'ajouter.
    					<td class="principal" width="467" height="99">
    						<form method="post" name="formu" action="<?echo $PHP_SELF;?>">
    							<?php
    							//--- Connexion à la base de données ecocountoxchge ---//
    							mysql_connect("mysql5-3","*******","****");
    							mysql_selectdb("******") or die("Connexion impossible");
    							echo('<select name="distri">');
    							//--- Exécution de la requête de sélection des différents distributeurs ---//
    							$requete=mysql_query("SELECT DISTINCT NomDistributeur FROM gestionabonnements ORDER BY NomDistributeur") or die ("requète non executé") ;?>
    							<br> 
    							<?
    							while($ligne=mysql_fetch_array($requete))
    							{
    									$sel='';
    									if ( isset($_POST['distri']) )
    									{
    										if ( $_POST['distri'] == $ligne['NomDistributeur'] )
    										{
    											$sel='selected="selected"';
    										}
    									}
    									echo '<option '.$sel. 'name='.$ligne["NomDistributeur"].'>'.$ligne["NomDistributeur"].'</option>';	
    							}
    							echo('</select>');
    							?>
    							<input type="submit" name="bnsubmit" value="Valider" >
    						</form>
    						<form name="formaccess" method="POST" action="action.php">
    							<input type="text" name="champnomdistributeur" size="20">
    							<input type="submit" value="Ajouter un distributeur" name="envoyer">&nbsp;&nbsp;&nbsp;
    						</form>
    					</td>
    				</tr>
    			</td>
    		<tr>
    			<td class="principal" width="273" height="106"> Choisissez un domaine dans la liste. Si celui-ci n'y figure pas, veuillez l'ajouter. </td>
    				<td class="principal" width="467" height="106">
    					<form method="post" name="med" action="">
    						<?php 
    						echo('<select name="domaine">');
    						//--- Exécution de la requête de sélection des différents domaines ---//
    						$requete1=mysql_query("SELECT NomDomaine FROM gestionabonnements WHERE NomDistributeur='$distri'") or die ("requète non executé") ;
    						?>
    						<br>
    						<?
    						while ($ligne1=mysql_fetch_array($requete1))
    						{
    							$sel1='';
    							if ( isset($_POST['domaine']) )
    							{
    								if ( $_POST['domaine'] == $ligne1['NomDomaine'] )
    								{
    									$sel1='selected="selected"';
    								}
    							}
    							echo '<option '.$sel1. 'name='.$ligne1["NomDomaine"].'>'.$ligne1["NomDomaine"].'</option>';	
    						}
    						?>
    						<input type="submit" name="bnvalider" value="Valider">
    					</form>
    					<form name="formaccesse" method="POST" action="action.php">
    						<input type="text" name="champnomdomaine" size="20">
    						<input type="submit" value="Ajouter un domaine" name="envoyerdomaine">&nbsp;&nbsp;&nbsp;
    						<input type="hidden" name="distrib" value=" <?php echo $_POST['distri'] ?> ">
    					</form>
    				</td>
    			</td>
    		</tr>
    	<tr>
    		<td class="principal" width="273" height="106"> Choisissez un dans la liste: </td>
    			<td class="principal" width="467" height="106">
    				<form method="post" name="medi" action="">
    					<?php 
     
    					echo('<select name="NbCompteur">');
    					//--- Exécution de la requête de sélection du nombre de compteurs max autorisés ---//
    					$requete2=mysql_query("SELECT NbMaxCompteurs FROM gestionabonnements WHERE NomDomaine= '$domaine'") or die ("requète non executé") ;
    					?>
    					<br>
    					<?
    					while ($ligne2=mysql_fetch_array($requete2))
    					{
    							$sel2='';
    							if ( isset($_POST['NbCompteur']) )
    							{
    								if ( $_POST['NbCompteur'] == $ligne2['NbMaxCompteurs'] )
    								{
    									$sel2='selected="selected"';
    								}
    							}
    							echo '<option '.$sel2. 'name='.$ligne2["NbMaxCompteurs"].'>'.$ligne2["NbMaxCompteurs"].'</option>';	
    					}
    					?>
    					<input type="submit" name="bnvalidere" value="Valider">
    				</form>
    				<form name="formajout" method="POST" action="action.php">
    						<input type="text" name="champnomdomaine" size="20">
    						<input type="text" name="champnomdomaine" size="20">
    						<input type="submit" value="Ajouter un domaine" name="envoyerdomaine">&nbsp;&nbsp;&nbsp;
    				</form>
    			</td>
    		</td>
    	</tr>
    </table> 
     
     
    </BODY>
    </HTML>

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Le champ hidden doit être dans le même formulaire que ta 2e liste
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. Pb listes liées javascript/php
    Par boo64 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/06/2006, 12h35
  2. Deux listes lies et un lien
    Par arti2004 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/03/2006, 16h44
  3. [MySQL] 1 table et 2 listes liées
    Par Ekik dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 07/02/2006, 16h47
  4. XMLHTTPRequest et listes liées
    Par ben23 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/12/2005, 16h32
  5. Problème avec listes liées entre elles et bouton "précé
    Par Oluha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/08/2005, 15h10

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