2012-11-26 103 views
1

我目前正在建立一個成員調查,每個成員都有一個他們用來訪問調查的獨特鏈接。一旦他們訪問並提交調查,他們就不能再使用該鏈接。以下是我迄今爲止:SQL查詢是否可以提供ColdFusion可以使用的值?

<cfquery name="SurveyTaken" maxrows="1" datasource="#APPLICATION.DATASOURCE#"> 
     IF EXISTS (SELECT 1 FROM AllMembers WHERE me_number = <cfqueryparam value="#URL.em#" cfsqltype="cf_sql_char">) 
     SELECT * FROM MemberSurvey   
     WHERE me_number = <cfqueryparam value="#URL.em#" cfsqltype="cf_sql_char"> 
</cfquery> 

<cfif SurveyTaken.recordcount eq 1> 

    <p>We are sorry but it seems that you have already taken the survey. This link has been used and is no longer valid.</p> 

<cfelseif SurveyTaken.recordcount eq 0> 
    <cfquery name="SurveyIndividual" maxrows="1" datasource="#APPLICATION.DATASOURCE#">   
     SELECT * 
     FROM AllMembers   
     WHERE me_number = <cfqueryparam value="#URL.em#" cfsqltype="cf_sql_char"> 
    </cfquery> 

    <cfform action="" method="post" id="addCommentForm" onsubmit="return submit_form()"> 
    .... etc... 
</cfif> 

基本上我想要我的SQL查詢來先檢查會員ID是有效的,然後在另一個表檢查,如果會員ID已經submited。現在,如果在URL中發佈了有效的成員標識,因爲它通過了「IF」部分,但是如果IF部分未通過,則不會運行任何查詢,因此我的.recordcount解決方案無法工作。我能做些什麼來解決這個問題嗎?

回答

2

我在這裏做一些假設,因爲我不知道你確切的模式。

假定有一個主(或至少是唯一的)在名爲membersurvey_id的membersurvey表鍵...

SELECT m.me_number, ISNULL(s.membersurvey_id,0) AS membersurvey_id 
FROM allmembers m 
    LEFT OUTER JOIN membersurvey s ON m.me_number = s.me_number 
WHERE m.me_number = <cfqueryparam value="#url.em" cfsqltype="cf_sql_char"> 

甲的RecordCount> 0意味着url.em是有效的。如果記錄數> 0,則memberurvey_id> 0表示調查已填寫完畢。

請注意,我使用MSSQL的ISNULL函數。您沒有指定使用哪種類型的數據庫,因此您可能需要使用該功能的更多特定於軟件包的版本。

+0

如何在cfif語句中引用membersurvey_ID? – Amir

+1

Travis

+1

與其他任何查詢列相同。即發現「>調查」。做些什麼' – Leigh

0

我想你在記錄一些事情,當調查完成使ID無效?類似於set idValid = 0

你可能想要做的事更像

SELECT * 
FROM 
    MemberSurvey   
WHERE me_number = <cfqueryparam value="#URL.em#" cfsqltype="cf_sql_char"> 
and idValid is NULL 

因爲這將返回0條記錄與假身份證或已完成的調查顯示了良好的ID,你需要扭轉你.recordCount值你的cfif。

或者如果你只是從表中刪除ID,只需使用

SELECT * 
FROM 
    MemberSurvey   
WHERE me_number = <cfqueryparam value="#URL.em#" cfsqltype="cf_sql_char"> 

你仍然需要扭轉你的.recordCounts在CFIF。

+0

這不起作用,因爲me_number存儲在不同的表中。調查表在這一點上是空白的,並且只有在填寫完調查表後纔會填寫。 – Amir

+0

那麼phantom42的答案的前提更適合。 – Travis

相關問題