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

  1. #1
    Membre du Club 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
    Points : 60
    Points
    60
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    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 du Club 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
    Points : 60
    Points
    60
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    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 du Club 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
    Points : 60
    Points
    60
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    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]

  7. #7
    Membre du Club 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
    Points : 60
    Points
    60
    Par défaut
    J'avais essayé auparavant mais cela ne fonctionnait pas mieux
    Quand je clique sur le valider pour la 2ème liste, le résultat que je souhaite apparait dans la 3ème liste, mais les 2 premières ne gardent pas leurs valeurs.

  8. #8
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut

    Il y a un problème avec tes <option> : il ne devrait pas y avoir d'attribut name dedans et je ne suis pas sûre des selected.
    Essaye cette syntaxe ( j'ai regroupé les if en un seul par un opérateur ternaire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while($ligne=mysql_fetch_array($requete))
    {
      $sel= ( isset($_POST['distri']) && ($_POST['distri'] == $ligne['NomDistributeur'])) ? ' selected="selected" ':' ';
      echo '<option '.$sel. ' 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]

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut uhm!!!
    plusieurs points ou tu as des erreurs :


    je te mets les corrections compare bien avec ton code histoire de bien comprendre

    en 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" name="formu" action="<? echo $_SERVER['PHP_SELF']; ?>//alala">
    en 2 :

    il faut recuperer la variable $distri a cet endroi, apres validatino du premier formulaire , et oui comment veux tu faire appel à une variable que tu crée dans le deuxieme formulaire pour creer ce deuxieme fomulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <? 
     
     
    $distri=$_POST['distri'];
    while($ligne=mysql_fetch_array($requete))
    {
    et idem pour le troisieme formulaire apres tout fonctionne
    Conception / Dev

  10. #10
    Membre du Club 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
    Points : 60
    Points
    60
    Par défaut
    Voici mon dernier code en date :

    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
     
    <!---------------------------------------------------------------->
     
    <!--------------------------------------------------------------->
     
    <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 $_SERVER['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> 
    							<?
    							$distri=$_POST['distri'];
    							while($ligne=mysql_fetch_array($requete))
    							{
    									$sel= ( isset($_POST['distri']) && ($_POST['distri'] == $ligne['NomDistributeur'])) ? ' selected="selected" ':' ';
    									  echo '<option '.$sel. ' value="'.$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>
    						<?
    						$domaine=$_POST['domaine'];
    						while ($ligne1=mysql_fetch_array($requete1))
    						{
    							$sel1= ( isset($_POST['domaine']) && ($_POST['domaine'] == $ligne1['NomDomaine'])) ? ' selected="selected" ':' ';
    							echo '<option '.$sel1. ' value="'.$ligne1["NomDomaine"].'">'.$ligne1["NomDomaine"].'</option>';
    							}
    						?>
    						<input type="hidden" name="distrib" value="  <?php echo $_POST['distri'] ?> ">
    						<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;
    					</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>
    					<?
    					$NbCompteur=$_POST['NbCompteur'];
    					while ($ligne2=mysql_fetch_array($requete2))
    					{
    							$sel2= ( isset($_POST['NbCompteur']) && ($_POST['NbCompteur'] == $ligne2['NbMaxCompteurs'])) ? ' selected="selected" ':' ';
    							  echo '<option '.$sel2. ' value="'.$ligne2["NbMaxCompteurs"].'">'.$ligne2["NbMaxCompteurs"].'</option>';
    					}
    					?>
    					<input type="hidden" name="distrib" value=" <? echo  <?php echo $_POST['domaine'] ?> ">
    					<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>
    J'ai toujours le même problème de non conservation des résultats sélectionnés. Je regarde si je peux trouver autre chose.

  11. #11
    Membre du Club 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
    Points : 60
    Points
    60
    Par défaut
    oui désolé j'avais pas vu tes modifications

  12. #12
    Membre du Club 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
    Points : 60
    Points
    60
    Par défaut
    J'ai toujours le même soucis, je vais essayer de voir qu'est ce qui ne fonctionne pas.

  13. #13
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Attention : le champ hidden de ton dernier formulaire contient 2 echos

    Je vais préciser un point : le principe du champ caché (hidden) c'est de renvoyer dans un formulaire une variable provenant d'un formulaire précédent. Mais pour que ce soit vraiment efficace, il faut que ton champ caché porte le même nom que la variable qu'il reçoit.
    Donc ici ton nom caché doit s'appeler distri comme la 1ere liste et renvoyer la valeur de $_POST['distri'].
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="distri" value=" <? echo $_POST['distri'] ?> ">
    Et si tu veux renvoyer la 1ere et la 2e liste, il faut deux champs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="hidden" name="distri" value=" <?php echo $_POST['distri'] ?> ">
    <input type="hidden" name="domaine" value=" <?php echo $_POST['domaine'] ?> ">
    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]

  14. #14
    Membre du Club 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
    Points : 60
    Points
    60
    Par défaut
    Désolé encore une fois, mais je dois être bête ce n'est pas possible.

    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
    <!---------------------------------------------------------------->
     
    <!--------------------------------------------------------------->
     
    <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 $_SERVER['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> 
    							<?
    							$distri=$_POST['distri'];
    							while($ligne=mysql_fetch_array($requete))
    							{
    									$sel= ( isset($_POST['distri']) && ($_POST['distri'] == $ligne['NomDistributeur'])) ? ' selected="selected" ':' ';
    									  echo '<option '.$sel. ' value="'.$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="hidden" name="distri" value=" <?php echo $_POST['distri'] ?> ">
    							<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="<? echo $_SERVER['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>
    						<?
    						$domaine=$_POST['domaine'];
    						while ($ligne1=mysql_fetch_array($requete1))
    						{
    							$sel1= ( isset($_POST['domaine']) && ($_POST['domaine'] == $ligne1['NomDomaine'])) ? ' selected="selected" ':' ';
    							echo '<option '.$sel1. ' value="'.$ligne1["NomDomaine"].'">'.$ligne1["NomDomaine"].'</option>';
    						}
    						?>
    						<input type="submit" name="bnvalider" value="Valider">
    					</form>
    					<form name="formaccesse" method="POST" action="action.php">
    						<input type="hidden" name="distri" value=" <?php echo $_POST['domaine'] ?> ">
    						<input type="text" name="champnomdomaine" size="20">
    						<input type="submit" value="Ajouter un domaine" name="envoyerdomaine">&nbsp;&nbsp;&nbsp;
    					</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="action.php">
    				<input type="submit" name="moins" value="-">
    					<?php 
    					//--- 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é") ;
    					while ($ligne2=mysql_fetch_array($requete2))
    					{
    						?>	<input type="text" name="NbCompteur" value="<? echo $ligne2["NbMaxCompteurs"] ?>" readonly="readonly" ><?
    					}
    					?>
    					<input type="submit" name="plus" value="+">
    				</form>
    				<form name="formajoutnbmaxcompteurs" method="POST" action="action.php">
    					<input type="text" name="champnbmaxcompteurs" size="20">
    					<input type="submit" value="Valider" name="envoyernbmaxcompteurs">&nbsp;&nbsp;&nbsp;
    				</form>
    			</td>
    		</td>
    	</tr>
    </table> 
     
     
    </BODY>
    </HTML>
    Quand tu dis de mettre les champs cachés dans le formulaire suivant la liste, c'est dans le formulaire de la liste ou du bouton valider?

  15. #15
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Quand je dis avec la liste, c'est avec la liste dans le même formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form method="post" name="med" action="<? echo $_SERVER['PHP_SELF']; ?>">
      <select name="domaine">
    ....
      </select>
      <input type="hidden" name="distri" value=" <? echo $_POST['distri'] ?> "> 
      <input type="submit" name="bnvalider" value="Valider">
    </form>
    Mais j'ai un peu du mal avec tous tes formulaires
    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]

  16. #16
    Membre du Club 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
    Points : 60
    Points
    60
    Par défaut
    C'est clair que c'est un peu le cirque avec tous mes formulaires. Au lieu de mettre type="hidden" j'ai mis type="text", comme ça je vois bien les valeurs qu'il garde lors d'un clic sur valider. Les valeurs affichées sont les bonnes dans les champs de type="text" mais pas dans les listes déroulantes. Je pense que c'est mon appel à la variable qui doit être mauvais.
    Je regarde ça.

  17. #17
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ce que tu peux faire aussi pour vérifier ce que POST envoie, c'est ajouter un print_r en début de script.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo '<pre>'.print_r($_POST).'</pre>';
    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]

  18. #18
    Membre du Club 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
    Points : 60
    Points
    60
    Par défaut
    Je récupère les valeurs que je souhaite avec ta ligne, mais celles-ci ne sont pas répercutées dans la liste déroulante.

    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
     
    $sel=$_POST['distri'];
    echo $sel;
    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= ( isset($_POST['distri']) && ($_POST['distri'] == $ligne['NomDistributeur'])) ? ' selected="selected" ':' ';
    		echo '<option '.$sel. ' value="'.$ligne["NomDistributeur"].'">'.$ligne["NomDistributeur"].'</option>';
          }
          echo('</select>');
    ?>
    Quand j'affiche echo $sel, la valeur récupérée est celle que je souhaite mais celle dans la liste déroulante est différente, or mon but c'est d'avoir les mêmes. L'erreur doit être dans l'utilisation de $sel, ou l'affichage de la liste déroulante.

  19. #19
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par fabpeden
    J
    Quand j'affiche echo $sel, la valeur récupérée est celle que je souhaite mais celle dans la liste déroulante est différente, or mon but c'est d'avoir les mêmes. L'erreur doit être dans l'utilisation de $sel, ou l'affichage de la liste déroulante.
    Tu as sans doute raison, mais je ne vois pas l'erreur
    Tu peux essayer une autre syntaxe pour le selected :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while($ligne=mysql_fetch_array($requete))
    {
      echo '<option value= "'.$ligne["NomDistributeur"].'" ';
      if ( isset($_POST['distri']) && ($_POST['distri'] == $ligne['NomDistributeur'])) { echo ' selected = "selected" ';
      echo '>'.$ligne["NomDistributeur"].'</option>';
    }
    Normalement c'est la même chose, mais on ne sait jamais...
    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]

  20. #20
    Membre du Club 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
    Points : 60
    Points
    60
    Par défaut
    Je viens de remarquer quelque chose d'étrange. Lorsque j'ajoute un distributeur ou un domaine dans ma base de données grâce au formulaire, il y a un espace d'ajouter.
    Par exemple, si j'écris 'toto', dans la base et dans les champs "hidden", j'ai ' toto', d'où peut venir l'insertion de cet espace?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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