0

まず第一に、私はMYSQL/PHPが初めてです:)。私は php/mysql を学ぶための簡単なスクリプトに取り組んでいますが、いくつかの問題で立ち往生しています。これらのいくつかがこのウェブサイトですでに質問されている場合は本当に申し訳ありませんが、それらを検索しましたが、私の意図と組み合わせて機能しなかったため、この投稿に-1しないでください!

いくつかのテーブルを含むデータベースがあります。テーブルの 1 つは「leerlingen」という名前で、そのテーブルにデータを追加したいと考えています。私はオランダ出身で、「leerlingen」は「学生」を意味します。そこで、学生をテーブルに追加したいと思います。テーブルには、leerling_id、leerling_naam、leerling_nummer、klas_id の 4 つがあります。最後は変ですよね?いいえ、klas_id という 1 つの列だけを持つ別のテーブルがあるためです。ただし、それは後で説明します。

「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  -->

つまり、leerling_naam(生徒名の意味)、leerling_nummer(生徒番号=携帯電話番号の意味)、klas_idの3つが挿入されています。小さな 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」はテーブルに挿入されず、単に空白です。
  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 と名前は交換できません。

2 番目の質問への回答として、データを完全にシーケンシャルにしたいのはなぜですか? 特にこれが行の主キーである場合、データベース レコードを常に連続させる簡単な方法はありません。

データベースからレコードを削除するのではなく、これが「ソフト レコード削除」の良いケースであることをお勧めします。つまり、データ型がENUM('Y','N'). それらを削除したい場合は、単にこのフィールドを としてマークし、学生を照会するときに、アクティブな列に が'N'あるレコードのみを探します。'Y'

クエリで連番を使用して生徒を返したい場合は、行番号を見てください。ただし、この番号にはデータベース内の@rownum:=@rownum+1への直接リンクはまったくありません。id

于 2012-12-23T22:43:42.363 に答える