【发布时间】:2019-06-09 15:21:04
【问题描述】:
我目前正在尝试构建一个“ToDo-App”,它可以让我将INSERT 文本输入数据库,然后将显示该数据库。有一个“功能”可以根据他们的ID删除内容。
如果我在我的应用程序中输入两个任务,我会得到两个表记录 ID 1 和 2。当我删除记录 1 时,ID 为 2 的记录仍然存在。因此,ID 2 的记录被列为待办事项列表中的第一项。
我必须在“删除输入字段”中输入“2”才能从列表中删除第一项!我怎样才能让它同步? ID 字段是否适合维护任务的逻辑/应用程序级别顺序?
<!doctype HTML>
<html>
<head>
<meta charset="utf-8">
<title>ToDo-APP</title>
<link rel="stylesheet" href="css/Lil-Helper.css">
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<link rel="stylesheet" href="css/webfonts/all.css">
<link rel="stylesheet" href="css/own.css">
</head>
<?php
$con = mysqli_connect("","root","","todo");
$sql = "SELECT text FROM work";
$res = mysqli_query($con, $sql);
if(isset($_POST["text"]))
{
$eingabe = $_POST["text"];
$query = "INSERT INTO work(text) VALUES('$eingabe')";
mysqli_query($con, $query);
header("Refresh:0");
}
else
{
echo "";
}
if(isset($_POST["del"]))
{
$del = $_POST["del"];
$res = mysqli_query($con, $sql);
$sql2 = "DELETE FROM `work` WHERE `work`.`id` = $del";
mysqli_query($con, $sql2);
header("Refresh:0");
}
else
{
echo "";
}
?>
<body>
<header class="lil-menu lil-flex lil-flex-center align-center">
<a href="index.html" class="lil-brand">
<h3>To-Do</h3>
</a>
<a class="lil-menu-item currentLink" href="index.html">ToDo</a>
<a class="lil-menu-item" href="#archive">Archiv</a>
<a class="lil-menu-item" href="#Sprachen">Sprachen</a>
</header>
<div class="main">
<div class="lil-box">
<h3 class="lil-font-rot lil-big-font lil-space lil-font-style" style="font-size: 4rem;">ToDo</h3>
<div class="lil-box">
<form action="index.php" method="post">
<input class="lil-input" name="text" type="text">
<input type="submit" class="lil-button-green" value="Hinzufügen">
</form>
<ol id="liste" class="lil-list">
<?php
while($dsatz = mysqli_fetch_assoc($res))
{
echo "<li>" .$dsatz["text"] ."</li>";
}
?>
</ol>
<form id="form" action="index.php" method="post">
<input class="lil-input" name="del" type="text">
<input type="submit" class="lil-button-red lil-button-small" value=" Löschen ">
</form>
</div>
</div>
</div>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
var anzahl = $("#liste li").length;
if(anzahl < 1)
{
$("#form").hide();
}
else
{
$("form").show();
}
</script>
</body>
</html>
图片:
【问题讨论】:
-
你想输入列表键而不是 id 吗?
-
是的,因为列表键会自行调整。如果我有 2 个列表,并且我删除了第一个列表,那么第 2 个列表将变为第 1 个列表。所以如果我可以通过列表键(有序列表)删除列表,那将是完美的。
-
为什么需要文本输入字段?通常我们使用复选框来标记项目,并有一些操作按钮,如删除、编辑等。就像在您的 MySQL 仪表板中一样。
-
那也很酷,但我无法想象如何编写代码..
-
建议对数据库表记录的唯一性使用主键,而不是应用程序级别的视图排序。我将在表中创建另一个名为
order的字段。因此,删除将基于order字段,而不是id字段。请记住,如果您必须上下移动任务,id字段将很快显示自己不适合此任务! ;-) 排序/过滤也可能会产生异常结果(随着表的增长和向最大表行增长)。