0

首先:我是 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')
                         ");

?>

现在,这里有问题..

  1. 'klas_id' 没有插入到表中,它只是 blanco。
  2. 我希望第一列(leerling_id,这是 mysql 表中的正常 id)一直为 +1,我没有使用那段代码。当我添加新数据时,leerling_id 为 +1,但是当我删除第一行时(假设我踢了一个学生),数据并没有自己约会(哈哈,“更新”这个词)

如果你已经读到这里:干得好。我的英语不是那么好(如果你发现一些戏剧性的语法错误,你可以告诉我:))。我也明白这很难理解,对此感到抱歉..

谢谢!

4

1 回答 1

2
echo "<select class='inp-form' id='klas_id'>\n";

应该读

echo "<select name='klas_id' class='inp-form' id='klas_id'>\n";

您没有为您的选择表单元素命名。在这种情况下,Id 和 Name 不可互换。

在回答您的第二个问题时,您为什么希望数据完全按顺序排列?没有简单的方法可以使数据库记录始终按顺序排列,尤其是当这是行的主键时。

而不是从数据库中删除记录,我建议这是“软记录删除”的一个很好的例子,也就是说,在您的表中添加一个名为“活动”的新列,其数据类型为ENUM('Y','N'). 如果要删除,只需将此字段标记为'N',查询学生时,只查找'Y'活动列中带有a的记录。

如果您想在查询中返回带有序号的学生,请查看行号:@rownum:=@rownum+1尽管此数字绝对id与数据库中的 没有直接链接。

于 2012-12-23T22:43:42.363 回答