2017-09-13 2 views
0

Wenn ein Benutzer auf Bearbeiten einer bestimmten Zeile in einer Tabelle klickt, möchte ich, dass die Eingabetextfelder auf derselben Seite mit den Details dieser Zeile gefüllt werden. Ich habe es versucht, aber es hat nicht funktioniert.So legen Sie den Wert einer Abfrage in ein Eingabetextfeld fest

<cfquery name="getDataForEdit" datasource="dsn"> 
    select * from usercardetails where id = '#url.id#' 
</cfquery> 
<cfoutput> 
    <cfset #form.username# = #getDataForEdit.username#> 

</cfoutput> 
+0

Ihre Google-Suchzeichenfolge ist 'coldfusion related form fields'. –

Antwort

2

Versuchen Sie dies als Beispiel Sie .... in Gang zu bringen

<cfquery name="getDataForEdit" datasource="dsn"> 
    select * from usercardetails where id = '#url.id#' 
</cfquery> 

<!--- 
OPTIONAL IMPROVEMENT: You might change your SQL to use CFQueryParam, this will protect against SQL injection 
select * from usercardetails where id = <cfqueryparam cfsqltype="CF_SQL_NUMERIC" value="#url.id#" /> 
---> 

<!--- 
OPTIONAL FOR DEBUGGING: If you uncomment this block it will show you the results of your query. 
<cfoutput><cfdump var="#getDataForEdit#" label="getDataForEdit" expand="No" /><br /></cfoutput> 
---> 

<cfoutput> 

<cfif getDataForEdit.recordcount is 1> <!--- Check that you only get one row back in results ---> 

    <!--- Coldfusion will build forms for you using cfform, but many coders keep away from it, so instead you need to build the HTML of your form yourself. ---> 

    <form action="index.cfm" method="post"> 
     <p><label for="username">Username</label><input type="text" id="username" name="username" value="#getDataForEdit.username#" /></p> 
     <p><input type="submit" id="butty01" name="butty01" value="Go" /></p> 
    </form> 

<cfelseif getDataForEdit.recordcount is 0> <!--- If no results ---> 
    <p>No records found</p> 
<cfelse> <!--- Anything else will mean many results ---> 
    <p>An error occurred (Multiple records with this ID found)</p> 
</cfif> 

</cfoutput> 

Ich habe in den Code um einige optionale Verbesserungen setzen Kommentare.

Beachten Sie auch, dass ...

<cfset #form.username# = #getDataForEdit.username#> 

werden Sie Probleme verursachen.

<cfset username = getDataForEdit.username> 

Wird erstellen/eine variable Benutzernamen gleich dem Wert der Benutzer Spalte in der Abfrage festgelegt. Die # -Tags sind in diesem Zusammenhang nicht notwendig. # Druckt den Wert einer Variablen, so könnte man dies getan haben ...

<cfset username = "#getDataForEdit.username#"> 

, die den Wert der Benutzer Spalte in eine Textzeichenfolge (das einzige, was in der Folge ist der Wert) drucken: und die Textzeichenfolge wäre der Variablen username zugewiesen worden.

form 

ist ein reserviertes Wort, da es sich um eine Struktur (es lohnt sich Strukturen aufzublicken) ist, die auf Ihre Seite veröffentlicht alle Formular variablen Daten enthält. Sie können Form inspizieren von cfdump

<cfoutput><cfdump var="#form#" label="form" expand="No" /><br /></cfoutput> 

Zum Ausdrucken einer der Werte in Form verwenden, können Sie also

#form.username# 

tun (und sehr verwirrend, wenn Sie ein Anfänger sind) ...

Erstellt eine Variable mit dem Namen, der dem Wert des Formularfeldbenutzernamens entspricht, der auf Ihre Seite gepostet wurde, und füllt ihn mit dem Benutzernamen aus Ihrer Abfrage. Das willst du wirklich nicht.

Bleib dran. Sobald Sie ein paar grundlegende Konzepte sortiert haben, ist Coldfusion eine schöne Programmiersprache.

+1

Das sind alles gute Informationen, aber die Frage beinhaltet den Ausdruck "auf der gleichen Seite". –

+0

Alle guten Punkte John, und gute Notizen auf der # in der linken der Variablensatz .. nicht erforderlich. Bitte verwenden Sie Benster

+0

@DanBracuk Hahaha ... Sehr guter Punkt ... –

Verwandte Themen