biggs27
10-21-2002, 06:59 PM
I have a search page (code below) that is providing the results I'm looking for, but I'm having a problem making it display additional information. Specifically, I want to display the description (<meta name="description" content="Blah de blah.">) of the page right under the page title and above the path.
This input to the included page is a single field form named "txtKeyWord."
Here is the code. I've cut out some of the unnecessary html in an effort to leave you with the meat. The output area is in red.
Please let me know if you have any other questions, and thanks for taking a look!
Brian
<%@ Language=VBScript %>
<%
Response.Buffer = True
' Set up some FileSystem objects.
dim objFS, objFolder, objFiles, File, FileName, objCheckFile, strSitePath
set objFS = server.CreateObject("Scripting.FileSystemObject")
dim strListofFiles, arrFileList, strPageTitle, iReturnCount
dim objFolders
strListofFiles = ""
iReturnCount = 0
' The search values, search space, and the return value
dim strKeyWord, strFileContents, returnValue, arrKeyWords
dim bKeyWordFound, i, j
' Get the Physical path to the current directory
strSitePath = Server.MapPath(".")
' Grab the keyworlds and split them into an array
strKeyWord = Trim(request("txtKeyWord"))
arrKeyWords = split(strKeyWord," ")
' Get the list of files.
Set objFolder = objFS.GetFolder(strSitePath)
' Sub that grabs all the ".htm" & ".html" files in the given folder and
' recurses through all subfolders.
sub getCompleteFileList(inFolder, Path)
dim oFiles, oFolders, Folder, sPath
' Get all the files and subfolders.
Set oFiles = inFolder.Files
Set oFolders = inFolder.SubFolders
' If we have a subfolder we need the partial path
if (Path <> "") then
sPath = Path + "/"
end if
' Add each ".htm" & ".html" file to the list
For Each File in oFiles
FileName = File.Name
if((Lcase(right(FileName,4)) = ".htm") OR (Lcase(right(FileName,5)) = ".html") OR (Lcase(right(FileName,4)) = ".asp"))then
if (strListofFiles = "") then
strListofFiles = sPath + FileName
else
strListofFiles = strListofFiles + "," + sPath + FileName
end if
end if
Next
' Check all the subfolders for ".htm" & ".html" files
For Each Folder in oFolders
if (Folder.Name <> "images" AND Folder.Name <> "stats" AND Folder.Name <> "_vti_cnf") then
call getCompleteFileList(Folder, sPath + Folder.Name)
end if
Next
' Clean up
set File = Nothing
set oFiles = Nothing
set Folder = Nothing
set oFolders = Nothing
end sub
%>
<html>
<!-- Begin Search Result Area -->
<table cellspacing=0 width="100%" border=0>
<tbody>
<tr bgcolor="#F2F2F2">
<td align=middle colspan=4 bgcolor="#F2F2F2">
<div align="left"><b><font face="Tahoma">Search Results</font></b></div>
</td>
</tr>
<tr bgcolor="#F2F2F2">
<td align=middle colspan=4 bgcolor="#FFFFFF">
<div align="left"></div>
<p align="left">
<font face="Tahoma">
</font>
</p>
<table width="95%" border="0" cellspacing="1" cellpadding="1" align="center">
<tr bgcolor="#330099">
<td bgcolor="#FFFFFF">
<div align="left"><font color="#FFFFFF" face="Tahoma"><b> <font color="#666666">You
searched for</font><font color="#000000"> </font></b><font color="#FF0000"><b><%= strKeyWord%></b></font></font></div>
</td>
</tr>
<%
' Only to the search if we got at least one keyword
if (strKeyWord <> "") then
' Call the sub that gets all the files
call getCompleteFileList(objFolder, "")
' Take the big ole string the contains all the files seperated by commas and chop it up.
arrFileList = split(strListofFiles,",")
For i=0 to UBound(arrFileList)
' Open the current file and read everything into a single string.
' If the files are huge this could eat a lot or resources.
Set objCheckFile = objFS.OpenTextFile(strSitePath + "/" + arrFileList(i),1,false,0)
strFileContents = objCheckFile.ReadAll
' Default the search flag to false.
bKeyWordFound = false
' For each keyword entered search the file.
for j = 0 to UBound(arrKeyWords)
returnValue = InStr(1,strFileContents,arrKeyWords(j),1)
' If the returnValue isn't zero the keyword was found
' Set the search flage to true and short cut out of the loop.
if (returnValue <> 0) then
bKeyWordFound = true
j = UBound(arrKeyWords)
end if
next
' If a keyword was found include this file in the list.
if (bKeyWordFound) then
' Keep track of the number of results and grab the title of the page for the search display
iReturnCount = iReturnCount + 1
dim startChar, endChar
startChar = InStr(1,strFileContents,"<title>",1)
endChar = InStr(1,strFileContents,"</title>",1)
if (startChar = 0 OR endChar = 0 OR ((startChar + 7) > (endChar - 7))) then
%>
<tr>
<td><a href="http://whqs505/HROnline/HROnline.asp?url=Content/Public/<%= arrFileList(i) %>"><font face="Tahoma" size="2"><%= arrFileList(i) %></font></a> <font face="Arial, Helvetica, sans-serif" size="2"> <%= arrFileList(i) %></font></td>
</tr>
<%
else
strPageTitle = mid(strFileContents,InStr(1,strFileContents,"<title>",1) + 7, InStr(1,strFileContents,"</title>",1) - InStr(1,strFileContents,"<title>",1) - 7)
if (strPageTitle = "") then
strPageTitle = arrFileList(i)
end if
%>
<tr>
<td><a href="http://whqs505/HROnline/HROnline.asp?url=Content/Public/<%= arrFileList(i) %>"><font face="Tahoma" size="2"><b><%= strPageTitle%></b></font></a> <br><font face="Arial, Helvetica, sans-serif" size="2"> <%= arrFileList(i) %></font></td>
</tr>
<%
end if
end if
' Close the file so we can open another one.
objCheckFile.Close
Next
end if
%>
<tr>
<td><font face="Tahoma" size="2" color="#999999"><%= iReturnCount%> pages found</font></td>
</tr>
<tr>
<td><font face="Tahoma"> </font></td>
</tr>
<%
' Clean up all the objects used.
set objCheckFile = Nothing
set File = Nothing
set objFiles = Nothing
set objFolder = Nothing
set objFS = Nothing
%>
</table>
<!-- the end of the search html -->
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
This input to the included page is a single field form named "txtKeyWord."
Here is the code. I've cut out some of the unnecessary html in an effort to leave you with the meat. The output area is in red.
Please let me know if you have any other questions, and thanks for taking a look!
Brian
<%@ Language=VBScript %>
<%
Response.Buffer = True
' Set up some FileSystem objects.
dim objFS, objFolder, objFiles, File, FileName, objCheckFile, strSitePath
set objFS = server.CreateObject("Scripting.FileSystemObject")
dim strListofFiles, arrFileList, strPageTitle, iReturnCount
dim objFolders
strListofFiles = ""
iReturnCount = 0
' The search values, search space, and the return value
dim strKeyWord, strFileContents, returnValue, arrKeyWords
dim bKeyWordFound, i, j
' Get the Physical path to the current directory
strSitePath = Server.MapPath(".")
' Grab the keyworlds and split them into an array
strKeyWord = Trim(request("txtKeyWord"))
arrKeyWords = split(strKeyWord," ")
' Get the list of files.
Set objFolder = objFS.GetFolder(strSitePath)
' Sub that grabs all the ".htm" & ".html" files in the given folder and
' recurses through all subfolders.
sub getCompleteFileList(inFolder, Path)
dim oFiles, oFolders, Folder, sPath
' Get all the files and subfolders.
Set oFiles = inFolder.Files
Set oFolders = inFolder.SubFolders
' If we have a subfolder we need the partial path
if (Path <> "") then
sPath = Path + "/"
end if
' Add each ".htm" & ".html" file to the list
For Each File in oFiles
FileName = File.Name
if((Lcase(right(FileName,4)) = ".htm") OR (Lcase(right(FileName,5)) = ".html") OR (Lcase(right(FileName,4)) = ".asp"))then
if (strListofFiles = "") then
strListofFiles = sPath + FileName
else
strListofFiles = strListofFiles + "," + sPath + FileName
end if
end if
Next
' Check all the subfolders for ".htm" & ".html" files
For Each Folder in oFolders
if (Folder.Name <> "images" AND Folder.Name <> "stats" AND Folder.Name <> "_vti_cnf") then
call getCompleteFileList(Folder, sPath + Folder.Name)
end if
Next
' Clean up
set File = Nothing
set oFiles = Nothing
set Folder = Nothing
set oFolders = Nothing
end sub
%>
<html>
<!-- Begin Search Result Area -->
<table cellspacing=0 width="100%" border=0>
<tbody>
<tr bgcolor="#F2F2F2">
<td align=middle colspan=4 bgcolor="#F2F2F2">
<div align="left"><b><font face="Tahoma">Search Results</font></b></div>
</td>
</tr>
<tr bgcolor="#F2F2F2">
<td align=middle colspan=4 bgcolor="#FFFFFF">
<div align="left"></div>
<p align="left">
<font face="Tahoma">
</font>
</p>
<table width="95%" border="0" cellspacing="1" cellpadding="1" align="center">
<tr bgcolor="#330099">
<td bgcolor="#FFFFFF">
<div align="left"><font color="#FFFFFF" face="Tahoma"><b> <font color="#666666">You
searched for</font><font color="#000000"> </font></b><font color="#FF0000"><b><%= strKeyWord%></b></font></font></div>
</td>
</tr>
<%
' Only to the search if we got at least one keyword
if (strKeyWord <> "") then
' Call the sub that gets all the files
call getCompleteFileList(objFolder, "")
' Take the big ole string the contains all the files seperated by commas and chop it up.
arrFileList = split(strListofFiles,",")
For i=0 to UBound(arrFileList)
' Open the current file and read everything into a single string.
' If the files are huge this could eat a lot or resources.
Set objCheckFile = objFS.OpenTextFile(strSitePath + "/" + arrFileList(i),1,false,0)
strFileContents = objCheckFile.ReadAll
' Default the search flag to false.
bKeyWordFound = false
' For each keyword entered search the file.
for j = 0 to UBound(arrKeyWords)
returnValue = InStr(1,strFileContents,arrKeyWords(j),1)
' If the returnValue isn't zero the keyword was found
' Set the search flage to true and short cut out of the loop.
if (returnValue <> 0) then
bKeyWordFound = true
j = UBound(arrKeyWords)
end if
next
' If a keyword was found include this file in the list.
if (bKeyWordFound) then
' Keep track of the number of results and grab the title of the page for the search display
iReturnCount = iReturnCount + 1
dim startChar, endChar
startChar = InStr(1,strFileContents,"<title>",1)
endChar = InStr(1,strFileContents,"</title>",1)
if (startChar = 0 OR endChar = 0 OR ((startChar + 7) > (endChar - 7))) then
%>
<tr>
<td><a href="http://whqs505/HROnline/HROnline.asp?url=Content/Public/<%= arrFileList(i) %>"><font face="Tahoma" size="2"><%= arrFileList(i) %></font></a> <font face="Arial, Helvetica, sans-serif" size="2"> <%= arrFileList(i) %></font></td>
</tr>
<%
else
strPageTitle = mid(strFileContents,InStr(1,strFileContents,"<title>",1) + 7, InStr(1,strFileContents,"</title>",1) - InStr(1,strFileContents,"<title>",1) - 7)
if (strPageTitle = "") then
strPageTitle = arrFileList(i)
end if
%>
<tr>
<td><a href="http://whqs505/HROnline/HROnline.asp?url=Content/Public/<%= arrFileList(i) %>"><font face="Tahoma" size="2"><b><%= strPageTitle%></b></font></a> <br><font face="Arial, Helvetica, sans-serif" size="2"> <%= arrFileList(i) %></font></td>
</tr>
<%
end if
end if
' Close the file so we can open another one.
objCheckFile.Close
Next
end if
%>
<tr>
<td><font face="Tahoma" size="2" color="#999999"><%= iReturnCount%> pages found</font></td>
</tr>
<tr>
<td><font face="Tahoma"> </font></td>
</tr>
<%
' Clean up all the objects used.
set objCheckFile = Nothing
set File = Nothing
set objFiles = Nothing
set objFolder = Nothing
set objFS = Nothing
%>
</table>
<!-- the end of the search html -->
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>