0

PHP と MySQL を使用して、行内の特定のレコードを定義済みの値で更新しようとしています。新しい値がコードで定義されているため、「入力」を使用したくありません。

テーブルの学生

 id     name     grade   
 1      dave     b       Update< hyperlink to update.php
 2      mark     c       Update
 3      john     e       Update
 4      thomas   d       Update

「更新」をクリックすると、特定の行の成績値を常に定数値「a」に変更したい。ID「1」と「2」の行内で [更新] をクリックしたとします。

望ましい結果:

 id     name     grade   
 1      dave     a       Update
 2      mark     a       Update
 3      john     e       Update
 4      thomas   d       Update 

自分でデータを挿入して送信する入力フィールドを使用してそれを行う方法を知っています。ただし、[更新] をクリックしてデータを変更する必要があります。

これは私がデータを表示する方法です:

  while ($row=mysql_fetch_array($result)){
    echo ("<tr><td>$row[id]</td>");
    echo ("<td>$row[name]</td>");
    echo ("<td>$row[grade]</td>");
    echo ("<td><center><a href=\"udapte.php?id=$row[id]\">Update</a></center></td></tr>");

Update.php

// Connect to server and select databse.

$order = "UPDATE students 
      SET grade='a' 
      WHERE id='id'";
mysql_query($order);

mysql_* が最も安全な方法ではないことはわかっています。ただし、すべてが機能するようになったら、PDO を使用するように php を変更します。

4

2 に答える 2

1

リンクのhrefで更新するレコードのIDを渡します。

まず、page.php で php を使用してこれらのリンクを作成します。Rhose リンクは同じページを呼び出しますが、URL 内に追加のパラメーターがあります。
このコードは、すべてのレコードが配列 $rows に格納されていると想定しています...

foreach ($rows as $row) {

    $h = $row['name'] . ', grade: ' . $row['grade'];
    $h.= ' <a href="page.php?do=update&id=' . $row['id'] . '">change grade</a>';
    echo $h . '<br />';

}

次に、page.php の最初の部分で次のようにします。

if (isset($_GET['do']) && $_GET['do'] == 'update'] && isset($_GET['id])) {

  // enter your update code here
  // pls use mysqli_ or PDO instead of deprecated mysql_!

}
于 2013-03-18T13:20:42.780 に答える
0

update-click の直後にデータを変更したい場合は、update.php からページにリダイレクトする必要があります。

header('location:currentpage.php');

または、Ajax を使用することもできます。

あなたのコードが上記の内容と完全に一致している場合:

$order = "UPDATE students 
  SET grade='a' 
  WHERE id='id'";
 mysql_query($order);

問題は、id 変数の近くにドル記号 ($) がないことです。そのはず

  ... id='$id'";
于 2013-03-18T13:18:32.313 に答える