Mysql Don';如果没有可用内容,则不显示菜单项

Mysql Don';如果没有可用内容,则不显示菜单项,mysql,sql,vbscript,asp-classic,Mysql,Sql,Vbscript,Asp Classic,网站管理员可以添加新的子菜单链接,从而显示包含相关记录的页面 但是,如果没有要显示的记录,页面将抛出一个错误 我需要的是一种方法来检查是否有可用的记录,如果没有,不要显示链接 tblMainMenu的结构是: MainMenuID MainMenuName MainMenuImage DisplayRecord PositionNumber tblSubMenu的结构是: SubMenuID SubMenuName MainMenuID DisplayRecord PositionNumber

网站管理员可以添加新的子菜单链接,从而显示包含相关记录的页面

但是,如果没有要显示的记录,页面将抛出一个错误

我需要的是一种方法来检查是否有可用的记录,如果没有,不要显示链接

tblMainMenu的结构是:

MainMenuID
MainMenuName
MainMenuImage
DisplayRecord
PositionNumber
tblSubMenu的结构是:

SubMenuID
SubMenuName
MainMenuID
DisplayRecord
PositionNumber
tblContent的结构是:

ContentID
MainMenuID
SubMenuID
DisplayRecord
DisplayImage
UnDeleteRecord
UnDeleteImage
PositionNumber
ContentTitle
ContentData
ContentImage
ContentImageCaption
页面代码(也显示SQL代码)为:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include virtual="/Connections/ENG.asp" -->
<%
Dim rsCharityDetails
Dim rsCharityDetails_cmd
Dim rsCharityDetails_numRows

Set rsCharityDetails_cmd = Server.CreateObject ("ADODB.Command")
rsCharityDetails_cmd.ActiveConnection = MM_ENG_STRING
rsCharityDetails_cmd.CommandText = "SELECT * FROM tblCharityDetails" 
rsCharityDetails_cmd.Prepared = true

Set rsCharityDetails = rsCharityDetails_cmd.Execute
rsCharityDetails_numRows = 0
%>
<%
Dim rsHeaderImage
Dim rsHeaderImage_cmd
Dim rsHeaderImage_numRows

Set rsHeaderImage_cmd = Server.CreateObject ("ADODB.Command")
rsHeaderImage_cmd.ActiveConnection = MM_ENG_STRING
rsHeaderImage_cmd.CommandText = "SELECT MainMenuImage, MainMenuID FROM tblMainMenu WHERE MainMenuID = 3" 
rsHeaderImage_cmd.Prepared = true

Set rsHeaderImage = rsHeaderImage_cmd.Execute
rsHeaderImage_numRows = 0
%>
<%
Dim rsNavBar
Dim rsNavBar_cmd
Dim rsNavBar_numRows

Set rsNavBar_cmd = Server.CreateObject ("ADODB.Command")
rsNavBar_cmd.ActiveConnection = MM_ENG_STRING
rsNavBar_cmd.CommandText = "SELECT * FROM tblMainMenu WHERE DisplayRecord = 1 ORDER BY PositionNumber ASC" 
rsNavBar_cmd.Prepared = true

Set rsNavBar = rsNavBar_cmd.Execute
rsNavBar_numRows = 0
%>
<%
Dim rsWhoWeAre
Dim rsWhoWeAre_cmd
Dim rsWhoWeAre_numRows

Set rsWhoWeAre_cmd = Server.CreateObject ("ADODB.Command")
rsWhoWeAre_cmd.ActiveConnection = MM_ENG_STRING
rsWhoWeAre_cmd.CommandText = "SELECT tblSubMenu.*, tblMainMenu.MainMenuName FROM tblSubMenu INNER JOIN tblMainMenu ON tblSubMenu.MainMenuID = tblMainMenu.MainMenuID WHERE tblSubMenu.DisplayRecord = 1 AND tblSubMenu.MainMenuID = 1 ORDER BY tblSubMenu.PositionNumber ASC" 
rsWhoWeAre_cmd.Prepared = true

