首先:我是 MYSQL/PHP 的新手:)。我正在编写一个简单的脚本来学习 php/mysql,但我遇到了几个问题。如果这个网站上已经有人问过其中一些问题,我真的很抱歉,但我确实搜索了它们,但它们并没有与我的意图结合起来,所以请不要只是 -1 这篇文章!
我有一个包含一些表的数据库。其中一个表名为“leerlingen”,我想将数据添加到该表中。我来自荷兰,“leerlingen”的意思是“学生”。因此,我想在表中添加一名学生。该表有 4 个内容:leerling_id、leerling_naam、leerling_nummer 和 klas_id。最后一张很奇怪吧?不,因为我有另一个表,只有一列:klas_id。不过那是以后的事了。
“Klas”的意思是“团体”(是的,我正在学你们荷兰语哈哈:D),我有几个团体。但是,您可以通过其他形式添加新组。
让我们开始吧:我创建了一个 HTML 表单:
<!-- start form -->
<form action="insert_leerling.php" method="post">
<input type="text" name="leerling_naam" class="inp-form">
<input type="text" name="leerling_nummer" class="inp-form">
<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("sms", $con);
$query = "SELECT * FROM klas ORDER BY klas_id";
$result = mysql_query($query);
echo "<select class='inp-form' id='klas_id'>\n";
while ($row = mysql_fetch_assoc($result)) {
if (1 == 1) {
echo '<option name="'.htmlspecialchars($row['klas_id']).'">'.htmlspecialchars($row['klas_id']).'</option>';
}
}
echo "</select>";
?>
<input type="submit" value="Voeg toe" class="form-submit" />
</form>
<!-- end form -->
因此,插入了3个内容:leerling_naam(表示学生姓名)、leerling_nummer(表示学号=手机号码)和klas_id。我从小 php 脚本中获取 klas_id,因此用户会看到包含所有 klas(组)的 html 下拉菜单。当我运行表单时,它会将您发送到这段代码(另一页):
<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("sms", $con);
$leerling_naam = $_POST['leerling_naam'];
$leerling_nummer = $_POST['leerling_nummer'];
$klas_id = $_POST['klas_id'];
$sql_insert = mysql_query("
INSERT INTO leerlingen
(leerling_naam, leerling_nummer, klas_id)
VALUES
('$leerling_naam', '$leerling_nummer', '$klas_id')
");
?>
现在,问题来了..
- “klas_id”未插入表中,它只是 blanco。
- 我希望第一列(leerling_id,这是 mysql 表中的正常 id)始终为 +1,我没有使用那段代码。当我添加新数据时,leerling_id 会+1,但是当我删除第一行时(假设我踢了一个学生),数据并没有自动更新(哈哈,“更新”这个词)<
如果您已经读完这里:干得好。我的英语不是很好(如果你发现一些戏剧性的语法错误,你可以告诉我:))。我也明白这很难理解,对此感到抱歉..
谢谢!
最佳答案
echo "<select class='inp-form' id='klas_id'>\n";
应该阅读
echo "<select name='klas_id' class='inp-form' id='klas_id'>\n";
您没有为选择的表单元素指定名称。在这种情况下,ID 和名称不可互换。
回答你的第二个问题,为什么你希望数据完全连续?没有简单的方法可以使数据库记录始终连续,特别是如果这是行的主键。
我建议不要从数据库中删除记录,而是“软记录删除”的一个好例子,即向表中添加一个名为“active”的新列,数据类型为 ENUM('Y','N')
。如果您想删除它们,只需将此字段标记为 'N'
,并且在查询学生时,仅查找带有 'Y'
的记录在事件列中。
如果您想在查询中返回带有连续编号的学生,请查看行号:@rownum:=@rownum+1
尽管这个号码绝对没有直接链接到 id
在数据库中。
关于php - 通过html形式在mysql中插入数据(以及更多..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14015265/