JohnMac328
asked on
Coldfusion - Form validation with null field
I am trying to have a message appear on the screen if there is a null value in a field in the table. First it does not see the In_date field on the form because of the In_Date#rowNum# naming. All I want is for the
No videos checked out - choose another employee
message to appear when the in_date record field is null. The first line of the if statement is pseudocode code
Any help is appreciated.
Thanks,
John
No videos checked out - choose another employee
message to appear when the in_date record field is null. The first line of the if statement is pseudocode code
Any help is appreciated.
Thanks,
John
<cfif val(form.In_Date) eq null>
No videos checked out - choose another employee
<cfexit>
</cfif>
<cfform>
<table width="1248" border="1">
<cfoutput query="getChecked_Out_Videos">
<cfset rowNum = getChecked_Out_Videos.currentRow>
<tr>
<td width="296">#Video_Name#</td>
<td width="267">#Out_Date#</td>
<td width="131"><select name="Watched#rowNum#" disabled="disabled">
<option value='-1'> Watched</option>
<option value='0' selected>Not Watched</option>
</select></td>
<td width="257"><input type="text" disabled="disabled" name="In_Date#rowNum#" value="#getChecked_Out_Videos.In_Date#">
<input type="hidden" name="VideoID#rowNum#" value="#getChecked_Out_Videos.VideoID#">
</td>
<td width="263"><a href="employeeEdit.cfm?employeeID=#EmployeeID#">Edit</a></td>
</tr>
</cfoutput>
</table>
<input type="hidden" name="totalRecords" value="#rowNum#">
<input type="submit" name="submitButton" value="Submit">
</cfform>
ASKER
I tried that, I kept getting
Element IN_DATE is undefined in FORM.
The way that in_date is named with the name="In_Date#rowNum#" is what is tripping me up
Element IN_DATE is undefined in FORM.
The way that in_date is named with the name="In_Date#rowNum#" is what is tripping me up
you code is very confusing... i can't figure out what exactly you want to check for: a form field value or a db column value? you are talking about checking the db record, but your code checks the form field value...
it is also not clear WHEN you want to check for the null value - after the form is submitted or before the form is rendered? confused...
anyway,
if you are checking for null value BEFORE the form is submitted, you can't refer to FORM scope, because it is still empty - FORM scope is populated with form fields values only after the form is submitted. so in this case you will need to check the values returned by your query, not values in your form fields, and you will need to do it inside your query output by using array notation: #queryname['columnname'][r ownumber]# , i.e.
<cfform ...>
<cfoutput query="getChecked_Out_Vide os">
<cfset rowNum = getChecked_Out_Videos.curr entRow>
<cfif len(trim(getChecked_Out_Vi deos['in_d ate'][rown um])) is 0>
<p>No videos ...</p>
<cfelse>
... [you form fields here ]...
</cfif>
</cfoutput>
</cfform>
if you are checking for null values AFTER the form is submitted, then, to keep using your #rownum# identifiers, you will first have to run the same SELECT query that populated your form, and then again use array notation to test form field values:
<cfquery name="getChecked_Out_Video s" ...>
SELECT...
</cfquery>
<cfoutput query="getChecked_Out_Vide os">
<cfset rownum = currentrow>
<cfif len(trim(form['In_date' & rownum])) is 0>
...
</cfif>
</cfoutput>
hope this helps.
if you clarify exactly where and when you want to check for null values, we can probably provide more relevant code sammples...
Azadi
it is also not clear WHEN you want to check for the null value - after the form is submitted or before the form is rendered? confused...
anyway,
if you are checking for null value BEFORE the form is submitted, you can't refer to FORM scope, because it is still empty - FORM scope is populated with form fields values only after the form is submitted. so in this case you will need to check the values returned by your query, not values in your form fields, and you will need to do it inside your query output by using array notation: #queryname['columnname'][r
<cfform ...>
<cfoutput query="getChecked_Out_Vide
<cfset rowNum = getChecked_Out_Videos.curr
<cfif len(trim(getChecked_Out_Vi
<p>No videos ...</p>
<cfelse>
... [you form fields here ]...
</cfif>
</cfoutput>
</cfform>
if you are checking for null values AFTER the form is submitted, then, to keep using your #rownum# identifiers, you will first have to run the same SELECT query that populated your form, and then again use array notation to test form field values:
<cfquery name="getChecked_Out_Video
SELECT...
</cfquery>
<cfoutput query="getChecked_Out_Vide
<cfset rownum = currentrow>
<cfif len(trim(form['In_date' & rownum])) is 0>
...
</cfif>
</cfoutput>
hope this helps.
if you clarify exactly where and when you want to check for null values, we can probably provide more relevant code sammples...
Azadi
You're not testing for the right value. The IN_DATE is part of your query "getChecked_Out_Videos" therefore, it doesn't really make sense to test for it before the query starts to loop.
Wouldn't the check be simply to see if any records are returned by getChecked_Out_Videos ?
<cfif getChecked_Out_Videos.reco rdCount eq 0>
No videos checked out...
<cfexit>
</cfif>
Isn't the purpose of the form to allow the user to populate IN_DATE ? So checking to see if IN_DATE is empty is kinda backwards? You want in_date to be empty so the user can enter an IN_DATE, no?
Wouldn't the check be simply to see if any records are returned by getChecked_Out_Videos ?
<cfif getChecked_Out_Videos.reco
No videos checked out...
<cfexit>
</cfif>
Isn't the purpose of the form to allow the user to populate IN_DATE ? So checking to see if IN_DATE is empty is kinda backwards? You want in_date to be empty so the user can enter an IN_DATE, no?
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
ASKER
That's what I needed - I want to only show videos if they have one out since it is the checkin section.
Thanks again.
Thanks again.
<cfif val(form.In_Date) eq ''>
No videos checked out - choose another employee
<cfexit>
</cfif>
or
<cfif len(trim(orm.In_Date)) gt 0>
No videos checked out - choose another employee
<cfexit>
</cfif>