2012-02-24 22 views
0

私はデータベースからレコードを取り出し、 "delete"ボタンを押したときに実行するPHPファイルを作成しました。このコードはデータベースからレコードを削除するという意味では機能しますが、データベース内の最初のレコードは削除され、テーブルのRequest IDに関連するレコードは削除されません。すべてのヘルプは素晴らしいPHP - MySQLレコードを削除する

表のようになります。

<?php 

    //3. Perform database query 
     $result = mysql_query("SELECT * FROM Request 
     WHERE DepID = 'CO' 
     AND Status = 'P'", $connection); 
     if(!$result){ 
      die("Database query failed: " . mysql_error()); 
     } 

    //4. Use Returned Data 
    while ($row = mysql_fetch_array($result)) { 
    $row['ReqID']; 

     echo "<tr>"; 
     echo "<td class='req' align='center'>".$row['ReqID']."</td>"; 
     echo "<td class='req' align='center'>".$row['ModTitle']."</td>"; 
     echo "<td class='req' align='center'>".$row['BuildingID']."</td>"; 
     echo "<td class='req' align='center'>".$row['RoomID']."</td>"; 
     echo "<td class='req' align='center'>".$row['Priority']."</td>"; 
     echo "<td class='req' align='center'>".$row['W1']."</td>"; 
     echo "<td class='req' align='center'>".$row['P1']."</td>"; 
     echo "<td class='req' align='center'><a href=''><img height='18px' src='images/edit.png'></a></td>"; 
     echo "<td class='req' align='center'><a href='deletereq.php'><img src='images/exit.png'></a></td>"; 
     echo "</tr>"; 




    } 
?> 

そしてこれはdeletereq.phpファイルです:

<?php require_once("includes/connection.php"); ?> 

<?php 

    //3. Perform database query 
     $result = mysql_query("SELECT * FROM Request 
     WHERE DepID = 'CO' 
     AND Status = 'P'", $connection); 
     if(!$result){ 
      die("Database query failed: " . mysql_error()); 
     } 

    //4. Use Returned Data 
    while ($row = mysql_fetch_array($result)) { 
    $row['ReqID']; 


$result2 = mysql_query("DELETE FROM Request 
         WHERE ReqID = {$row['ReqID']} LIMIT 1", $connection); 
    if (mysql_affected_rows() == 1) { 
       redirect_to("content.php"); 
      } else { 
      //deletion failed 
      echo "<h1>Request Deletion Failed.</h1>"; 
      echo "<p>" . mysql_error() . "</p>"; 
      echo "<a href=\"request.php\"> Return to request</a>"; 
     } 
     } 
?> 

<?php mysql_close($connection); ?> 
+0

$ row ['ReqID']の値があなたの削除クエリのどこにあると思いますか? –

+0

レコードの値は、SQLデータベースから来る一意のIDです – ScottD

+0

うーん。あなたがなぜそれが最初の行を削除しているのに驚いているのかわかりません。あなたの最初のコードは、削除したいIDの要求に沿って2番目のページに渡す必要があります。それはしていない。 –

答えて

2
表示ページ

echo "<td class='req' align='center'><a href='deletereq.php?id=".$row['ReqID']."'><img src='images/exit.png'></a></td>"; 

そして、あなたの削除ページに$ _GET ['id']の値を使用するようにクエリを変更する

しかし、あなたの用途などによっては、あなたのニーズがセキュリティなどの観点から本当にわかるようにすることができます。さらに、一般にGETを使って変更を行うことは良い考えではありません。POSTを使用してからリダイレクトする方がよいでしょう。上記のポイントはうまくいくが、それは(あなたがすでに持っているもの)十分であるので、慎重ではない場合にはあなた自身に深刻なダメージを与えることができる。

+0

ああ、大丈夫、あなたの助けをありがとう – ScottD

関連する問題