尝试按公共值对TR行进行分组

时间:2017-05-09 02:48:52

标签: php html mysql html-table

我有“域名”。域名拥有“电话号码”。我要做的是将所有数字与其相关的域组合在一起。

我在逻辑方面迷失了如何知道一个域何时完成而另一个域现在在队列中以知道何时结束一个TR并启动另一个域以便将它们分组为自己的背景颜色或桌子。

我的代码尝试:

$domainsqlquery = "SELECT DOMAIN FROM phone_numbers WHERE `RESELLER_ID` ='".$RID."'";
    if ($domainresult = mysqli_query($conn, $domainsqlquery)) {
        if (mysqli_num_rows($domainresult) > 0) {
            while ($domainrow = mysqli_fetch_assoc($domainresult)) {
                echo '<tr'.(($c = !$c)?' class="odd"':' class="even"').">";
                $sqlquery = "SELECT * FROM phone_numbers WHERE `RESELLER_ID` ='".$RID."' AND `DOMAIN` ='".$domainrow['DOMAIN']."'";
                if ($result = mysqli_query($conn, $sqlquery)) {
                    if(mysqli_num_rows($result)>0){
                        while ($row = mysqli_fetch_assoc($result)) {
                            echo "<td>";
                            echo "<form action='' method='POST'>";
                            echo "<input name='R_number' value='".$row['NUMBER']."' type='hidden'>";
                            echo "<input name='N_ID' value='".$row['ID']."' type='hidden'>";
                            echo $row['DOMAIN'] ." - ". $row['NUMBER'] ." - Cost: <input name='R_cost' value=".$row['COST']." style='width:50px'> <input type='submit' name='btn-drop' value='X'> &nbsp; <input type='submit' name='btn-update' value='UPDATE'> &nbsp;&nbsp; <a href=\"domain=".$row['DOMAIN']."&caldate=04\" target='_blank'>Open Report</a><br>";
                            echo "</form>";
                            echo "</td>";
                        }
                    }
                }
                echo "</tr>";
            }
        }

1 个答案:

答案 0 :(得分:1)

我建议不要循环遍历数据库中的结果并构建html,而是应该循环数据库结果以创建结果的字典(多维数组)。我认为您甚至不需要多次查询该表。

为结果创建一个数组:

$results = [];

使用单个查询,您将拥有所有电话号码的数组,每行都包含域信息。

然后,遍历此数组并构建$results数组。

while ($row = mysqli_fetch_assoc($result)) {
  if (!isset($results[$row['DOMAIN']])) {
    $results[$row['DOMAIN']] = [];
  }

  $results[$row['DOMAIN']][] = $row;
}

有了这个,您将拥有以下形式的多维数组:

[
  'DOMAIN1': [
     [], // row1 
     [], // row2 
   ],
   'DOMAIN2': [
     [],
     [],
   ],
]

您现在可以轻松遍历此数组,其中数组的第一级将为您提供该行所在的域。