Set rsWhoWeAre = rsWhoWeAre_cmd.Execute
rsWhoWeAre_numRows = 0
%>
<%
Dim rsWhatWeDo
Dim rsWhatWeDo_cmd
Dim rsWhatWeDo_numRows

Set rsWhatWeDo_cmd = Server.CreateObject ("ADODB.Command")
rsWhatWeDo_cmd.ActiveConnection = MM_ENG_STRING
rsWhatWeDo_cmd.CommandText = "SELECT tblSubMenu.*, tblMainMenu.MainMenuName FROM tblSubMenu INNER JOIN tblMainMenu ON tblSubMenu.MainMenuID = tblMainMenu.MainMenuID WHERE tblSubMenu.DisplayRecord = 1 AND tblSubMenu.MainMenuID = 2 ORDER BY tblSubMenu.PositionNumber ASC" 
rsWhatWeDo_cmd.Prepared = true

Set rsWhatWeDo = rsWhatWeDo_cmd.Execute
rsWhatWeDo_numRows = 0
%>
<%
Dim rsOurProjects
Dim rsOurProjects_cmd
Dim rsOurProjects_numRows

Set rsOurProjects_cmd = Server.CreateObject ("ADODB.Command")
rsOurProjects_cmd.ActiveConnection = MM_ENG_STRING
rsOurProjects_cmd.CommandText = "SELECT tblSubMenu.*, tblMainMenu.MainMenuName FROM tblSubMenu INNER JOIN tblMainMenu ON tblSubMenu.MainMenuID = tblMainMenu.MainMenuID WHERE tblSubMenu.DisplayRecord = 1 AND tblSubMenu.MainMenuID = 3 ORDER BY tblSubMenu.PositionNumber ASC" 
rsOurProjects_cmd.Prepared = true

Set rsOurProjects = rsOurProjects_cmd.Execute
rsOurProjects_numRows = 0
%>
<%
Dim rsSupportUs
Dim rsSupportUs_cmd
Dim rsSupportUs_numRows

Set rsSupportUs_cmd = Server.CreateObject ("ADODB.Command")
rsSupportUs_cmd.ActiveConnection = MM_ENG_STRING
rsSupportUs_cmd.CommandText = "SELECT tblSubMenu.*, tblMainMenu.MainMenuName FROM tblSubMenu INNER JOIN tblMainMenu ON tblSubMenu.MainMenuID = tblMainMenu.MainMenuID WHERE tblSubMenu.DisplayRecord = 1 AND tblSubMenu.MainMenuID = 4 ORDER BY tblSubMenu.PositionNumber ASC" 
rsSupportUs_cmd.Prepared = true

Set rsSupportUs = rsSupportUs_cmd.Execute
rsSupportUs_numRows = 0
%>
<%
Dim rsLearnMore
Dim rsLearnMore_cmd
Dim rsLearnMore_numRows

Set rsLearnMore_cmd = Server.CreateObject ("ADODB.Command")
rsLearnMore_cmd.ActiveConnection = MM_ENG_STRING
rsLearnMore_cmd.CommandText = "SELECT tblSubMenu.*, tblMainMenu.MainMenuName FROM tblSubMenu INNER JOIN tblMainMenu ON tblSubMenu.MainMenuID = tblMainMenu.MainMenuID WHERE tblSubMenu.DisplayRecord = 1 AND tblSubMenu.MainMenuID = 5 ORDER BY tblSubMenu.PositionNumber ASC" 
rsLearnMore_cmd.Prepared = true

Set rsLearnMore = rsLearnMore_cmd.Execute
rsLearnMore_numRows = 0
%>
<%
Dim rsContent__idSMenu
rsContent__idSMenu = "7"
If (Request.QueryString("idSMenu")    <> "") Then 
  rsContent__idSMenu = Request.QueryString("idSMenu")   
End If
%>
<%
Dim rsContent
Dim rsContent_cmd
Dim rsContent_numRows

