2016-03-31 13 views
0

私はuniの予約システムを書いており、私は助けが必要な問題に遭遇しました。テーブル行を削除するPHP

<?php 
     $title = 'Room Booking'; 
     require_once 'header.php'; 
    ?> 
    <ul> 
    <?php 

     $query = "SELECT * FROM `room1booking` ORDER BY date, start, id"; 

     if ($result = mysqli_query($db_server, $query)) { 
      if (mysqli_num_rows($result) > 0) {  

       while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) { 
        echo '<li> 
          ' . $row['name'] . ' 
          ' . $row['date'] . ' 
          ' . $row['start'] . ' 
         <form action="confirmBooking.php?tid=' . $row['id'] . '" method="post"> 
          <button type="submit" name="submit"><a href="confirmBooking.php?tid=' . $row['id'] . '">Confirm</a></button> 
          </form> 
          <form action="denyBooking.php?tid=' . $row['id'] . '" method="post"> 
          <button type="submit" name="submit"><a href="denyBooking.php?tid=' . $row['id'] . '">Deny</a></button> 
         </form> 
         </li> 
         '; 

       } 

      } else { 
       echo '<li>There are no results</li>'; 
      } 

      mysqli_free_result($result); 
     } 


     mysqli_close($db_server); 
    ?> 
    </ul> 
    </form> 

このコードは、

<?php 
$title = 'Delete The Booking'; 
    require_once 'header.php'; 

    if(isset($_GET['submit'])){ 

     $tid = mysqli_real_escape_string($db_server, trim($_GET['tid'])); 

     if(!empty($tid)){ 

      $query = "DELETE FROM room1booking WHERE id = '$tid'"; 

      mysqli_query($db_server, $query); 

      echo '<p>You have successfully deleted the booking.</p>'; 

    } 
    } else { 
     echo '<p>There is a problem with the system.</p>'; 

} 


?> 

を削除するテーブル内の行の選択のためであり、これは行

に私はどこ上の任意の提案を削除するためのコードです行が削除されないので間違っている

+0

何かエラーチェックを実装していないと間違っています。ですから、MySQLiで適切に行う方法をお読みください。 – CBroe

+0

しかし、@CBroeには、このコードでは動作させることができないものがありますか? – MuzzaMurray

+0

あなたのフォームに投稿を使用していますが、削除コードでsuper global getを呼び出しています。投稿するにはこれらを変更してもう一度やり直してください –

答えて

0

クエリ文字列にGET変数としてtidを渡しているようですが、フォームのメソッドはPOSTです。両方confirmBookingとdenyBookingフォームが同じ問題

<form action="denyBooking.php?tid=' . $row['id'] . '" method="post"> 

<form action="denyBooking.php?tid=' . $row['id'] . '" method="get"> 
+0

ありがとう、その行は予約の確認のためです、私は1つの削除を見ています – MuzzaMurray

0

する必要がありますあなたはあなたのレコードがデータベースに削除しないために原因となる問題の組み合わせを持っていることに注意してください:

  1. ボタンはPOSTで値を送信しません。 IDを 隠し入力に追加し、POSTで値を取得する必要があります。
  2. また、GETとPOSTを混在させました。あなたのフォームメソッドはPOSTですが、 GETから変数を取得しようとしています。 のアクションは削除されているので、POSTを使用する方がよい(さもなければ、ユーザが urlパラメータを変更してレコードを削除できることを説明するには、 が必要です)。

ソリューション:

が、それは$行[ 'ID']

<input type="hidden" name="rowId" value="' . $row['id'] . '"> 

を使用して値だとIDが$_POST['rowId']

その他

になります隠しフィールドを作成して割り当てます注:

  1. あなたは確認するためにisset()を使用する必要がある「ROWID」あなたはROWIDは常に整数でなければなりませんならば、あなたは でそれを使用する前intval()を使用して文字列のvaraibleの整数 値を取得する必要があります
  2. それにアクセスする前に$ _POST を中に存在しますあなたのSQLクエリ
  3. あなたは でprepared statements with parameter bindingを使用してください。
+0

HI devlin、応答のおかげで、私はあなたが提案した変更を行いました。私のサイトでは、ページ出力を

にしました。

がエラーになります。それが動作しない場合は、変更を加えた後も永続します。 – MuzzaMurray

+0

@MuzzaMurray - その変数に値を代入した後の行に 'echo $ query'があります。クエリが正しいことを確認します。または、 '問題があります'というエラーメッセージの代わりに$ queryをエコーし​​ます。 –

+0

Notice:未定義の変数:/Applications/XAMPP/xamppfiles/htdocs/elm/php/denyBooking.php on line 19 これは何らかの理由で私が得る応答です – MuzzaMurray

関連する問題