HiLiteR 1.1 » "search.asp" Report a Bug | Recommend a feature | Ask a question | Submit a site

<%
    bDontCount = False
    sPageTitle = "2eNetWorX - Search"
    bAdminOnly = False
    lSubjectID = 0
    sTitleBar = "/dev :: <a href=""/dev/index.asp"">home</a> :: search"

%>
    
<!--#include virtual="/dev/_header.asp"-->

<br>
<p class="smallheader">
    2eNetWorX/dev :: Search
</p>

<%

    sub ShowSearchForm

    %>
        <form action="search.asp?cmdSearch=1" method="post">
            <table border=0 cellpadding=2 cellspacing=2>
                <tr><td>
                    Enter your search words seperated by spaces.
                </td></tr>
                <tr><td>
                    <input type="text" name="txtSearch" value="<%=sSearch%>" size="50" maxlength="250" class="tbflat">
                    <input type="submit" name="cmdSearch" value="Search" class="cmdflat">
                </td></tr>
                </tr><td>
                    <table border=0>
                    <tr><td>
                    Search type:
                    </td><td>
                    <%
                    dim aTypes(3)
                    aTypes(1) = "All Words"
                    aTypes(2) = "Any Words"
                    aTypes(3) = "Exact Phrase"
                    
                    response.write "<select name=""cboType"" class=""tbflat"">"
                    
                    for iType = 1 to 3
                        response.write "<option value=""" & iType & """"
                        if iSearchType = iType then
                            response.write " selected"
                        end if
                        response.write ">" & aTypes(iType) & "</option>"
                    next
                    
                    %>
                    
                    </select>
                    </td></tr>
                    <tr><td>
                    Search in
                    </td><td>
                    <select name="cboProject" class="tbflat">
                    <%
                    dim aProjects(11)
                    
                        aProjects(0) = "All Projects"
                        aProjects(1) = "2eNetWorX/dev Site"
                        aProjects(2) = "TableEditoR"
                        aProjects(3) = "MiniSurvey"
                        aProjects(4) = "StatCounteX"
                        aProjects(5) = "PowerTool"
                        aProjects(6) = "TransWindow"
                        aProjects(7) = "Trans-It!"
                        aProjects(8) = "Simple Chat Server/Client"
                        aProjects(9) = "Flash LCD Scroller"
                        aProjects(10) = "GetFile and GetFolder"
                        aProjects(11) = "HiLiteR"

                    for iType = 0 to 11
                        response.write "<option value=""" & iType & """"
                        if iProject = iType then
                            response.write " selected"
                        end if
                        response.write ">" & aProjects(iType) & "</option>"
                    next
                    %>
                    </select>
                    </td><tr>
                    <tr><td>
                        <a href="/dev/live/hiliter/search.asp" target="_blank">Sneak the source code</a>
                    </td></tr>
                    </table>
                </td></tr>
            </table>
        </form>
    <%
    end sub
    
    sub ShowResults
    
        ShowProjects
        ShowDocuments
        ShowSamples
        ShowFeedbacks
        
    end sub
    
    sub ShowHeader(sHeaderText)
        response.write "<br>"
        response.write "<table border=""0"" cellpadding=""0"" cellspacing=""2"" width=""100%"">"
        response.write "<tr><td class=""smallerheader"" bgcolor=""#fdf5e6"">" & sHeaderText & "</td></tr>"
    end sub
    
    sub ShowFooter
        response.write "</table>"
    end sub
    
    
    sub ShowItem(sURL, sTitle, sDescription)
        response.write "<tr><td class=""smallertext"">» <a href=""" & sURL & """>" & sTitle & "</a></td></tr>"
    end sub
    
    function ConstructWhere(sFields)
        
        select case iSearchType
            case 1    'All words
                sWhere = ConstructWhereByFields (sFields, " AND ")
            case 2    'Any words
                sWhere = ConstructWhereByFields (sFields, " OR ")
            case 3    'Exact Phrase
                aFields = split(sFields, ",")
                for iField = 0 to ubound(aFields)
                    if bFieldBegin = true then
                        sExpr = " OR "
                    end if
                    sWhere = sWhere & sExpr & aFields(iField) & " LIKE '%" & sSearch & "%'"
                    bFieldBegin = True
                next
        end select
        sWhere = "(" & sWhere & ")"
        if (iProject > 0 and bNoProjectID = false) then
            if sTableDotField <> "" then
                sWhere = sWhere & " AND (" & sTableDotField & " = " & iProject & ")"
            else
                sWhere = sWhere & " AND (ProjectID = " & iProject & ")"
            end if
        end if
        ConstructWhere = sWhere
    end function
    
    function ConstructWhereByFields(sFields, sWordExpr)

        aFields = split(sFields, ",")
        aWords = split(sSearch, " ")
        
        bFieldBegin = false
        for iField = 0 to ubound(aFields)
            if bFieldBegin = true then
                sExpr = " OR "
            end if
            bWordBegin = false
            for iWord = 0 to ubound(aWords)
                if bWordBegin = false then
                    sWhere = sWhere & sExpr & "(" & aFields(iField) & " LIKE '%" & aWords(iWord) & "%'"
                else
                    sWhere = sWhere & sWordExpr & aFields(iField) & " LIKE '%" & aWords(iWord) & "%'"
                end if
                
                bWordBegin = True
            next
            bFieldBegin = True
            sWhere = sWhere & ")"
        next
        ConstructWhereByFields = sWhere
    end function
    
    sub ShowProjects
        OpenDB sConnProjects

        sFields = "Name,Description"
        sWhere = ConstructWhere (sFields)

        sSQL = "SELECT * FROM Projects WHERE " & sWhere
        
        rs.Open sSQL,,,adCmdTable
        
        if not (rs.eof or rs.bof) then
            ShowHeader " :: project descriptives"
            response.write "<tr><td class=""smallertext"">"
            do while not rs.eof
                sURL = "/dev/projects/" & rs("filename")
                sTitle = rs("name")
            
                response.write "» <a href=""" & sURL & """>" & sTitle & "</a> "
                rs.movenext
                iResultCount = iResultCount + 1
            loop
            response.write "</td><tr>"
            ShowFooter
        end if
        rs.close
        conn.close
        
    end sub

    sub ShowDocuments
        OpenDB sConnProjects
        sFields = "Documents.Name, Body"
        sTableDotField = "Projects.ProjectID"
        sWhere = ConstructWhere (sFields)
        sTableDotField = ""
        
        sSQL = "SELECT * FROM Documents LEFT JOIN Projects ON (Documents.ProjectID = Projects.ProjectID) WHERE " & sWhere
        rs.Open sSQL,,,adCmdTable
        
        if not (rs.eof or rs.bof) then
            ShowHeader " :: official documentory"
            response.write "<tr><td class=""smallertext"">"
            do while not rs.eof
                sURL = "/dev/projects/read.asp?pid=" & rs("Documents.ProjectID") & "&docid=" & rs("DocumentID")
                sTitle = rs("Projects.Name") & " :: " & rs("Documents.Name")
            
                ShowItem sURL, sTitle, sDescription
                iResultCount = iResultCount + 1
                rs.movenext
            loop
            response.write "</td><tr>"
            ShowFooter
        end if
        rs.close
        conn.close
    end sub
    
    sub ShowSamples
        OpenDB sConnSamples
    
        sFields = "Title,Description"
        bNoProjectID = True
        sWhere = ConstructWhere (sFields)
        bNoProjectID = False
        
        sSQL = "SELECT * FROM Samples WHERE " & sWhere & " AND Active=True"
        
        rs.Open sSQL,,,adCmdTable
        
        if not (rs.eof or rs.bof) then
            ShowHeader " :: samples"
            response.write "<tr><td class=""smallertext"">"
            do while not rs.eof
                sURL = "/dev/samples/" & rs("filename")
                sTitle = rs("Title")
            
                response.write "» <a href=""" & sURL & """>" & sTitle & "</a> "
                iResultCount = iResultCount + 1
                rs.movenext
            loop
            response.write "</td><tr>"
            ShowFooter
        end if
        rs.close
        conn.close
        
    end sub

    sub ShowFeedbacks
    
        ShowBugs
        ShowRecommends
        ShowQuestions
        
    end sub
    
    sub ShowBugs
        OpenDB sConnFeedback
    
        sFields = "Title,Description"
        sWhere = ConstructWhere (sFields)
        sSQL = "SELECT * FROM Bugs WHERE " & sWhere & " ORDER BY SubmitDate DESC"
        
        rs.Open sSQL,,,adCmdTable
        
        if not (rs.eof or rs.bof) then
            ShowHeader " :: bugs"
            response.write "<tr><td class=""smallertext"">"
            do while not rs.eof
                sURL = "/dev/projects/bugs.asp?pid=" & rs("ProjectID") & "#" & rs("BugID")
                sTitle = rs("Title")
            
                ShowItem sURL, sTitle, sDescription
                iResultCount = iResultCount + 1
                rs.movenext
            loop
            response.write "</td><tr>"
            ShowFooter
        end if
        rs.close
        conn.close
    
    end sub

    
    sub ShowRecommends
        OpenDB sConnFeedback

        sFields = "Title,Description"
        sWhere = ConstructWhere (sFields)
    
        sSQL = "SELECT * FROM Recommends WHERE " & sWhere & " ORDER BY RecDate DESC"
        
        rs.Open sSQL,,,adCmdTable
        
        if not (rs.eof or rs.bof) then
            ShowHeader " :: recommended features"
            response.write "<tr><td class=""smallertext"">"
            do while not rs.eof
                sURL = "/dev/projects/recommends.asp?pid=" & rs("ProjectID") & "#" & rs("RecID")
                sTitle = rs("Title")
            
                ShowItem sURL, sTitle, sDescription
                iResultCount = iResultCount + 1
                rs.movenext
            loop
            response.write "</td><tr>"
            ShowFooter
        end if
        rs.close
        conn.close
    
    end sub

    sub ShowQuestions
        OpenDB sConnFeedback
    
        sFields = "Title,Description"
        sWhere = ConstructWhere (sFields)

        sSQL = "SELECT * FROM Questions WHERE " & sWhere & " ORDER BY AskedDate DESC"
        rs.Open sSQL,,,adCmdTable
        
        if not (rs.eof or rs.bof) then
            ShowHeader " :: questions &amp; answers"
            response.write "<tr><td class=""smallertext"">"
            do while not rs.eof
                sURL = "/dev/projects/answers.asp?pid=" & rs("ProjectID") & "&qid=" & rs("QuestionID")
                sTitle = rs("Title")
            
                ShowItem sURL, sTitle, sDescription
                iResultCount = iResultCount + 1
                rs.movenext
            loop
            response.write "</td><tr>"
            ShowFooter
        end if
        rs.close
        conn.close
    
    end sub
    
    sub ShowSummary
        if iResultCount > 0 then
            response.write "<table border=""0"" width=""100%""><tr><td bgcolor=""#fdf5e6"">" & _
            "Total <strong>" & iResultCount & "</strong> results found." & _
            "</td></tr></table>"
        else
            response.write "<table border=""0"" width=""100%""><tr><td bgcolor=""#fdf5e6"">" & _
            "Nothing found ;)" & _
            "</td></tr></table>"
        end if
    end sub
    
    sub LogSearch
        OpenDB sConnSearch
        sSQL = "SELECT * FROM Searches WHERE SearchID = -1"
        rs.Open sSQL,,, adCmdTable

        rs.AddNew
        
        rs("SearchQuery") = sSearch
        rs("Type") = iSearchType
        rs("ProjectID") = iProject
        rs("Date") = Date
        rs("Time") = Time
        rs("ResultCount") = iResultCount
        rs("UserName") = session("devUserName")
        
        rs.Update

        rs.close
        conn.close
    end sub
    
    function CheckString(sText)
        sText = replace(sText, "'", "")
        sText = replace(sText, """", "")
        sText = replace(sText, "[", "")
        sText = replace(sText, "]", "")
        sText = replace(sText, "%", "")
        CheckString = sText
    end function

    sub InitSearch
        sSearch = CheckString(request("txtSearch"))
        iSearchType = CLng(request("cboType"))
        iProject = CLng(request("cboProject"))
        
        if iSearchType = 0 then iSearchType = 1
    end sub
    
    dim sSearch
    dim iSearchType
    dim iProject
    
    dim iResultCount
    
    dim sTableDotField
    dim bNoProjectID
    
    InitSearch
    
    if request("cmdSearch") = "" OR len(sSearch) = 0 then
    
        ShowSearchForm
        
    else
    
        ShowResults
        ShowSummary
        ShowSearchForm
        LogSearch
        
    end if
    
    set rs = nothing
    set conn = nothing
    
%>

<br><br>
<!--#include virtual="/dev/_footer.asp"-->


Processing time: 6.88 seconds.

Visit 2eNetWorX for more OpenSource VB and ASP Projects.