Php 在HTML中显示mysql表,合并第二列中具有相同值的所有行

Php 在HTML中显示mysql表,合并第二列中具有相同值的所有行,php,html,mysql,Php,Html,Mysql,下面的php代码将mysql表显示为html表。Mysql表包含4列:日期、id、项目、数量 在html表格中显示时,我想合并第二列中具有相同“id”的所有行 非常感谢您的帮助 $sql = "SELECT * FROM table_name"; $result = mysqli_query($db, $sql); if ($result==True) { echo "<table border='3' style='position:absolute;width:60%

下面的php代码将mysql表显示为html表。Mysql表包含4列:日期、id、项目、数量

在html表格中显示时,我想合并第二列中具有相同“id”的所有行

非常感谢您的帮助

$sql = "SELECT * FROM table_name";
$result = mysqli_query($db, $sql);

if ($result==True) 
{   
    echo "<table border='3' style='position:absolute;width:60%;top:20px;left:20%;text-align:center;border-collapse: collapse;'>";

    echo "<tr>";
        echo "<th>Date</th>";
        echo "<th>id</th>";
        echo "<th>item</th>";
        echo "<th>quantity</th>";       
    echo "</tr>";

    while($row = mysqli_fetch_row($result))
    {
        echo "<tr>";            
            echo "<td>$row[1]</td>";
            echo "<td>$row[2]</td>";
            echo "<td>$row[3]</td>";
            echo "<td>$row[4]</td>";            
        echo "</tr>";
    }

    mysqli_close($db);
} 
我希望我的html表如下所示: (行1、2和3合并,因为它具有相同的id)


将group by与列名称一起使用

$sql = "SELECT * FROM table_name GROUP BY `id`";

将group by与列名称一起使用

$sql = "SELECT * FROM table_name GROUP BY `id`";

因为这似乎不是最好的解决方案,但它应该是有效的

$check=array();

while($row = mysqli_fetch_row($result))
    {
      if(in_array($row[2],$check)
        $row[2]="";
        echo "<tr>";            
            echo "<td>$row[1]</td>";
            echo "<td>$row[2]</td>";
            echo "<td>$row[3]</td>";
            echo "<td>$row[4]</td>";            
        echo "</tr>";
        $check[]=$row[2];
    }
$check=array();
while($row=mysqli\u fetch\u row($result))
{
if(在数组中($row[2],$check)
$row[2]=“”;
回声“;
回显“$row[1]”;
回显“$row[2]”;
回显“$row[3]”;
回显“$row[4]”;
回声“;
$check[]=$row[2];
}

因为这似乎不是最好的解决方案,但它应该会起作用。试试看

$check=array();

while($row = mysqli_fetch_row($result))
    {
      if(in_array($row[2],$check)
        $row[2]="";
        echo "<tr>";            
            echo "<td>$row[1]</td>";
            echo "<td>$row[2]</td>";
            echo "<td>$row[3]</td>";
            echo "<td>$row[4]</td>";            
        echo "</tr>";
        $check[]=$row[2];
    }
$check=array();
while($row=mysqli\u fetch\u row($result))
{
if(在数组中($row[2],$check)
$row[2]=“”;
回声“;
回显“$row[1]”;
回显“$row[2]”;
回显“$row[3]”;
回显“$row[4]”;
回声“;
$check[]=$row[2];
}
我已更新了答案。请查看并重试
//在某个临时数组中设置所有值
$array_date=“”;
$array_id=“”;
$array_item=“”;
$array_qty=“”;
$array_rowspan=“”;
$i=0;
while($row=mysqli\u fetch\u row($result))
{
如果($tempid!=$row[1]){
$tempid=$row[1];
$rowspan=1;
$array_date[]=$row[0];
$array_id[]=$row[1];
$array_item[]=$row[2];
$array_qty[]=$row[3];
$array_rowspan[$i]=$rowspan;
//设置另一个临时值以设置加工类别id中的相同行间距
$same_id=1;
}否则{
$rowspan++;
$array_date[]=$row[0];
$array_id[]=$row[1];
$array_item[]=$row[2];
$array_qty[]=$row[3];
//设置另一个临时值以设置加工类别id中的相同行间距
$same_id++;
对于($j=0;$j$val){
如果($tempid2!=$val){
$tempid2=$val;
回声“;
回显“$array_date[$key]”;
回显“$array_id[$key]”;
回显“$array_项[$key]”;
回显“$array\u数量[$key]”;
回声“;
}否则{
回声“;
回显“$array_date[$key]”;
回显“$array_项[$key]”;
回显“$array\u数量[$key]”;
回声“;
}
}
回声“;
请尝试此

我已更新了答案。请查看并重试
//在某个临时数组中设置所有值
$array_date=“”;
$array_id=“”;
$array_item=“”;
$array_qty=“”;
$array_rowspan=“”;
$i=0;
while($row=mysqli\u fetch\u row($result))
{
如果($tempid!=$row[1]){
$tempid=$row[1];
$rowspan=1;
$array_date[]=$row[0];
$array_id[]=$row[1];
$array_item[]=$row[2];
$array_qty[]=$row[3];
$array_rowspan[$i]=$rowspan;
//设置另一个临时值以设置加工类别id中的相同行间距
$same_id=1;
}否则{
$rowspan++;
$array_date[]=$row[0];
$array_id[]=$row[1];
$array_item[]=$row[2];
$array_qty[]=$row[3];
//设置另一个临时值以设置加工类别id中的相同行间距
$same_id++;
对于($j=0;$j$val){
如果($tempid2!=$val){
$tempid2=$val;
回声“;
回显“$array_date[$key]”;
回显“$array_id[$key]”;
回显“$array_项[$key]”;
回显“$array\u数量[$key]”;
回声“;
}否则{
回声“;
回显“$array_date[$key]”;
回显“$array_项[$key]”;
回显“$array\u数量[$key]”;
回声“;
}
}
回声“;

如果您不介意在数据中多循环一段时间(和一点),请尝试此操作,您可以使用rowspan

$table = array();
while($row = mysqli_fetch_row($result)) {
    $table[$row[1]][] = array($row[0],$row[2],$row[3]);
}

echo "<table border='3' style='position:absolute;width:60%;top:20px;left:20%;text-align:center;border-collapse: collapse;'>";
echo "<thead>";
    echo "<tr>";
        echo "<th>Date</th>";
        echo "<th>id</th>";
        echo "<th>item</th>";
        echo "<th>quantity</th>";
    echo "</tr>";
echo "</thead>";
echo "<tbody>";
foreach($table as $id=>$idRows) {
    $rowspan = count($idRows);
    for($i = 0; $i < $rowspan; $i++) {
        echo "<tr>";
            echo "<td>{$idRows[$i][0]}</td>";
            if($i === 0)
                echo "<td rowspan={$rowspan}>{$id}</td>";
            echo "<td>{$idRows[$i][1]}</td>";
            echo "<td>{$idRows[$i][2]}</td>";
        echo "</tr>";
    }
}
echo "</tbody>";
echo "</table>";
$table=array();
while($row=mysqli\u fetch\u row($result)){
$table[$row[1]][]=数组($row[0]、$row[2]、$row[3]);
}
回声“;
回声“;
回声“;
呼应“日期”;
回声“id”;
回应“项目”;
回声“量”;
回声“;
回声“;
回声“;
foreach($id=>$idRows的表格){
$rowspan=计数($idRows);
对于($i=0;$i<$rowspan;$i++){
回声“;
回显“{$idRows[$i][0]}”;
如果($i==0)
回显“{$id}”;
回显“{$idRows[$i][1]}”;
回显“{$idRows[$i][2]}”;
回声“;
}
}
回声“;
回声“;

如果您不介意在数据中多循环一段时间(和一点),可以使用rowspan来完成

$table = array();
while($row = mysqli_fetch_row($result)) {
    $table[$row[1]][] = array($row[0],$row[2],$row[3]);
}

echo "<table border='3' style='position:absolute;width:60%;top:20px;left:20%;text-align:center;border-collapse: collapse;'>";
echo "<thead>";
    echo "<tr>";
        echo "<th>Date</th>";
        echo "<th>id</th>";
        echo "<th>item</th>";
        echo "<th>quantity</th>";
    echo "</tr>";
echo "</thead>";
echo "<tbody>";
foreach($table as $id=>$idRows) {
    $rowspan = count($idRows);
    for($i = 0; $i < $rowspan; $i++) {
        echo "<tr>";
            echo "<td>{$idRows[$i][0]}</td>";
            if($i === 0)
                echo "<td rowspan={$rowspan}>{$id}</td>";
            echo "<td>{$idRows[$i][1]}</td>";
            echo "<td>{$idRows[$i][2]}</td>";
        echo "</tr>";
    }
}
echo "</tbody>";
echo "</table>";
$table=array();
while($row=mysqli\u fetch\u row($result)){
$table[$row[1]][]=数组($row[0]、$row[2]、$row[3]);
}
回声“;
回声“;
回声“;
呼应“日期”;
回声“id”;
回应“项目”;
回声“量”;
回声“;
回声“;
回声“;
foreach($id=>$idRows的表格){
$rowspan=计数($idRows);
对于($i=0;$i<$rowspan;$i++){
回声“;
回显“{$idRows[$i][0]}”;
如果($i==0)
回显“{$id}”;
回显“{$idRows[$i][1]}”;
回显“{$idRows[$i][2]}”;
回声“;
}
}
回声“;
回声“;

感谢您纠正了这个问题。请研究使用s rowspan属性,我认为您不可能一次通过记录集,因为您需要做的是对第二列中的
TD
应用具有适当计数的
rowspan
属性。我认为这需要通过记录集两次。可能重复谢谢你纠正这个问题。看看我们