<% @Language="VBScript" %> <% Response.CacheControl = "no-cache" %> <% Function fetchOnboardPassengerCount(sID,rID) IF sID <> "" AND IsNumeric(sID) THEN '********************************************************************************************************************** '******TO COUNT ALL PASS 0 and 0 as RID and SID, to filter by either or both, pass the routeID or schoolID values****** '****** NOTE pupils that dont touchout on early route will still be counted if route is running ********************** '********************************************************************************************************************** curdate=year(now())&"-"&Qpad(month(now()))&"-"&Qpad(day(now())) IF rID <> "" AND IsNumeric(rID) AND rID <> "0" THEN 'apply a route ID filter rfilt=" routeID='"&rID&"'" ELSE '***************************** MYSQL BUG ALERT*********************************************************************************************************** '**look for all route ID data USING IN and group_concat subquery, note we need to run the query seperately or it doesnt work correctly******************* '**seems we found a bug when using the GROUP_CONCAT inside the IN function as it only works when run seperately, subquery returns incorrect number ****** '******************************************************************************************************************************************************** SET rsFIX=dbCBK.Execute("SELECT GROUP_CONCAT(`routeID`) As route_string from cbk_routes WHERE curSTATUS='on'") IF rsFIX.EOF THEN str_rts="" END IF DO WHILE NOT rsFIX.EOF str_rts=rsFIX("route_string") rsFIX.MoveNext loop rsFIX.Close SET rsFIX=Nothing IF str_rts <> "" AND NOT(IsNull(str_rts)) THEN rfilt=" routeID IN("&str_rts&")" ELSE rfilt=" routeID > '0'" 'there are no running routes, so there can be no active passengers, so why are we here lets exit ;) fetchOnboardPassengerCount="0" Exit Function END IF END IF IF sID <> "0" THEN sfilt=" AND schoolID='"&sID&"'" ELSE sfilt="" END IF pc_sql="select COUNT(DISTINCT(pupilID)) As pcnt from cbk_touchdata WHERE "&rfilt&sfilt&" AND touchindatetime LIKE '"&curdate&"%' AND touchout='0'" SET rsRC=dbCBK.Execute(pc_sql) IF rsRC.EOF THEN onbrd="0" END IF DO WHILE NOT rsRC.EOF onbrd=rsRC("pcnt") rsRC.MoveNext loop rsRC.close SET rsRC = Nothing fetchOnboardPassengerCount=onbrd ELSE 'missing data fetchOnboardPassengerCount="0" END IF End Function sSch=sanitizeRequest("sSch","querystring") %> <%IF sSch <> "" AND IsNumeric(sSch) THEN%> <%=fetchOnboardPassengerCount(sSch,"0")%> <%END IF%>