【问题标题】:Retrieving and Presenting SQL Joined Table Records with PHP, Sqlite (or MySql), and HTML使用 PHP、Sqlite(或 MySql)和 HTML 检索和呈现 SQL 连接表记录
【发布时间】:2009-12-07 06:30:06
【问题描述】:

我有一个 Sqlite 数据库,其中包含一个由公司信息 (Companies) 组成的表和一个由产品信息 (Products) 组成的表。 Companies 表 ID 是 Company_Name。它通过 Company_Name 与 Products 表连接。例如,公司“A”可以通过 Company_Name = ProductID(ProductID 由公司名称组成)上的内部连接 ​​Companies 关联许多产品。

我正在尝试使用 php while 循环显示此信息,以便列出公司及其各自产品。我无法弄清楚如何做到这一点。我可以循环单个记录,例如一个公司有一种产品,但我不能列出一个公司有多种产品。以下是我想要实现的目标:

公司“A” - 位置 CA 产品 1、产品 2、产品 3

公司“C” - 位置 CA 产品 3、产品 4、产品 6

公司“F” - 位置 CA 产品 1、产品 8

在本例中,查询将提取加利福尼亚 (CA) 的所有公司。

我的代码如下,但是不行:

//srchtext is the value in a HTML text box//
$txt = $_GET["srchtext"];
$dbstate = @$db->query("SELECT Company.Company_Name, Company.Company_City, Company.Company_State, Company.Company_Website, Company.Company_Service, Categories.Category_Name, Products.Product_Name FROM Company INNER JOIN Products On Company_Name = ProductID WHERE Company_State = '$txt'");
 while ($hmstate = $dbstate->fetchArray()){
echo "<ul>";
echo "<font id='srchclr'; color='#666666';>";
echo '<strong>'.$hmstate['Company_Name'].'</strong>'.'<br>'.$hmstate['Company_City'].','.$hmstate['Company_State'].'<br>'.
'<a href='.$hmstate['Company_Website'].'>'.$hmstate['Company_Website'].'</a>'.'<br>'.'<ul>'.
'<br>'.'<strong>Products or Services Provided by this Company:</strong>'.'<br>'.'<br>'.'<ul>'.$hmstate['Company_Service'].'</ul>';
echo "<br>";
echo "<strong>Company Product Category:</strong>";
echo "<br>";
echo "<br>";
  //Product loop//
  While ($hmstate = $dbstate->fetchArray()) {
  echo "<ul>";
  echo $hmstate['Product_Name'];
  echo "</ul>";
  }
}

基本上,我的代码为我提供了加利福尼亚的一家公司,并列出了与加利福尼亚所有公司相关的所有产品:

公司“A” - 位置 CA 产品一、产品二、产品三、产品三、产品四、产品六、产品一、产品八

我尝试取出第二个 php“while 循环”,但我会得到以下结果:

公司“A” - 位置 CA 产品1

公司“A” - 位置 CA 产品2

公司“A” - 位置 CA 产品 3...

虽然我使用的是 Sqlite,但如果有人在 MySql 或任何其他 sql Db 中有一个示例,那也会很有帮助。我认为我的问题在于查询和 php“while 循环”。

【问题讨论】:

    标签: php sql sqlite inner-join while-loop


    【解决方案1】:

    您的产品 while 循环正在获取所有产品,因为您在 Company_Name 更改时没有“中断”。

    我的 PHP 不太好,但可能是这样的:

    .
    .
    (Your company PHP code here)
    .
    .
    
    //Product loop//
    if ($hmstate = $dbstate->fetchArray()) {
    $fetch_okay = true;
    $Current_Company_name = $hmstate['Company_Name'];
    $same_Company = true;
    }
    
    While (fetch_okay && same_Company) {
      echo "<ul>";
      echo $hmstate['Product_Name'];
      echo "</ul>";
    
      $fetch_okay = false;
      $same_Company_Name = false;
      if ($hmstate = $dbstate->fetchArray()) {
        $fetch_okay = true;
        if ($hmstate['Company_Name'] = $current_Company_name) {
          $same_Company_Name = true;
        }
      }
    }
    

    【讨论】:

    • 您好 Sigersted - 感谢您的帮助。我还不能让代码工作,但你已经为我指明了正确的方向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2021-05-24
    • 2014-08-09
    相关资源
    最近更新 更多