Astuce pour paramètre "selected" dans option de tag select

Contenu du snippet

Ce code permet de selectionner une valeur dans une liste déroulante d'un champ lorsque l'on modifie un enregistrement de base de données

Source / Exemple :


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
	<title>Astuce Option Selected</title>
</head>

<body>

<!--- Petite astuce pour faciliter la sélection dans une liste déroulante avec la fonction IIf --->
<!--- Methode un peu plus lourde à gérer en passant par une query puis son intégration dans un tableau --->
<!--- mais permet d'éviter les problèmes d'imbrication de cfoutput query--->

<cfset ClientModif="PRECI"> <!--- Affectation de valeur pour démo - Ce client réside en France --->

		<!-- ************ -->
		<!-- * Queries  * -->
		<!-- ************ -->
		
		<cfquery name="QClients" datasource="DevisDES" dbtype="ODBC">
			SELECT      *, ClientID
			FROM         Clients 
			WHERE       (ClientID = '#ClientModif#')
		</cfquery>

		<cfquery name="QCodePays" datasource="DevisDES" dbtype="ODBC">
			SELECT      CodePays 	<!--- CodePays contient les codes pays (ex: FR pour la france) de la table Pays --->
			FROM        Pays 			<!--- Table Pays de DevisDES --->
			ORDER BY  	CodePays
		</cfquery>

		<!-- ************* -->
		<!-- * Tableaux  * -->
		<!-- ************* -->
		
		<cfset LCodePays = arraynew(1)>
		<cfset i=0>
		<cfoutput query="QCodePays">
			<cfset i=i+1>
			<cfset LCodePays[i] ="#CodePays#">
		</cfoutput>

		

		<cfform action="ModifRecordset.cfm" method="POST" enablecab="Yes">

			<cfoutput query="QClients">
		
				<!--- autres champs du masque --->
		
				CodePays:<br>
				<select name="FCodePays">
					<cfloop index="j" from="1" to="#Arraylen(LCodePays)#">
						<option value="#LCodePays[j]#" #IIf("#CodePays#" is "#LCodePays[j]#", de("selected"),de(""))#>#LCodePays[j]#</option>
					</cfloop>
				</select>
		
				<!--- autres champs du masque + bouton--->

			</cfoutput>
		
		</cfform>

</body>
</html>

Conclusion :


L'utilisation d'un tableau n'est pas requise, elle est un peu plus lourde à gérer mais evite les conflits d'imbrication de 'CFOOUTPUT QUERY'

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.