【问题标题】:classic ASP recordset problem经典的 ASP 记录集问题
【发布时间】:2010-09-22 00:49:33
【问题描述】:

您好,我需要通过以下方式从 db(MSSQL) 中获取数据:

<div id="slider">
            <div class="scroll">

                <div class="scrollContainer">
                    <div class="listings">
                        <ul class="clear" id="navigation-feature">
                            <li class="list1" id="feature-tab1">
                                <a href="#"><img src="img/thumbnails/featured-1.jpg" alt="" title="" /><label>Francesca B&B</label>From €80</a>
                            </li>
                            <li class="list2" id="feature-tab2">
                                <a href="#"><img src="img/thumbnails/featured-2.jpg" alt="" title="" /><label>Condo Real Estate</label>$600</a>

                            </li>
                            <li class="list1" id="feature-tab3">
                                <a href="#"><img src="img/thumbnails/featured-3.jpg" alt="" title="" /><label>Washington House</label>$400</a>
                            </li>
                            <li class="list2" id="feature-tab4">
                                <a href="#"><img src="img/thumbnails/featured-4.jpg" alt="" title="" /><label>Cambridge</label>$650</a>
                            </li>

                        </ul>
                    </div>
                    <div class="listings">
                        <ul class="clear" id="navigation-feature2">
                            <li class="list1" id="feature-tab5">
                                <a href="#"><img src="img/thumbnails/featured-1.jpg" alt="" title="" /><label>Beach House</label>$900</a>
                            </li>
                            <li class="list2" id="feature-tab6">

                                <a href="#"><img src="img/thumbnails/featured-2.jpg" alt="" title="" /><label>Condo Real Estate</label>$600</a>
                            </li>
                            <li class="list1" id="feature-tab7">
                                <a href="#"><img src="img/thumbnails/featured-3.jpg" alt="" title="" /><label>Washington House</label>$400</a>
                            </li>
                            <li class="list2" id="feature-tab8">
                                <a href="#"><img src="img/thumbnails/featured-4.jpg" alt="" title="" /><label>Cambridge</label>$650</a>

                            </li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </div>

我不知道如何实现记录集从4到for记录然后解决问题
<div class="listings"> <ul class="clear" id="navigation-feature2"> 正如您所见,在 4 条记录之后应该还会增加 navigation-feature2 然后是 navigation-feature3 。

谢谢

现在我有了这个并且不做这个把戏:

 <div id="slider">
            <div class="scroll" >
                <div class="scrollContainer">

                         <%Set oRS2 = Server.CreateObject("ADODB.Recordset")

                        oRS2.Open "Select * FROM prop_home where packageid='2'",xDb_Conn_Str,3,3
                        Set picRS2 = Server.CreateObject("ADODB.Recordset")
                        if not ors2.eof then


                        %>
                <div class="listings">
                        <ul class="clear" id="navigation-feature">
                <%do while not ors2.eof
                counter=counter+1
     picRS2.Open "Select picture FROM pictures where propid='"&ors2("propid")&"'",xDb_Conn_Str

                %>
                            <li class="list1" id="feature-tab<%=counter%>">
                                <a href="#"><img src="admin/uploads/<%=picrs2("picture")%>" alt="" title="" style="height:auto !important;max-height:104px;max-width:170px;width:auto !important;"/><label><%=ors2("name")%>From €<%=ors2("pricemin")%></label></a>
                            </li>
                            <%
                            picrs2.close
                            ors2.movenext
                            loop

                            end if%>

                        </ul>
                    </div>

                </div>
            </div>
        </div>
    </div>

【问题讨论】:

  • 当我说数据时,我指的是来自 db 的图像名称、属性名称和价格

标签: asp-classic


【解决方案1】:

如果 mod 4 为 0,您需要询问柜台并更改列表编号。 或者一个简单的方法是添加第二个计数器,每 4 个周期重置一次

像这样(简化代码):

<div id="slider">
  <div class="scroll" >
    <div class="scrollContainer">
      <%Set oRS2 = Server.CreateObject("ADODB.Recordset")
      oRS2.Open "..."
      Set picRS2 = Server.CreateObject("ADODB.Recordset")
      dim FeatureCounter 
      FeatureCounter = 1
      if not ors2.eof then
         do while not ors2.eof
         counter=counter+1

         If featureCounter = 1 then
            %>
            <div class="listings">
               <ul class="clear" id="navigation-feature<%= trim(featureCounter)%>">
            <%
          end if
          ''// not good to open a new recordset for every record, 
          ''// but leave it here because is not the scope of the answer
          picRS2.Open "..."
          ''// you should also check if picRS2 not EOF
           %>
             <li class="list1" id="feature-tab<%=counter%>">
                <a href="#"><img src="..."></a>
             </li>
           <%
           picrs2.close


           If FeatureCounter = 4 then
              FeatureCounter = 1 ''//reset the counter
              %>
                </ul>
                </div>
              <%
           else
              FeatureCounter = FeatureCounter + 1
           end if


           ors2.movenext
           loop

           end if%>

        </div>
    </div>
