Php 在HTML中显示mysql表,合并第二列中具有相同值的所有行
下面的php代码将mysql表显示为html表。Mysql表包含4列:日期、id、项目、数量 在html表格中显示时,我想合并第二列中具有相同“id”的所有行 非常感谢您的帮助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%
$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
属性。我认为这需要通过记录集两次。可能重复谢谢你纠正这个问题。看看我们