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 :

Balise option : comment rester sur le choix d'une sélection


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut Balise option : comment rester sur le choix d'une sélection
    Bonjour.

    Je fais encore appel à ce forum car je n'ai pas trouvé de solution pour cette question certainement simple pour vous.

    Après une sélection dans la balise option et validation du formulaire comment rester sur le choix.

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Faq.

    A+.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par modus57 Voir le message
    ...je n'ai pas trouvé de solution...
    Encore faudrait-il avoir "cherché *"...


    * ça prend moins de 5s. ...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    J'avoue que j'ai essayé de me débrouiller seul et que j'ai mal chercher avant de poster.

    Merci andry.aime pour votre lien (discussion ).

    Bonne soirée à vous.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour.

    Je reviens sur ce post car je pensai avoir trouvé la solution avec le lien de andry.aime.

    Et bien je n'y arrive pas.

    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <form name="form1" method="post" action="#">
    <div>
    <h2 align="center">Modifier un adhérent</h2>
    	<table border="0" align="center" cellspacing="2" cellpadding="3">
    		<tr>
    			<td align="right">&ensp;&ensp;Adhérent</td>
    			<td>  
    				<SELECT name="nom" onchange=" form1.submit();">
    					<?php
    					// Connexion à la base de données
    					include'connect_infos_0.php';
    					$lignes=$bdd->query('SELECT id, nom, prenom FROM personnes ORDER BY id'); 						
    					$selected = isset( $_GET['nom'] ) ? $_GET['nom'] : "" ;
    					$selectedValue = 'selected="selected"';							
    						while($ligne=$lignes->fetch()){
    							?>
    							<OPTION value ="<?php echo $ligne[0]; ?>"><?php echo 'ID ' .$ligne[0]." : ".$ligne[1]." ".$ligne[2];?> </OPTION>
    							<?php  				
    						}
    					?>           
    				</SELECT>
    			</td>
    		</tr>
                   </table> 
    </div>
    </form>
    Après une sélection dans la balise select du formulaire malgré mes recherches je n'arrive pas à rester sur le choix.

    Une petite explication svp merci d'avance.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tu utilises GET alors que ton formulaire est en post.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour jreaux62.

    Merci pour ta réponse, j'ai corrigé mais ça ne fonctionne pas.

    La sélection se repositionne toujours au début de la liste.

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Parce que tu n'utilises pas les variables $selected et $selectedValue qui devaient se servir pour sélectionner l'option.

    A+.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour andry.aime

    J'ai ajouté la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="">Sélectionner</option>';
    La sélection se repositionne toujours au début de la liste, cela est intéressant.

    Mais je ne vois pas comment utiliser les variables $selected et $selectedValue qui devraient servir à sélectionner l'option, objet de mon post.

    Pourriez-vous m'expliquez svp.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    -> DANS le while :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    				$nom_recu = isset( $_GET['nom'] ) ? $_GET['nom'] : "" ;
     
    				$lignes=$bdd->query('SELECT id, nom, prenom FROM personnes ORDER BY id'); 						
    				while($ligne=$lignes->fetch()){
    					$selected = ( $nom_recu == $ligne[1] ) ? ' selected="selected"' : "" ; // on compare le nom (reçu) avec le nom (de cette ligne en bdd)
    ?>
    					<option value ="<?php echo $ligne[0]; ?>"<?php echo $selected; ?>><?php echo 'ID ' .$ligne[0]." : ".$ligne[1]." ".$ligne[2];?> </option>
    Attention : je n'ai pas fait le même usage de $selected (c'est l'ancien $selectedValue)

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour jreaux62

    J'ai insérer vos lignes et voici mon code complet :
    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
    <html>
    	<body>
    	<form name="form1" method="post" action="#">
    		<div>
    		<h2 align="center">Modifier un adhérent</h2>
    			<table border="0" align="center" cellspacing="2" cellpadding="3">
    				<tr>
    					<td align="right">&ensp;&ensp;Adhérent</td>
    					<td>  
    						<select name="nom" onchange=" form1.submit();">
    							<?php
    							// Connexion à la base de données
    							include'connect_infos_0.php';
     
    							$nom_recu = isset( $_POST['nom'] ) ? $_POST['nom'] : "" ;
    							$lignes=$bdd->query('SELECT id, nom, prenom FROM personnes ORDER BY id'); 	
    							/*echo '<option value="">Sélectionner</option>';*/
     
    							while($ligne=$lignes->fetch()){
    								$selected = ( $nom_recu == $ligne[1] ) ? ' selected="selected"' : "" ; // on compare le nom (reçu) avec le nom (de cette ligne en bdd)
    								?>
    								<option value ="<?php echo $ligne[0]; ?>"<?php echo $selected; ?>><?php echo 'ID ' .$ligne[0]." : ".$ligne[1]." ".$ligne[2];?> </option>
    								<?php
    							}
    							?>           
    						</select>
    					</td>
    				</tr>
    		</div>
    	</form>
     
    	<?php		
    	//récupération de l'ID qui va nous permettre de savoir quel enregistrement modifier
    	$id = @$_POST['nom'] ;
     
    	$requete=$bdd->query("select * FROM personnes WHERE id = '$id'");		
     
    	if( $result = $requete->fetch(PDO::FETCH_OBJ)){
    	?>
    		<form name="insertion" action="#" method="POST">
    			<input type="hidden" name="id" value="<?php echo($id) ;?>"><br>
    			<table border="0" align="center" cellspacing="2" cellpadding="3">
    				<tr align="right">
    					<td>Prénom</td>
    					<td align="left"><input type="text" name="prenom" value="<?php echo($result->prenom) ;?>"></td>
    				</tr>
    				<tr align="right">
    					<td>Adresse</td>
    					<td align="left"><input type="text" name="adresse" value="<?php echo($result->adresse) ;?>"></td>
    				</tr>
    				<tr align="right">
    					<td>Code postal</td>
    					<td align="left"><input type="text" name="codePostal" value="<?php echo($result->cp) ;?>"></td>
    				</tr>
    					<tr align="right">
    					<td>Téléphone</td>
    					<td align="left"><input type="text" name="telephone" value="<?php echo($result->telephone) ;?>"><br>	</td>
    				</tr>
    				<tr align="center">
    					<td colspan="2">Saisir les modifications  <input style="width:83px; font:bold 12px Verdana; background:#CEE3F6; color:blue;
    								"type="submit" value="Valider"><br><br>
    					</td>
    				</tr>
    			</table>
    		</form>
    	<?php
    	}//fin if 	
    	?>
    	</body>
    </html>
    Petit souci :
    - après la sélection dans la liste déroulante les champs correspondant s'affichent bien dans le formulaire mais la sélection se repositionne toujours au début de la liste
    - après le clic sur le bouton "Valider" les champs du formulaire disparaissent et le sélecteur se positionne sur la sélection choisie ($nom_recu)

    Je n'ai pas réussi à comprendre de quelle manière le corriger, d’où vient mon erreur ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Tu veux corriger quoi ?
    Je ne comprends pas ton problème.

    EXPLIQUE-nous les ETAPES depuis le DEBUT, le fonctionnement... et d'où provient la valeur que tu veux voir s'afficher dans le select.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Je débute et manque de maitrise, merci pour votre patience.

    Donc voici ce que je cherche à faire :
    - le premier formulaire contient une balise "select" qui permet de choisir le nom de l'adhérent
    - le second formulaire contient 4 champs "prenom", "adresse", "cp" et "telephone".

    Le but recherché consiste de choisir le nom de l'adhérent dans la balise "select", de rester sur choix, et à partir de son ID afficher dans les champs du second formulaire ses données, pour éventuellement les modifiées et enregistrer les modifications.

    Je fais peut être fausse route, car je ne sais pas si c'est possible avec la balise "select".

  14. #14
    Invité
    Invité(e)
    Par défaut
    Je ne sais pas si tu fais faute route... puisque tu ne montres pas ton code.

    Tu parles de 2 formulaires ?
    C'est-à-dire ? Montre-les (+ les noms des fichiers)

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    J'ai envoyé mon code voir post #11.

    En fait, ils sont tous les 2 dans la même page le premier name = form1 et le second name = insertion.

  16. #16
    Invité
    Invité(e)
    Par défaut
    OK. (je n'avais vu que le 1er)
    Bon.

    1/ Déjà, premier point : ce n'est pas le "nom" qu'il faut récupérer/transmettre, mais l'id (qui lui, est UNIQUE)
    2/ les <table> ne servent plus à la mise en page -> Personnalisation d'un formulaire XHTML avec CSS
    3/ Généralement, on met la connexion à la Bdd et le TRAITEMENT au début du script
    4/ on met un <doctype> (avant la balise <html>)
    5/ on utilise une requête préparée, pour éviter les injections SQL

    Donc :
    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
    <?php
    // ----------------------------
    // Connexion à la base de données
    include 'connect_infos_0.php';
    // ----------------------------
    // récupération de l'ID qui va permettre de savoir quel enregistrement modifier
    	$id_select = isset( $_POST['id_select'] ) ? intval($_POST['id_select']) : 0;
    // ----------------------------
    // TRAITEMENT ?
    if( isset( $_POST['traiter'] ) && $_POST['traiter'] =='Modifier' )
    {
       // ICI, on fait le traitement "Modifier"
       // 1/ récupération des données
       // 2/ gestion d'erreurs
       // 3/ enregistrment en Bdd
       // ...
    }
    // ----------------------------
    ?>
    <!DOCTYPE HTML>
    <html>
    	<body>
    	<form name="form1" method="post" action="#">
     
    		<h2 align="center">Modifier un adhérent</h2>
    			<p>
    				<label>Adhérent</label>
    				<select name="id_select" onchange=" form1.submit();">
    <?php
    				$lignes=$bdd->query('SELECT id, nom, prenom FROM personnes ORDER BY nom ASC'); 	
    ?>
    					<option value="">Sélectionner...</option>
    <?php
    				while($ligne = $lignes->fetch(PDO::FETCH_OBJ)){
    					$selected = ( $id_select == $ligne->id ) ? ' selected="selected"' : "" ; // on compare l'id (reçu) avec l'id (de cette ligne en bdd)
    ?>
    					<option value="<?php echo $ligne->id; ?>"<?php echo $selected; ?>><?php echo $ligne->nom.' '.$ligne->prenom; ?></option>
    <?php
    				}
    ?>           
    				</select>
    			</p>
     
    	</form>
     
    <?php
    // ----------------------------
    // Si un id a été sélectionné
    if( $id_select != 0)
    {
    	$requete = $bdd->prepare("SELECT * FROM personnes WHERE id = :id_sel");		
    	$requete->execute( array(':id_sel' => $id_select) );		
     
    	if( $result = $requete->fetch(PDO::FETCH_OBJ))
    	{
    ?>
    		<form name="insertion" action="#" method="POST">
    			<input type="hidden" name="id" value="<?php echo $id_select; ?>" />
    			<input type="hidden" name="traiter" value="modifier" />
    			<p>
    				<label>Prénom</label>
    				<input type="text" name="prenom" value="<?php echo $result->prenom; ?>" />
    			</p>
    			<p>
    				<label>Adresse</label>
    				<input type="text" name="adresse" value="<?php echo $result->adresse; ?>" />
    			</p>
    			<p>
    				<label>Code postal</label>
    				<input type="text" name="codePostal" value="<?php echo $result->cp; ?>" />
    			</p>
    			<p>
    				<label>Téléphone</label>
    				<input type="text" name="telephone" value="<?php echo $result->telephone; ?>" />
    			</p>
    			<p>
    				<label>Saisir les modifications</label>
    				<input style="width:83px; font:bold 12px Verdana; background:#CEE3F6; color:blue; "type="submit" value="Valider" />
    			</p>
     
    		</form>
    <?php
    	} //fin if 	
    } //fin if 
    ?>
    	</body>
    </html>

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour jreaux62 :

    Désolé pour ma réponse tardive.

    Quel sacré cours jus, pour ton code bien structuré.

    J'ai fait la mise en page personnalisée et tout fonctionne.

    Pour aller plus loin dans ma démarche je vais essayer de filtrer le ou les noms des adhérents dans la balise select.

    Merci beaucoup pour ton aide efficace.

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Merci encore une fois d'avoir pris le temps de répondre à mes posts.

    J'ai ajouté dans le formulaire "form1" le champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="recherche" placeholder="recherche mots clés"/>
    Si je modifie la ligne comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT id, nom, prenom FROM personnes WHERE nom LIKE "V%" ORDER BY prenom ASC'
    Les noms qui commencent par "V" sont bien filtrés dans la balise "select".

    Mais comment faire pour récupérer la valeur saisie par l'utilisateur dans le champ "recherche "pour filtrer le nom des adhérents dans la balise select.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    On fait une requête préparée :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    if( empty($_POST['recherche']) )
    {
    				$lignes = $bdd->query("SELECT id, nom, prenom FROM personnes ORDER BY nom ASC, prenom ASC"); 
    } else {
    				$select = $bdd->prepare("SELECT id, nom, prenom FROM personnes WHERE nom LIKE :rech ORDER BY nom ASC, prenom ASC"); 	
    				$lignes = $select->execute( array( ':rech' => $_POST['recherche'] .'%' ) );
    }
    ?>

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Un petit souci avec l'intégration de votre code .

    J'ai beau saisir "V%" ou "V" dans le champ "recherche" du formulaire "form1" les noms ne sont pas filtrés dans la balise "select".

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/03/2013, 18h23
  2. Comment rester sur la même page avec actualiser ?
    Par schnuky dans le forum Débuter
    Réponses: 5
    Dernier message: 30/07/2009, 18h55
  3. Réponses: 1
    Dernier message: 16/04/2008, 06h42
  4. Comment rester sur la même page du browser
    Par Pedro Varela dans le forum ASP.NET
    Réponses: 2
    Dernier message: 19/11/2007, 17h33
  5. liste déroulante : comment rester sur mon choix
    Par sam01 dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2006, 17h18

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