Set rsContent_cmd = Server.CreateObject ("ADODB.Command")
rsContent_cmd.ActiveConnection = MM_ENG_STRING
rsContent_cmd.CommandText = "SELECT tblContent.*, tblSubMenu.SubMenuName, tblMainMenu.MainMenuName FROM (tblContent LEFT JOIN tblSubMenu ON tblContent.SubMenuID = tblSubMenu.SubMenuID) INNER JOIN tblMainMenu ON tblContent.MainMenuID = tblMainMenu.MainMenuID WHERE tblContent.DisplayRecord = 1 AND tblContent.SubMenuID = ? ORDER BY tblContent.PositionNumber ASC" 
rsContent_cmd.Prepared = true
rsContent_cmd.Parameters.Append rsContent_cmd.CreateParameter("param1", 5, 1, -1, rsContent__idSMenu) ' adDouble

Set rsContent = rsContent_cmd.Execute
rsContent_numRows = 0
%>
<%
Dim navBar__numRows
Dim navBar__index

navBar__numRows = -1
navBar__index = 0
rsNavBar_numRows = rsNavBar_numRows + navBar__numRows
%>
<%
Dim WhoWeAre__numRows
Dim WhoWeAre__index

WhoWeAre__numRows = -1
WhoWeAre__index = 0
rsWhoWeAre_numRows = rsWhoWeAre_numRows + WhoWeAre__numRows
%>
<%
Dim WhatWeDo__numRows
Dim WhatWeDo__index

WhatWeDo__numRows = -1
WhatWeDo__index = 0
rsWhatWeDo_numRows = rsWhatWeDo_numRows + WhatWeDo__numRows
%>
<%
Dim OurProjects__numRows
Dim OurProjects__index

OurProjects__numRows = -1
OurProjects__index = 0
rsOurProjects_numRows = rsOurProjects_numRows + OurProjects__numRows
%>
<%
Dim SupportUs__numRows
Dim SupportUs__index

SupportUs__numRows = -1
SupportUs__index = 0
rsSupportUs_numRows = rsSupportUs_numRows + SupportUs__numRows
%>
<%
Dim LearnMore__numRows
Dim LearnMore__index

LearnMore__numRows = -1
LearnMore__index = 0
rsLearnMore_numRows = rsLearnMore_numRows + LearnMore__numRows
%>
<%
Dim Article__numRows
Dim Article__index

Article__numRows = -1
Article__index = 0
rsContent_numRows = rsContent_numRows + Article__numRows
%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="iso-8859-1">
<!-- disable iPhone inital scale -->
<meta name="viewport" content="width=device-width; initial-scale=1.0">

<title><%=(rsContent.Fields.Item("MainMenuName").Value)%> || <%=(rsContent.Fields.Item("SubMenuName").Value)%> || <%=(rsCharityDetails.Fields.Item("CharityName").Value)%></title>

<script src="../scripts/jquery-1.7.2.min.js"></script>
<!-- jQuery NailThumb Plugin - any image to any thumbnail Examples and documentation at: http://www.garralab.com/nailthumb.php -->
<script src="../scripts/jquery.nailthumb.1.1.js"></script>
<!-- Lightbox2 v2.51 by Lokesh Dhakar For more information, visit: http://lokeshdhakar.com/projects/lightbox2/ -->
<script src="../scripts/lightbox.js"></script>

<!-- Lightbox css -->
<link href="../scripts/lightbox.css" rel="stylesheet" type="text/css" media="screen" />
<!-- main css -->
<link href="../scripts/mfm-standard-stylesheet.css" rel="stylesheet" type="text/css">
<!-- Non desktop css -->
<link href="../scripts/mfm-media-queries.css" rel="stylesheet" type="text/css">

<!-- html5.js for IE less than 9 -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

<!-- css3-mediaqueries.js for IE less than 9 -->
<!--[if lt IE 9]>
<script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
<![endif]-->

</head>

<%
thisPageID = (rsContent.Fields.Item("MainMenuName").Value)
thisPageID = replace(thisPageID, " ", "-")
thisPageID = LCase(thisPageID)
'Response.Write(thisPageID)
%>

<body id="<% Response.Write(thisPageID) %>">

<div id="wrapper" class="innerWidth">
<header>
<!--#include file="includes/header.asp" -->
</header>

