1

MySQLデータベースにアクセスするフォームを作成しようとしています。しかし、これはすべて私にとって新しいことです。私はこれについての私の基本的な理解をはるかに超えて到達しようとしているかもしれないと思います。これが私の質問です。

フォームがあります。このフォームでは、データベースへの接続が確立されており、データベースに投稿できます。私がやろうとしているのは、「タイル1」、「タイル2」、「タイル3」のオプションフィールドを用意することです。「タイル」ごとに、残りのフィールドをそのタイルIDで保存したいと思います。また、オプションフィールドからタイルを選択するときに、そのタイル情報を取得できるようにしたいと思います。

これが私の現在のコードです。私はこれらすべてに不慣れであることを覚えておいてください。ありがとう。

形:

<cfform method="post" name="TileAdAdmin" action="index.cfm">
          <cfoutput>
              <table width="500px">
              <tr>
                <td height="159"><label class="labelStyle">Tile Ads</label></td>
                <td>
                  Tile Number:<select name="TAID" id="TAID">
                    <option value="0">None</option>
                    <option value="1">Tile 1</option>
                    <option value="2">Tile 2</option>
                    <option value="3">Tile 3</option>
                  </select><br /><br />
                  Headline:
                   <input name="TAHL" type="text" id="TAHL" title="TAHL" value="#variables.ta.TAHL#" maxlength="30" />
                   <br />
                   Image Name: 
                   <input name="TAImage" type="text" id="TAImage" title="TAImage" value="#variables.ta.TAImage#" maxlength="30" />
                   <br />
                   Discription:                   
                   <textarea name="TADiscription" cols="30" rows="6" id="TADiscription" title="VimeoID">#variables.ta.TADiscription#</textarea>                   <br />
                  </td>
              </tr>
            </table><br />

            <input type="hidden" value="#variables.controller#" name="controller">
            <input type="hidden" value="#variables.action#" name="action">
            <input type="Submit" value="Submit" name="Submit" class="formInput">
          </cfoutput>
        </cfform>

DAOコード:

    <cfcomponent name="TADAO" displayname="" hint="" output="false">

  <cffunction name="read" access="public" returntype="Void" output="false" hint="CRUD method">
    <cfargument name="ta" type="ta" required="yes" />

    <cfset var qRead = 0 />
    <cfquery name="qRead" datasource="#Application.dbsource#" >
      SELECT
        TAID,
        TAHL,
        TAIMAGE,
        TADISCRIPTION
      FROM
        T026_TILE_ADS
    </cfquery>

    <cfif qRead.RecordCount>
      <cfset arguments.ta.setTAID(qread.TAID) />
      <cfset arguments.ta.setTAHL(qread.TAHL) />
      <cfset arguments.ta.setTAImage(qread.TAIMAGE) />
      <cfset arguments.ta.setTADiscription(qread.TADISCRIPTION) />
      <cfelse>
      <cfthrow type="emptyRecordset" errorcode="TADAO.read.emptyRecordset" message="Unable to locate the TILE_AD data record." />
    </cfif>
  </cffunction>

  <cffunction name="update" access="public" returntype="Void" output="false" hint="CRUD method">
    <cfargument name="TA" type="TA" required="yes" />

    <cfquery name="qUpdate" datasource="#Application.dbsource#">
      UPDATE
        T026_TILE_ADS
      SET
        TAID = <cfqueryparam cfsqltype="cf_sql_numeric" value="#arguments.ta.getTAID()#" />,
        TAHL = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.ta.getTAHL()#" />,
        TAIMAGE = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.ta.getTAImage()#" />,
        TADISCRIPTION = <cfqueryparam cfsqltype="cf_sql_text" value="#arguments.ta.getTADiscription()#" />
     </cfquery>

  </cffunction>

</cfcomponent>

コンポーネントコード:

<cfcomponent displayname="ta" hint="" output="false">

<cfproperty name="TAID" displayname="" type="numeric" />
<cfproperty name="TAHL" displayname="" type="string" />
<cfproperty name="TAImage" displayname="" type="string" />
<cfproperty name="TADiscription" displayname="" type="string" />


<cffunction name="init" access="public" returnType="TA" output="false" hint="">
  <cfset this.TAID = 0 />
  <cfset this.TAHL = "headline" />
  <cfset this.TAImage = "IMAGE" />
  <cfset this.TADiscription = "Discription" />

  <cfreturn this />
