Need help with writting an update / insert with related tables
I am new at ColdFusion. I am learning how to write querys and am creating a small app to collect information from visitors to my web site. (It is also a good way for me to learn this language) I am having a problem and it is not just how to use an update / insert with related tables. I am not sure if I am even gathering the proper variables to compair them to existing db records before it runs either the update or insert querys.Can someone help me, show me how to update / insert related tables and maybe tell me if I am creating the proper varibales to do the compairison?This is my code, I am commenting it out.
<!--- creating a variable to compair with the db table--->
<cfset userIP = ('#CGI.REMOTE_ADDR#')>
<!--- Run the query and compair the cfset to the remote_addr cell--->
<cfquery name="userTracking" datasource="#APPLICATION.dataSource#" dbtype="ODBC">
SELECT REMOTE_ADDR
FROM user_track
WHERE REMOTE_ADDR = #userIP#
</cfquery>
<!-- if the record exists, then run this update--->
<cfif userTracking EQ userIP>
<cfquery datasource="#APPLICATION.dataSource#">
UPDATE user_track, trackDetail
SET user_track.REMOTE_ADDR=<cfqueryparam value="#Trim(CGI.REMOTE_ADDR)#" cfsqltype="CF_SQL_VARCHAR">,
user_track.browser=<cfqueryparam value="#Trim(CGI.HTTP_USER_AGENT)#" cfsqltype="CF_SQL_VARCHAR">,
user_track.visits = visits+1,
trackDetail.date=<cfqueryparam value="#Now()#" cfsqltype="CF_SQL_TIMESTAMP">,
trackDetail.path=<cfqueryparam value="#Trim(PATH_INFO)#" cfsqltype="CF_SQL_LONGVARCHAR">
WHERE REMOTE_ADDR =<cfqueryparam value="#Trim(CGI.REMOTE_ADDR)#" cfsqltype="CF_SQL_VARCHAR">
</cfquery>
<cfelse>
<!--- if it doesn't, then insert a new record --->
<cfquery datasource="#APPLICATION.dataSource#" dbtype="ODBC">
INSERT INTO user_track, trackDetail
(user_track.REMOTE_ADDR, user_track.browser, user_track.visits, trackDetail.userID, trackDetail.date, trackDetail.path)
VALUES(
<cfqueryparam value="#Trim(CGI.REMOTE_ADDR)#" cfsqltype="CF_SQL_VARCHAR">,
<cfif Len(Trim(HTTP_USER_AGENT)) GT 1>
<cfqueryparam value="#Trim(CGI.HTTP_USER_AGENT)#" cfsqltype="CF_SQL_VARCHAR">,
</cfif>
visits+1,
<cfqueryparam value="#Trim(CGI.HTTP_USER_AGENT)#" cfsqltype="CF_SQL_VARCHAR">,
<cfqueryparam value="#user_track.userID#" cfsqltype="CF_SQL_VARCHAR">,
<cfqueryparam value="#Now()#" cfsqltype="CF_SQL_TIMESTAMP">,
<cfqueryparam value="#Trim(PATH_INFO)#" cfsqltype="CF_SQL_LONGVARCHAR">
)
</cfquery>
</cfif>
Am I at all close on this? This doesn't throw any errors, but it isn't working either. So obviously it is wrong. I get a cfdump at the end of my compairison query, but once it hits the if statement, it is lost.
Thank you for your time anyone.
Newbie
