Find Consultant部分
Find Consultant部分位于fconsult子目录,其中包含有3个ASP页(见图29.17)。在第一页中,用户可以输入寻找申请者的搜寻准则。在第二页搜寻结果将被显示。最后,在第三页上,用户可查看通过寻找所得的申请者的履历。
图29.17 Find Consultant部分
fconsult.asp fconsult2.asp fconsult3.asp
Find Consultant页
Find Consultant页包含有用于输入搜寻准则的HTML表单(见图29.18)。用户可以基于他们的地理位置来查询申请者。例如,你可以只查询住在California,Fresno的申请者,或者你可以寻找在法国的申请者。
进一步,一个用户可以搜找具有特别技能的求职者。这个表单可被用于确定合计三条技能的查询。例如,你可以查找懂得如何使用Delphi和JScript的求职者。
你也可以使用表单来确定不同的布尔操作符。例如,你可以查找那些同时会用Delphi 和JScript或者会使用两者之一的求职者。
图29.18 Find Consultant页
Find Consultant Results 页
查寻的结果在Find Consultant Results页上显示(见图29.19)。所有工作在这个ASP页中完成。在这个页里,一个SQL查询字符串将被产生用于动态查询resumes表。
图29.19 Find Consultant Results页
表29.3显示了整个Find Consultant Results页的完整代码:
表29.3 fconsult2.asp的代码:
<!-- #INCLUDE VIRTUAL="ADOVBS.INC" -->
<%
' Shows Matching Job Skills In Red
SUB ShowSkills
DIM SkillA,SkillB,SkillC
SkillA=Request.Form("SkillA")
SkillB=Request.Form("SkillB")
SkillC=Request.Form("SkillC")
FOR i=0 TO RS.Fields.Count-1
IF RS(i).type=vbBoolean THEN
IF RS(i) THEN
IF RS(i).NAME=SkillA OR RS(i).NAME=SkillB or RS(I).NAME=SkillC THEN
Response.Write("<FONT COLOR=""#FF0000""><B>"&RS(i).Name&"</B></FONT> ")
ELSE
Response.Write(RS(i).Name&" ")
END IF
END IF
End IF
NEXT
END SUB
%>
<HTML>
<HEAD><TITLE> Find A Consultant </TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF" ALINK="#FF0000">
<!-- Create Title Banner Table -->
<TABLE BGCOLOR="#00aaff" WIDTH="100%">
<TR><TD VALIGN=CENTER>
<FONT FACE=ARIAL SIZE=+4> ASP Job Site</FONT><FONT SIZE=+2> <I> Find Consultant </I></FONT>
</TD></TR>
</TABLE>
<!-- Create Main Body Table -->
<TABLE HEIGHT="100%" CELLPADDING=20>
<TR>
<!-- The Left Cell Of The Body Table Contains The Navigation Strip -->
<TD ALIGN=CENTER VALIGN=TOP BGCOLOR="#D0D0D0" WIDTH=100>
<B>
<P><A HREF="../default.asp">Home</A>
<P><HR>
<P>Consultants
<P><A HREF="/fjob/fjob1.asp">Find A Job</A>
<P><A HREF="/nresume/nresume1.asp">Post A Resume</A>
<P><A HREF="/uresume/uresume1.asp">Update Your Resume</A>
<P><HR>
<P>Employers
<P><FONT COLOR="#808080">Find A Consultant</FONT>
<P><A HREF="/njob/njob1.asp">Post A Job</A>
<P><A HREF="/ujob/ujob1.asp">Update Job Information</A>
</B>
</TD>
<!-- The Right Cell Of The Body Table Contains The Page Contents -->
<TD ALIGN=CENTER VALIGN=CENTER>
<TABLE HEIGHT="100%" ALIGN=CENTER CELLSPACING=50>
<TR><TD>
<%
' Create The Search String
MySQL="SELECT * FROM resumes "
IF Request.Form("City")<>"" THEN Loc="City='"&Request.Form("City")&"' AND "
IF Request.Form("State")<>"" THEN Loc=Loc&"State='"&Request.Form("State")&"' AND "
IF Request.Form("Country")<>"" THEN Loc=Loc&"Country='"&Request.Form("Country")&"' AND "
IF LEFT(Request.Form("SkillA"),1)<>"" THEN
Match=Request.Form("SkillA")&"=1 "
END IF
IF LEFT(Request.Form("SkillB"),1)<>"" THEN
IF Match<>"" THEN Match=Match&Request.Form("AndOrB")&" "
Match=Match&Request.Form("SkillB")&"=1 "
END IF
IF LEFT(Request.Form("SkillC"),1)<>"" THEN
IF Match<>"" THEN Match=Match&Request.Form("AndOrC")&" "
Match=Match&Request.Form("SkillC")&"=1 "
END IF
IF Loc<>"" OR Match<>"" THEN
MySQL=MySQL&"WHERE "&Loc
IF Match<>"" THEN
MySQL=MySQL&"("&Match&")"
ELSE
MySQL=LEFT(MySQL,LEN(MySQL)-4)
END IF
MySQL=MySQL&" ORDER BY EntryDate"
END IF
' Create ADO Objects
Set MyConn=Server.CreateObject("ADODB.Connection")
MyConn.Open Application("ConnectionString")
Set RS=MyConn.Execute(MySQL)
' Check For No Matches
IF RS.EOF THEN
%>
<FONT SIZE=+2><i>No consultants matched your criteria.</i></FONT>
<P>
<FORM ACTION="fconsult1.asp">
<INPUT TYPE="SUBMIT" VALUE="Search Again">
</FORM>
<%
ELSE
%>
<FONT SIZE=+2>Consultants:</FONT>
<%
' Show All Matches
WHILE NOT RS.EOF
%>
<HR WIDTH=80 ALIGN=LEFT>
<B>Name: </B><%=RS("FullName")%>
<BR><B>Location: </B><%=RS("City")&" "&UCASE(RS("State"))&" "&RS("Country")%>
<BR><B>Skills: </B><%ShowSkills%>
<BR><A HREF="fconsult3.asp?UserID=<%=RS("UserID")%>">View Resume</A>
<%
RS.MoveNext
WEND
%>
<P>
<FORM ACTION="fconsult1.asp">
<INPUT TYPE="SUBMIT" VALUE="Search Again">
</FORM>
<%
END IF ' For No Match
RS.Close
MyConn.Close
%>
</TD></TR></TABLE>
</TD></TR>
</TABLE>
</BODY>
</HTML>
用于查找resumes 表的SQL查寻字符串在Create The Search String代码段创建。查寻字符串来自用户在Find Consultant页HTML表单中输入的信息组合而成。
这个查询字符串返回一个记录集,如果记录集为空,用户将被告之没有特定的求职者与搜寻准则相应匹配,否则将显示一个匹配条件的求职者信息列表。
当这些求职者被列出时,他们的技能也同时列出。符合查寻准则的申请者的技能用红色字体列出,其它技能以黑色字体列出,这通过ShowSkills过程来实现。
ShowSkills过程使用了一个技巧,它通过检测字段的数据类型来区分判断resumes表中的技能字段。ADO字段对象的Type属性返回一列的数据类型。在resumes表中,技能被存储在BIT列中(VBScript是布尔列vbBoolean)。一个申请者可能有技能或者没有,因此,ShowSkills过程只显示BIT列的名字和值。
对于每个所列出的申请者,同时也对应一个View Resume热链接。这个链接由以下代码产生:
<BR><A HREF=
“fconsult3.asp?UserID=<%=RS(“UserID”)%>”>View Resume</A>
文本View Resume用来链接到ASP 页fconsult3.asp。这是View Resume页,当用户单击View Resume查看特定申请者信息时,这个申请者的UserID由字符串传递给View Resume页。
View Resume页
View Resume页显示了一个简历表(见图29.20)。这页显示匹配由UserID字符串传递过来的UserID的申请人的简历,如果这页没有收到一个查询字符串的话,将对用户发出警告。
表29.4显示了View Resume页的完整代码。
图29.20 View Resume页
表29.4 View Resume页:fconsult3.asp的代码。
<!-- #INCLUDE VIRTUAL="ADOVBS.INC" -->
<%
' Shows A Part Of A Resume Only If It Exists
SUB ShowIt(theCol,theVar)
IF RS(theVar)<>"" THEN
%>
<B><%=theCol%></B> <%=RS(theVar)%><BR>
<%
END IF
END SUB
' Loops Through All Skills In Resume
SUB ShowSkills
FOR i=0 TO RS.Fields.Count-1
IF RS(i).type=vbBoolean THEN
IF RS(i) THEN Response.Write("<LI>"&RS(i).Name)
End IF
NEXT
END SUB
%>
<HTML>
<HEAD><TITLE> View Resume </TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF" ALINK="#FF0000">
<!-- Create Title Banner Table -->
<TABLE BGCOLOR="#00aaff" WIDTH="100%">
<TR><TD VALIGN=CENTER>
<FONT FACE=ARIAL SIZE=+4> ASP Job Site</FONT><FONT SIZE=+2> <I> Find Consultant </I></FONT>
</TD></TR>
</TABLE>
<!-- Create Main Body Table -->
<TABLE HEIGHT="100%" CELLPADDING=20>
<TR>
<!-- The Left Cell Of The Body Table Contains The Navigation Strip -->
<TD ALIGN=CENTER VALIGN=TOP BGCOLOR="#D0D0D0" WIDTH=100>
<B>
<P><A HREF="../default.asp">Home</A>
<P><HR>
<P>Consultants
<P><A HREF="/fjob/fjob1.asp">Find A Job</A>
<P><A HREF="/nresume/nresume1.asp">Post A Resume</A>
<P><A HREF="/uresume/uresume1.asp">Update Your Resume</A>
<P><HR>
<P>Employers
<P><FONT COLOR="#808080">Find A Consultant</FONT>
<P><A HREF="/njob/njob1.asp">Post A Job</A>
<P><A HREF="/ujob/ujob1.asp">Update Job Information</A>
</B>
</TD>
<!-- The Right Cell Of The Body Table Contains The Page Contents -->
<TD ALIGN=CENTER VALIGN=CENTER>
<TABLE HEIGHT="100%" ALIGN=CENTER CELLSPACING=50>
<TR><TD>
<%
' Create ADO objects
Set MyConn=Server.CreateObject("ADODB.Connection")
MyConn.Open Application("ConnectionString")
' Create SQL SELECT String
MySQL="Select * FROM resumes WHERE UserID="&Request.QueryString("UserID")
Set RS=Server.CreateObject("ADODB.RecordSet")
' A Static Cursor Must Be Used To Retrieve The TEXT fields
RS.Open MySQL,Myconn,adOpenStatic
' Checks For Leap To Page From Nowhere
IF RS.EOF THEN
%>
<FONT SIZE=+2><I>You cannot retrieve this page directly.</I>
<BR>Click the Back button to return to the Find Consultant Page.</FONT>
<P>
<FORM ACTION="fconsult1.asp">
<INPUT TYPE="SUBMIT" VALUE="BACK">
</FORM>
<% ELSE %>
<!-- Show The Resume -->
<FONT SIZE=+2 FACE="Arial"><I><%=RS("FullName")%></I></FONT>
<P>
<FONT SIZE=+1><I>Contact Information:</I></FONT>
<BLOCKQUOTE>
<% ShowIt "Name:","FullName" %>
<B>Email:</B>
<A HREF="MAILTO:<%=RS("Email")%>"><%=RS("Email")%></A><BR>
<% ShowIt "Phone:","Phone" %>
<% ShowIt "City:","City" %>
<% ShowIt "State:", "State" %>
<% ShowIt "Country:","Country" %>
</BLOCKQUOTE>
<% IF RS("Goals")<>"" THEN %>
<P>
<FONT SIZE=+1><I>Work Goals:</I></FONT>
<BLOCKQUOTE>
<%=RS("Goals")%>
</BLOCKQUOTE>
<% END IF %>
<% IF RS("Experience")<>"" THEN %>
<P>
<FONT SIZE=+1><I>Experience:</I></FONT>
<BLOCKQUOTE>
<%=RS("Experience")%>
</BLOCKQUOTE>
<% END IF %>
<P>
<FONT SIZE=+1><I>Proficiencies:</I></FONT>
<BLOCKQUOTE>
<UL>
<% ShowSkills %>
</UL>
</BLOCKQUOTE>
<% IF RS("MoreScript")<>"" THEN %>
<P>
<FONT SIZE=+1><I>Scripting Language Experience:</I></FONT>
<BLOCKQUOTE>
<%=RS("MoreScript")%>
</BLOCKQUOTE>
<% END IF %>
<% IF RS("MoreProg")<>"" THEN %>
<P>
<FONT SIZE=+1><I>Programming Language Experience:</I></FONT>
<BLOCKQUOTE>
<%=RS("MoreProg")%>
</BLOCKQUOTE>
<% END IF %>
<% IF RS("MoreWeb")<>"" THEN %>
<P>
<FONT SIZE=+1><I>Web Server Experience:</I></FONT>
<BLOCKQUOTE>
<%=RS("MoreWeb")%>
</BLOCKQUOTE>
<% END IF %>
<% IF RS("MoreData")<>"" THEN %>
<P>
<FONT SIZE=+1><I>Database Experience:</I></FONT>
<BLOCKQUOTE>
<%=RS("MoreData")%>
</BLOCKQUOTE>
<% END IF %>
<%
END IF
RS.Close
MyConn.Close
%>
</TD></TR>
</TABLE>
</TD></TR>
</TABLE>
</BODY>
</HTML>
申请者的简历从 resumes 表从提取。一个包含有单个所匹配用户简历记录的记录集将被打开。注意,这个记录集不是以向前光标的形式打开。如果你使用一个向前光标来提取文本字段信息,会发生意想不到的怪事。
View Resume页使用同以前页相同的技巧来显示简历中的技能。记录中BIT列通过ADO字段对象的Type属性来检测,所有在简历中的技能都通过ShowSkills过程自动显示。