【问题标题】:Need help to select and loop a table asp classic需要帮助来选择和循环表格 asp 经典
【发布时间】:2023-04-05 18:26:01
【问题描述】:

我需要一些帮助来正确循环。我错过了一些东西。

我必须从购物车表中选择一个订单,然后通过另一个表中的产品和销售公司地址向客户发送确认邮件。

问题是 1 个订单中的产品可能来自 2 个不同的公司,所以我需要先显示公司 1 的产品,然后显示公司 1 的地址,然后显示公司 2 的产品,然后显示公司 2 的地址.

所以它需要看起来像这样。

产品 1 产品2

公司名称 1 地址1 邮政编码 1 城市 1

产品 3 产品4

公司名称 2 地址2 邮政编码 2 城市2

这就是我现在所拥有的。

sql = " SELECT * FROM cart WHERE ordernummer = "&ordernummer&" group by userId"
set rs = conn.Execute (sql)

do until rs.eof
            uId=rs("userId")
            sql7 = " SELECT * FROM cart WHERE userId = "&uId&""
            set rs7 = conn.Execute (sql7)
            do until rs7.eof
                art=art&"<br>"&rs7("artikel")&" "&rs7("pris")&" kr"
            rs7.movenext
            loop

sql3 = " SELECT * FROM users WHERE userId = "&uId&""
            set rs3 = conn.Execute (sql3)
            foretagsnamn=rs3("foretagsnamn")
            adress=rs3("adress")
            postnr=rs3("postnr")
            postadress=rs3("postadress")
            email=rs3("email")
            hamtatext=rs3("hamtatext")
            kartlank=rs3("kartaemaillink")

            companyinfo="<br><br>"&foretagsnamn&"<br>" &_ 
             adress&"<br>" &_ 
             postnr&"<br>" &_ 
             postadress&"<br>" &_ 
             "<a href=mailto:"&email&" style='text-decoration:none;color:#6d6d72;' target='_blank'>"&email&"</a><br>" &_
             "<a href="&kartlank&" target='_blank' style='text-decoration:none;color:#F90;'>Se karta</a><br>" &_ 
             "Du kan nu h&auml;mta dina varor: <span style='color:#F90;'>"& hamtatext &"</span><br><br>"

            companyinfo2=companyinfo2+companyinfo
            companyinfo=""
            art2=art2+art
            art = ""      
     rs.movenext
     loop



     message="<br>"&art2&companyinfo2
    response.write message&"<br>"

数据库看起来像这样。 其中 userId 是不同的公司。

但是这样,它会显示所有产品,然后仅显示公司 1 信息。 我已经测试了这么多不同的变体,但我做错了。 所以任何意见都非常感谢,谢谢。

【问题讨论】:

  • 你说得对,你遗漏了一些东西...... SQL查询的基本理解(分组,连接等),如何在Classic ASP中正确查询数据无需将应用程序暴露给 SQL 注入。建议你找到一个关于使用经典 ASP 进行网站设计的好的初学者教程,不幸的是 Stack Overflow 不是一个很好的教程格式,很明显你非常需要。
  • 是的 Lankymart,我会解决 SQL 注入问题,但不是今天。是的,我没有你那么好,但这不是我的问题:-)
  • 相信我,这并不是侮辱,只是觉得这里不是问这些问题的正确地方。您需要先阅读一本好教程或一本好书,以更好地理解基本概念。事实上,如果您不维护现有网站,我会恳求您使用诸如 MVC、ORM 等概念的 ASP.Net 之类的新技术,而不是浪费您的时间学习一项正在慢慢被取代的旧技术。就上下文而言,Classic ASP 现在已有 20 多年的历史了。
  • 好吧,我解决了它,即使我做不到你能做的,没有基本的理解和蹩脚的技术;-)
  • 很高兴您找到了解决方案,如果您认为它对其他人有帮助,请随时发布。

标签: asp-classic


【解决方案1】:

这是一个 sql 命令,它将在一个记录集中提供所有信息,然后您可以编写每个产品线,当用户 ID 更改时,您可以编写以前的公司地址(变量中的地址为之前)。

sql="select * from cart c join users u on c.userID=u.userID where c.ordernummer = "&ordernummer&" group by c.userId"

上面的 sql 在两个表中的 userID 列上将两个表连接在一起。表名后面的 c 和 u 只是这些表的较短名称。您也可以使用全名。

然后,在 do until 循环中,您像之前一样写下公司地址信息,然后检查 do until 循环中的第一行,检查 rs.userID 是否不同于你已经保存的变量userID,如果有,写地址。此外,在没有更多行之后,您还需要在循环外写上最后一家公司的地址:)

完整代码(尽可能多地使用您的代码):

sql = " select * from cart c join users u on c.userID=u.userID where c.ordernummer = "&ordernummer&" group by c.userId"
set rs = conn.Execute (sql)
uId=0
do until rs.eof
    if uID<>rs("userId") and uID>0 then
        'This next row is a new company, Write the company information here, before getting new info and writing new rows.
        companyinfo="<br><br>"&foretagsnamn&"<br>" &_ 
         adress&"<br>" &_ 
         postnr&"<br>" &_ 
         postadress&"<br>" &_ 
         "<a href=mailto:"&email&" style='text-decoration:none;color:#6d6d72;' target='_blank'>"&email&"</a><br>" &_
         "<a href="&kartlank&" target='_blank' style='text-decoration:none;color:#F90;'>Se karta</a><br>" &_ 
         "Du kan nu h&auml;mta dina varor: <span style='color:#F90;'>"& hamtatext &"</span><br><br>"

        response.write companyinfo&"<br />"
    end if

    uId=rs("userId")
    foretagsnamn=rs("foretagsnamn")
    adress=rs("adress")
    postnr=rs("postnr")
    postadress=rs("postadress")
    email=rs("email")
    hamtatext=rs("hamtatext")
    kartlank=rs("kartaemaillink")
    'Do a response.write of this data here for each row below.                
    art=art&"<br>"&rs("artikel")&" "&rs("pris")&" kr"
    response.write art&"<br />"
    art = ""      
    rs.movenext
loop

'Remeber to write the last company data outside of the loop aswell:
companyinfo="<br><br>"&foretagsnamn&"<br>" &_ 
 adress&"<br>" &_ 
 postnr&"<br>" &_ 
 postadress&"<br>" &_ 
 "<a href=mailto:"&email&" style='text-decoration:none;color:#6d6d72;' target='_blank'>"&email&"</a><br>" &_
 "<a href="&kartlank&" target='_blank' style='text-decoration:none;color:#F90;'>Se karta</a><br>" &_ 
 "Du kan nu h&auml;mta dina varor: <span style='color:#F90;'>"& hamtatext &"</span><br><br>"
   response.write companyinfo&"<br />"

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多