<nav>
<!--#include file="includes/navbar.asp" -->
</nav>

<!-- Page Content -->
<% IF rsContent.Fields.Item("SubMenuName") <> rsContent.Fields.Item("ContentTitle") THEN %>
<h1 id="pageTitle"><%=(rsContent.Fields.Item("SubMenuName").Value)%></h1>
<% END IF %>

<!-- Article -->
<% 
While ((Article__numRows <> 0) AND (NOT rsContent.EOF)) 
%>
<article id="content" class="innerWidth">
    <% IF (IsNull(rsContent.Fields.Item("ContentImage").Value)) OR (rsContent.Fields.Item("DisplayImage").Value) = "0" THEN %>
    <div class="withoutImage">
    <h1><%=(rsContent.Fields.Item("ContentTitle").Value)%></h1> <!-- Content Title -->
    <%=(rsContent.Fields.Item("ContentData").Value)%>
    </div> <!-- Page Content -->
    <% ELSE %>
    <!-- Image -->
    <div class="withImage">
    <h1><%=(rsContent.Fields.Item("ContentTitle").Value)%></h1> <!-- Content Title -->
    <img src="../images/system-images/polaroid-frame.gif" id="frame">
    <div class="nailthumb-container" id="frameImage"> <!-- Thumbnail Container -->
    <a href="<%=(rsContent.Fields.Item("ContentImage").Value)%>" rel="lightbox" title="<%=(rsContent.Fields.Item("ContentImageCaption").Value)%>"><img src="<%=(rsContent.Fields.Item("ContentImage").Value)%>"></a> <!-- Image -->
    </div>
    <span id="frameImageCaption"><%=(rsContent.Fields.Item("ContentImageCaption").Value)%></span>
    <%=(rsContent.Fields.Item("ContentData").Value)%>
    </div>
    <% END IF %>
</article>

<% 
Article__index=Article__index+1
Article__numRows=Article__numRows-1
rsContent.MoveNext()
Wend
%>
<!-- /Article -->

<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('.nailthumb-container').nailthumb({fitDirection:'top center'});
});
</script>

<!-- /Page Content -->

<div class="push"></div>

</div>
<!-- /#wrapper -->

<footer>
  <!--#include file="includes/footer.asp" -->
</footer>

</body>
</html>
<%
rsCharityDetails.Close()
Set rsCharityDetails = Nothing
%>
<%
rsHeaderImage.Close()
Set rsHeaderImage = Nothing
%>
<%
rsNavBar.Close()
Set rsNavBar = Nothing
%>
<%
rsWhoWeAre.Close()
Set rsWhoWeAre = Nothing
%>
<%
rsWhatWeDo.Close()
Set rsWhatWeDo = Nothing
%>
<%
rsOurProjects.Close()
Set rsOurProjects = Nothing
%>
<%
rsSupportUs.Close()
Set rsSupportUs = Nothing
%>
<%
rsLearnMore.Close()
Set rsLearnMore = Nothing
%>
<%
rsContent.Close()
Set rsContent = Nothing
%>
我想我需要找到一种方法来检查相关的子菜单ID是否出现在内容表中,但我不太清楚如何显示

非常感谢您的帮助和建议

问候


Pb

您发布的脚本中的首要问题是:您的文章\uuu numRows变量的值是从哪里获得的

我确实看到,在循环中,您正在执行Article\u numRows=Article\u numRows-1,但在开始递减当前值大于-1的值之前,您应该将该值设置为

Article\uuuNumRows=rsContent\uNumRows


但是根据您的脚本,所有行计数器变量都设置为0或-1,这将使任何循环在达到BOF或记录集结束(EOF)时变弱而不停止。我在SQL中添加了
ContentID
作为
LEFT JOIN
并添加了
groupby
语句,以确保
子菜单ID
只显示一次。然后,如果。。。然后。。。ELSE语句。例如 SQL代码:

