从HTML表中删除记录后如何调整ID列?

时间:2014-01-03 09:11:19

标签: html mysql sql html-table

在我的index.php页面上,我有一个HTML表格,它显示来自两个不同数据库表(作者和书籍)的数据(作者及其书籍)。 HTML表格中的第一列是Book表格中的ID。

问题是,当我从index.php页面删除一本书时(使用HTML表格中的删除按钮),ID列不会“填补”删除记录后显示的间隙。

例如,如果我在HTML表格中有5行,ID为1,2,3,4,5,并且如果我删除第三行,则ID列将显示为1,2,4,5;所以,我希望专栏能够“适应”新情况,然后进入1,2,3,4(因为表中不再有五本书)。

任何想法怎么做?

以下是代码:

// Loading all authors

$Authors = array();
$result = mysqli_query ($db, "select * from Author");
if (!$result)
    die (mysqli_error ($db));
while ($Author = mysqli_fetch_object ($result))
    $Authors[$Author->ID] = $Author;

// Loading all books

$result = mysqli_query ($db, "select * from Book");
if (!$result)
    die (mysqli_error ($db));

// Listing all the data

while ($Book = mysqli_fetch_object ($result))
{
    echo "<tr>";
    echo "<td> {$Book->ID} </td>";
    echo "<td> {$Authors[$Book->Author_ID]->Name} </td>";
    echo "<td> {$Book->Title} </td>";
    echo "<td> {$Book->Publisher} </td>";
    echo "<td> {$Book->Year} </td>";
    echo "</tr>";
}
  • 我使用的是MySQL服务器5.5.34(MySQL社区服务器GPL)

  • 一位作者可能已经写了一本以上的书

  • Author_ID是Book表中的外键

3 个答案:

答案 0 :(得分:0)

这只是一个建议。我不是说这是最好的解决方案。请考虑一下。

您执行删除查询。

DELETE FROM table_name WHERE ID = 3;

删除后,使用PHP进行选择查询请求,并将数据集设置为数组。

SELECT id, Name from table_name ORDER BY ID ASC;

然后使用循环执行UPDATE。

$id = 1;
foreach($dataset as $item)
{
// Your update query
$sql = "UPDATE table_name SET ID=$id where Name='" . $item['Name'] . "'";
$id++;
}

在插入下一个查询之前,您必须获取id的最大值并将+1值设置为插入查询的ID。这只是一个想法。不是完整的代码。

答案 1 :(得分:0)

不发布ID。而是使用一个变量来计算要显示的列,然后使用for循环来打印变量。

答案 2 :(得分:0)

您根本不应显示ID。数据库ID并不意味着被篡改。

您可以使用CSS来完全不必费心。看看这个:

table {
    counter-reset: rowNumber;
}

table tr {
    counter-increment: rowNumber;
}

table tr td:first-child::before {
    content: counter(rowNumber);
    min-width: 1em;
    margin-right: 0.5em;
}

http://jsfiddle.net/davidThomas/7RyGX/