</cffunction>

<cffunction name="getTAID" access="public" output="false" returntype="numeric">
    <cfreturn this.TAID />
</cffunction>

<cffunction name="setTAID" access="public" output="false" returntype="void">
    <cfargument name="TAID" type="numeric" required="true" />
    <cfset this.TAID = arguments.TAID />
    <cfreturn />
</cffunction>

<cffunction name="getTAHL" access="public" output="false" returntype="string">
    <cfreturn this.TAHL />
</cffunction>

<cffunction name="setTAHL" access="public" output="false" returntype="void">
    <cfargument name="TAHL" type="string" required="true" />
    <cfset this.TAHL = arguments.TAHL />
    <cfreturn />
</cffunction>

<cffunction name="getTAImage" access="public" output="false" returntype="string">
    <cfreturn this.TAImage />
</cffunction>

<cffunction name="setTAImage" access="public" output="false" returntype="void">
    <cfargument name="TAImage" type="string" required="true" />
    <cfset this.TAImage = arguments.TAImage />
    <cfreturn />
</cffunction>

<cffunction name="getTADiscription" access="public" output="false" returntype="string">
    <cfreturn this.TADiscription />
</cffunction>

<cffunction name="setTADiscription" access="public" output="false" returntype="void">
    <cfargument name="TADiscription" type="string" required="true" />
    <cfset this.TADiscription = arguments.TADiscription />
    <cfreturn />
</cffunction>

 <cffunction name="dump" access="public" output="true" returntype="void">
  <cfoutput>
    Tile:         #this.TAID# <br />
    Headline:         #this.TAHL# <br />
    Image:         #this.TAImage# <br />
    Description:         #this.TADiscription# <br />
    </cfoutput>
</cffunction>

4

1 に答える 1

1

主キーとしての TAID

TAIDは各タイルの識別子であるため、まずステートメントのWHERE句に追加する必要があります。SQL


  UPDATE
    T026_TILE_ADS
  SET
    TAHL = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.ta.getTAHL()#" />,
    TAIMAGE = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.ta.getTAImage()#" />,
    TADISCRIPTION = <cfqueryparam cfsqltype="cf_sql_text" value="#arguments.ta.getTADiscription()#" />
  WHERE
    TAID = <cfqueryparam cfsqltype="cf_sql_numeric" value="#arguments.ta.getTAID()#" />

  SELECT
    TAID,
    TAHL,
    TAIMAGE,
    TADISCRIPTION
  FROM
    T026_TILE_ADS
  WHERE
    TAID = <cfqueryparam cfsqltype="cf_sql_numeric" value="#arguments.ta.getTAID()#" />

選択クエリの前に更新クエリを呼び出す

更新: データベース コードを分析した後、cfquerys の定義の順序は重要ではありませCFFUNCTIONSCFCOMPONENT


JqueryでOPTIONを選択する

最後に、送信されたフォームからタイルを選択する必要があります。Jqueryを使用してコードにスパイスを加えることができます ( の末尾に追加しますCFOUTPUT) 。


<!--- (beginning of CFOUTPUT ...) --->
<input type="Submit" value="Submit" name="Submit" class="formInput">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script>
$(document).ready(function(){
   $('SELECT##TAID').val(#variables.ta.TAID#);
});
</script>
</cfoutput>

編集 26/07

<CFSELECT>代わりに使用する

CFOUTPUTフィールドにはTAID単純な HTML がありますSELECT。DB からレコードをプルしたいので、これを試してください:

CFOUTPUTタグの前に置く:

<cfquery name="qryTiles" datasource="#Application.dbsource#">
  SELECT
    TAID,
    TAHL,
    TAIMAGE,
    TADISCRIPTION
  FROM
    T026_TILE_ADS
</cfquery>

そして置き換えます:

<select name="TAID" id="TAID">
<option value="0">None</option>
<option value="1">Tile 1</option>
<option value="2">Tile 2</option>
<option value="3">Tile 3</option>
</select>

と:

<cfselect name="TAID"
 size=1
 multiple="no"
 query="qryTiles"
 value="TAID"
 display="TAID"
 queryPosition="below">
  <option value="0">None</option>
</cfselect>
于 2012-07-25T16:50:17.503 に答える