SELECT tblSubMenu.*, tblMainMenu.MainMenuName, tblContent.ContentID
FROM (tblSubMenu INNER JOIN tblMainMenu ON tblSubMenu.MainMenuID = tblMainMenu.MainMenuID) INNER JOIN tblContent ON tblSubMenu.SubMenuID = tblContent.SubMenuID
WHERE tblSubMenu.DisplayRecord = 1 AND tblSubMenu.MainMenuID = 3 GROUP BY tblSubMenu.SubMenuID
ORDER BY tblSubMenu.PositionNumber ASC
navbar.asp中的代码:

<!-- OUR PROJECTS -->
<div id="3" style="display:<%=vis3%>;" class="subMenuRow">
<ul class="innerWidth">
<% 
While ((OurProjects__numRows <> 0) AND (NOT rsOurProjects.EOF)) 
%>
<%
strPageName = Replace (rsOurProjects.Fields.Item("MainMenuName").Value," ","-")
strPageName = Lcase(strPageName)
%>
<% If NOT ISNULL (rsOurProjects.Fields.Item("ContentID").Value) Then %>
<li><a href="<% Response.Write(strPageName) %>.asp?idSMenu=<%=(rsOurProjects.Fields.Item("SubMenuID").Value)%>"><h3><%=(rsOurProjects.Fields.Item("SubMenuName").Value)%></h3></a></li>
<% End If %>
<% 
OurProjects__index=OurProjects__index+1
OurProjects__numRows=OurProjects__numRows-1
rsOurProjects.MoveNext()
Wend
%>
</ul>
</div>
<!-- /OUR PROJECTS -->

问候


Pb

哪一行抛出错误?对不起,我应该更明确地说明错误。基本上,这是一个空白页。实际错误与BOF或EOF或无当前记录有关。这行代码是:
| | | |
。由于没有记录,因此应出现错误。这就是为什么我需要检查是否有要显示的记录。我建议添加变量,并使用记录集中的“if Not RS.EOF then variable=something”之类的验证。这样,您将只在那里有字符串,并且将省略null或空变量。更糟糕的是,如果记录集有值,则可以使用response.write…页面的下一步是Article_numRows变量工作的重复区域。它显示了与由navbar.asp文件中的子菜单ID设置的idSMenu变量相关的所有记录。很抱歉,Marty,我根本看不到这一点。ASP不是这样工作的:除非你在开始处理之前有了变量的值,否则它不会被使用。我真的不知道我在做什么,我也不太清楚你的意思,但冒着教我祖母吃蛋的风险,链接附带了变量idSMenu,它是控制在页面上显示哪些记录的子菜单ID,即:our projects.asp?idSMenu=12。当没有可显示的记录时(正确地)出现问题。我并不担心没有要显示的记录,只是担心如何在菜单系统中隐藏链接,直到有记录要显示(如果有意义的话)。在你的循环中有一种方法可以做到这一点:| | | | | Hi All Blond。谢谢你的回复,但是,它没有回答我的问题。我的问题与空白页无关。我知道这是什么原因。我正在寻找一种方法来隐藏菜单中的链接,如果rsContent中没有相应的子菜单ID。我试过
和一些细微的变化,但都没有用。
<!-- OUR PROJECTS -->
<div id="3" style="display:<%=vis3%>;" class="subMenuRow">
<ul class="innerWidth">
<% 
While ((OurProjects__numRows <> 0) AND (NOT rsOurProjects.EOF)) 
%>
<%
strPageName = Replace (rsOurProjects.Fields.Item("MainMenuName").Value," ","-")
strPageName = Lcase(strPageName)
%>
<% If NOT ISNULL (rsOurProjects.Fields.Item("ContentID").Value) Then %>
<li><a href="<% Response.Write(strPageName) %>.asp?idSMenu=<%=(rsOurProjects.Fields.Item("SubMenuID").Value)%>"><h3><%=(rsOurProjects.Fields.Item("SubMenuName").Value)%></h3></a></li>
<% End If %>
<% 
OurProjects__index=OurProjects__index+1
OurProjects__numRows=OurProjects__numRows-1
rsOurProjects.MoveNext()
Wend
%>
</ul>
</div>
<!-- /OUR PROJECTS -->