J'ai une table qui enregistre le nom des documents téléchargés, jusqu'à 14 par enregistrement. Les colonnes sont nommées ainsi:ColdFusion - Création dynamique de noms de colonnes avec CFLOOP
TABLE tblDocuments
COLUMNS documentID (int, not null, pk)
document1 (varchar(250), null)
document2 (varchar(250), null)
/* and this continues through */
document14 (varchar(250), null)
Je requête pour tous les documents pour un enregistrement particulier:
<cfquery name="qryGetDocs" datasource="#dsn#">
SELECT document1, ...document14
FROM tblDocuments
WHERE documentID = <cfqueryparam name="SESSION.documentID" cfsqltype="cf_sql_integer">
</cfquery>
La forme ressemble à ceci:
<form name="frmUploadDocs" method="post" action="documentsPage.cfm">
<input type="file" name="document1" size="50" >
<cfif qryGetDocs.document1 IS NOT ''>
(current file name: <a href="#vars.file_path#/#qryGetDocs.document1#">#qryGetDocs.document1#</a>)</cfif>
<input type="file" name="document2" size="50" >
<cfif qryGetDocs.document2 IS NOT ''>
(current file name: <a href="#vars.file_path#/#qryGetDocs.document2#">#qryGetDocs.document2#</a>)</cfif>
<!--- list all documents --->
<input type="file" name="document14" size="50" >
<cfif qryGetDocs.document14 IS NOT ''>
(current file name: <a href="#vars.file_path#/#qryGetDocs.document14#">#qryGetDocs.document14#</a>)</cfif>
<input type="submit" name="submit" value="Upload Documents">
</form>
Je veux boucle de 1 à 14, de sorte que je n'ai qu'une seule instruction <input>
et <cfif>
, comme ceci:
<cfloop from="1" to="14" index="i">
<input type="fiile" name="document#i#" size="30">
<cfif qryGetDocs.document#i# IS NOT ''>
(current file name: <a href="#vars.file_path#/#qryGetDocs.document[#i#]#">#qryGetDocs.document[#i#]#</a>)
</cfif>
</cfloop>
Cependant, je ne peux pas obtenir la syntaxe correcte, peu importe ce que j'ai essayé. Quelqu'un pourrait m'aider avec ça? Je vous remercie!
Ceci est une structure peu maniable. Il est préférable de stocker les documents individuels sous forme de lignes et non de colonnes. Ensuite, il peut y avoir autant ou aussi peu que nécessaire. Les stocker comme 14 colonnes différentes sera difficile à chercher et à manipuler. – Leigh
Je ne peux que seconder le commentaire de Leigh. Vous structure de table est tout faux. – Tomalak