</div>

【讨论】:

  • 非常感谢您,但不幸的是不起作用,请看:tourscript.com/gabriele2/default3.asp 是您一直生成的示例
  • 您确定在底部添加了FeatureCounter = FeatureCounter + 1 行吗?
  • 功能计数器始终为 1,在 4 条记录永远不会达到 4 后应变为 2
  • 但是问题是: id="navigation-feature" 首先不是 1,其次是 id="navigation-feature2" 如果您查看我的初始 HTML,然后每个 li 应该有一个交替类list1 和 list2
  • Teodor:是的,我想我遗漏了一些细节,但你肯定没看错。
【解决方案2】:

看起来您正在循环中关闭数据库查询

我建议将您的数据读入数组并循环遍历这些数组,而不是混合数据访问和呈现逻辑。

编辑

怎么样

<div id="slider">
    <div class="scroll" >
        <div class="scrollContainer">
<%
    Set oRS = Server.CreateObject("ADODB.Recordset")

    oRS.Open "Select ph.*, pic.picture FROM prop_home ph INNER JOIN pictures pic ON ph.propid = pictures.propid where ph.packageid='2'", xDb_Conn_Str, 3, 3

    If Not oRS.eof Then
%>
        <div class="listings">
            <ul class="clear" id="navigation-feature">

<%
         Do While Not oRS.eof
             counter = counter + 1
%>
                <li class="list1" id="feature-tab<%=counter%>">
                    <a href="#">
                        <img src="admin/uploads/<%=oRS("picture")%>" style="height:auto !important;max-height:104px;max-width:170px;width:auto !important;"/>
                        <label>
                            <%=oRS("name")%>From €<%=oRS("pricemin")%>
                        </label>
                    </a>
                 </li>
<%
             oRS.MoveNext
         Loop

         oRS.Close
%>
             </ul>
         </div>

<%

     End If
%>
     </div>
  </div>

我也可能在这里犯错,但你又关闭了一个&lt;div/&gt; than you open and you should enclose the(以及周围的&lt;div/&gt;) inside theIf 块。

【讨论】:

  • picrs2.close 应该在循环内,否则你会得到记录集打开的错误(ADODB.Recordset error '800a0e79' 对象打开时不允许操作。)不要这么认为?关于 getrow() 是的,在我这样玩的那一刻,我会在最终的生产服务器中使用它.. 但你没有回答我的问题
  • @Teodor:对,我把 picrs2 和 ors2 混在一起了。在一个查询中查询所有内容怎么样?
  • @Teodor:看我更新的答案 - 神奇的数字 4 仍然有点不清楚。
  • Filburt 一处房产有不止一张图片,因此您的内部连接将无法正常工作
  • 忘了告诉你 prop_home 是一个视图,所以我设法使用内部联接中的子查询解决了内部联接问题
【解决方案3】:

成功了……

  <div id="slider">
            <div class="scroll">
                <div class="scrollContainer">
                     <%Set oRS2 = Server.CreateObject("ADODB.Recordset")

                        oRS2.Open "Select * FROM prop_home where packageid='2'",xDb_Conn_Str,3,3
                        Set picRS2 = Server.CreateObject("ADODB.Recordset")
                        if not ors2.eof then
                        dim FeatureCounter 
                          FeatureCounter = 1
                        othercounter=1 
                         do while not ors2.eof

                          counter=counter+1
                        if   featureCounter =1 then

        %>
                <div class="listings">
                         <ul class="clear" id="navigation-feature<%if othercounter <> 1 then  response.Write(othercounter) end if%>">
                   <%end if%>



                <%
     picRS2.Open "Select picture FROM pictures where propid='"&ors2("propid")&"'",xDb_Conn_Str

                If counter MOD 2 = 0 Then
                cl=2
                else 
                cl=1
                end if

                %>
                            <li class="list<%=cl%>" id="feature-tab<%=counter%>">
                                <a href="#"><img src="admin/uploads/<%=picrs2("picture")%>" alt="" title="" style="height:auto !important;max-height:104px;max-width:170px;width:auto !important;"/><label><%=ors2("name")%>From €<%=ors2("pricemin")%></label></a>
                            </li>
                           <% picrs2.close


       If FeatureCounter mod 4 = 0 then
         FeatureCounter = 1 ''//reset the counter

         othercounter = othercounter+1

 %>
                        </ul>
                    </div>
                    <%
        else
          FeatureCounter = FeatureCounter + 1
       end if


       ors2.movenext
       loop

       end if%>   </ul>
       </div>
                </div>
            </div>
        </div>
    </div>

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签