我用SBlog(v1.2)作为基础,做一个个人主页。网页需要中英文两个版本,我现在把中英文版数据分别放在两个数据库中(en.mdb/cn.mdb)。通过向Default.asp提交一个字串,是“en”则是用英文数据库,“cn”则是用中文数据库。这样点击中英文版链接切换页面显示时没问题。但当点击文章分类,或某个文章标题的链接时,则总是跳转到中文文章。这里一直搞不明白,在Comm.asp中不是声明了一个公共数据库连接变量(public Conn)么,在其他网页中也能访问这个,为什么我修改数据库路径为英文版数据库,重新连接之后,它又会变成中文版的呢?难道他显示某篇文章时又会自动作一次连接?下面附上我修改后的Default.asp, Comm.asp和API.asp几个文件。没做过网页, 希望大家能帮忙看看有什么问题,或针对我这个需求该怎么修改,感激不尽!
Comm.asp (公共文件,包含在大多数文件中)
=================================================
Public StrDbName
StrDbNameEn="Data/XuWeb_Eng.mdb" '数据库名称以及路径
StrDbNameCn="Data/XuWeb_Chn.mdb"
TimeStar=Timer
'连接到数据库
Public Conn
Public Lang
Call setConn(1) ' 1表示第一次显示页面,而不是通过中英文版链接切换而来
If Request.QueryString("logout")="on" Then Call Logout()
If PCHK="ON" Then
If Session("user_Name")="" Then
Call LoginChk()
If Session("user_Name")="" Then
Session("Error_Login")="登陆失败"
Response.Redirect("Default.asp")
End If
End If
End If
CNN_Site_Root=GetInf("Site_Root")
Function setConn(init)
'Set Conn=nothing
If Lang="cn" then
StrDbName=StrDbNameCn
Else
StrDbName=StrDbNameEn
End if
If init then
Set Conn = Server.CreateObject("ADODB.Connection")
Else
Conn.close
Set Conn = nothing
Set Conn = Server.CreateObject("ADODB.Connection")
End If
Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(StrDbName)
Conn.Open
End Function
==============================================
Default.asp (默认首页)
================================
<%
Lang=Request.QueryString("lang")
%>
<%
Page_Description=GetInf("Page_Description")
Page_Keywords=GetInf("Page_Keywords")
%>
<%PAGETITLE=GetInf("Page_Title")%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--#include file="C_Head.asp" -->
<body>
<!--#include file="C_Header.asp" -->
<!-- start page -->
<div id="page">
<!-- start content -->
<div id="content">
<!-- 输出最新文章 -->
<%Call setConn(0)%>
<%Call ReLoad()%>
<%Print_ArtList(1)%>
<!--<%Print_TopArt(GetInf("Num_DefaultArt"))%>-->
</div>
<!-- end content -->
<!--#include file="C_Sidebar.asp" -->
</div>
<!-- end page -->
<!--#include file="C_Footer.asp" -->
</body>
</html>
===================================
C_header.asp (该文件为输出网页顶部内容;添加的中英文版切换链接,langver为我添加的CSS)
===================================
<div id="langver"><a href="<%=CNN_Site_Root%>Default.asp?lang=en" align="right">English</a></div>
<div id="langver"><a href="<%=CNN_Site_Root%>Default.asp?lang=cn" align="right">中文版</a></div>
===================================
API.ASP (所有函数功能在此文件中实现, 包含在大多数文件中, 这里仅附上几个相关函数)
===================================
'输出文章正文。指定ID
Sub Print_ArtView(id)
sqlCommand="Select * From [Article] Where [id]="&id
Set rsArtView=Server.CreateObject("ADODB.RecordSet")
rsArtView.Open sqlCommand,Conn,1,1
If Not rsArtView.Eof Then
%><div class="post"><h1 class="title"><a href="<%=CNN_Site_Root%>ArticleView.asp?id=<%=rsArtView("id")%>" class="title"><%=rsArtView("Title")%></a></h1><!--<p class="byline"><small> 由 <%=rsArtView("By")%> 发表于 <%=rsArtView("Time")%> | 分类:<a href="<%=CNN_Site_Root%>Article.asp?ClassID=<%=rsArtView("Class")%>"><%=GetArticleClassName(rsArtView("Class"))%></a></small></p>--><div class="entry"><p><%=rsArtView("Content")%></p></div></div><div style="clear:bothl"></div><%
rsArtView.movenext
End If
rsArtView.Close
Set rsArtView = Nothing
End Sub
'输出文章列表。指定ID为分类ID,ID为0则为全部。
' 修改为输出某一类别的所有文章(文章类别由下面的函数输出)
Sub Print_ArtList(id)
If id=0 Then
sqlCommand="Select * From [Article] Order By [Time] Desc"
Else
sqlCommand="Select * From [Article] Where [Class]=" & id & " Order By [Time] Desc"
End If
Set rsArtList=Server.CreateObject("ADODB.RecordSet")
rsArtList.Open sqlCommand,Conn,1,1
%><!--<div class="post"><h1 class="title">文章列表 <%=GetArticleClassName(id)%></h1><table width="100%"><tbody><tr><th>标题</th><th width="75px">类别</th></tr>--><%
While Not rsArtList.Eof
Call Print_ArtView(rsArtList("id"))
%><!--<tr><td><a href="<%=CNN_Site_Root%>ArticleView.asp?id=<%=rsArtList("id")%>"><%=rsArtList("Title")%></a></td><td><%=GetArticleClassName(rsArtList("Class"))%></td></tr>--><%
rsArtList.movenext
WEnd
%><!--</tbody></table></div>--><%
rsArtList.Close
Set rsArtList = Nothing
End Sub
'输出文章分类(侧边栏)
Sub Print_ArticleClass()
sqlCommand="Select * From [ArticleClass]"
Set rsArticleClass=Server.CreateObject("ADODB.RecordSet")
rsArticleClass.Open sqlCommand,Conn,1,1
%><li><%
'Response.Write("<h2>类别:</h2>")
%><ul><%
While Not rsArticleClass.Eof
%><li><a href="<%=CNN_Site_Root%>Article.asp?ClassID=<%=rsArticleClass("id")%>"><%=rsArticleClass("Name")%></a> <!--[<%=GetArtCount(rsArticleClass("id"))%>]--></li><%
rsArticleClass.movenext
WEnd
Response.Write("</ul></li>")
rsArticleClass.Close
Set rsArticleClass = Nothing
End Sub
=====================================
--
FROM 59.109.6.*