我有一个建立网站的MySQL数据库,我使用下面显示的PHP代码在我的页面上显示MySQL数据库中的表的内容。我想知道的是,是否有一种方法可以合并具有相同值的列的行。
注意:我不希望更改发生在数据库中,而只是在页面上显示的html表上发生 这是我使用的代码
$arr = array();
while($row = mysql_fetch_row($result)) {
if (empty($arr[$row[0]])) $arr[$row[0]] = array();
$arr[$row[0]] [$row[1]] [$row[2]] [$row[3]] [$row[4]] [$row[5]] [$row[6]][] = $row[7];
}
foreach ($arr as $key => $subordinatearr) {
echo '<tr>';
echo '<td rowspan="', count($subordinatearr), '">', $key, '</td>';
echo '<td>', $subordinatearr[0], '</td>';
echo '<td>', $subordinatearr[1], '</td>';
echo '<td>', $subordinatearr[2], '</td>';
echo '<td>', $subordinatearr[3], '</td>';
echo '<td>', $subordinatearr[4], '</td>';
echo '<td>', $subordinatearr[5], '</td>';
echo '<td>', $subordinatearr[6], '</td>';
if (count($subordinatearr) > 1) {
for ($i = 1; $i < count($subordinatearr); $i++) {
echo '</tr><tr><td>', $subordinatearr[$i], '</td>';
}
}
echo '</tr>';
}
答案 0 :(得分:1)
请将此脚本更改为
while($row = mysql_fetch_row($result)) {
echo "<tr>";
echo "<td>".$row['Location']."</td>";
echo "<td>".$row['Vessel ']."</td>";
echo "</tr>";
}
答案 1 :(得分:0)
我没有清楚地理解这一部分 - “合并具有相同值的列的行。” 如果您不想显示列的重复记录,可以通过两种方式完成 -
将特定列的值保留在数组中。在显示该列之前,使用is_array()检查数组中是否存在该值。如果存在,则跳过,否则显示并添加到数组中。
在进行查询时,使用DISTINCT(col_name)仅获取唯一值。
答案 2 :(得分:0)
将结果存储在数组中。
$arr = array();
while($row = mysql_fetch_row($result)) {
if (empty($arr[$row[0]]) $arr[$row[0]] = array();
$arr[$row[0]][] = $row[1];
}
然后使用rowspan来放置数组,如下所示:
foreach ($arr as $key => $subordinatearr) {
echo '<tr>';
echo '<td rowspan="', count($subordinatearr), '">', $key, '</td>';
echo '<td>', $subordinatearr[0], '</td>';
if (count($subordinatearr) > 1) {
for ($i = 1; $i < count($subordinatearr); $i++) {
echo '</tr><tr><td>', $subordinatearr[$i], '</td>';
}
}
echo '</tr>';
}
如果数据太大,可能会导致内存错误。