2016-04-16 7 views
0

私はユーザーが作成した「メモ」ごとに削除ボタンを生成しています。ただし、どの削除をクリックしても、最後に保存したメモは削除されますが、メモに対応するメモは削除されません。隠しフィールド 'deleteID'に何か問題があると仮定します。PHPは現在の 'ノート'を削除していません。

<!-- connections.php connects to the database --> 
<?php require 'connections.php'; ?> 

<!-- check to make sure the user is logged in, 
    if not then redirect them to login.php --> 
<?php session_start(); 
if(isset($_SESSION["UserID"])){ 
} else { 
    header('Location: Login.php'); 
    die(); 
}?> 

<!-- $result is a query containing all the notes 
    of the current user --> 
<?php $UserID = $_SESSION["UserID"]; 
     $result = mysqli_query($con, "SELECT * FROM notes WHERE UserID = '$UserID'");  
?> 

<!-- when you click 'save' upload the new note 
    to the database and refresh the page. 
    when you click 'delete' remote the note 
    that goes with that button from the database --> 
<?php if(isset($_POST['save'])) { 

     session_start(); 
     $note = $_POST['note']; 
     $UserID = ($_SESSION["UserID"]); 

     $sql = $con->query("INSERT INTO notes (UserID, note)Values('{$UserID}','{$note}')"); 

     header('Location: Account.php'); 

    } else if (isset($_POST['delete'])){ 
     $deleteID = $_POST['deleteID']; 

     $sql = $con->query("DELETE FROM notes WHERE noteID = '$deleteID'"); 

     header('Location: Account.php'); 

    } else if (isset($_POST['edit'])){ 


}?> 

<!DOCTYPE HTML> 
<html lang="en"> 
    <head> 
     <title>My Account</title> 
     <link rel="stylesheet" type="text/css" href="stylesheet.css"> 
    </head> 

    <body> 

     <h1 class="titleAct">Welcome</h1> 

     <form action="" method="post" name="notesubmit" id="notesubmit"> 

       <div> 
        <textarea name="note" cols="50" rows="4" form="notesubmit" id="noteinput">New Note 
        </textarea> 
       </div> 

        <input name="save" type="submit" class="button" id="save" value="Save"> 

      <!-- Whenever a note is saved, print out the 
       note with timestamp followed by the edit 
       and delete buttons for each note --> 
      <?php while ($row = mysqli_fetch_array($result)): ?> 
       <?php $note = $row['note'];?> 
       <?php $date = $row['time'];?> 
       <?php $noteID = $row['noteID'];?> 

     <div id="note"> 
      <p class="note"><?php echo $date; ?></br> ---------------- </br><?php echo $note; ?> </p> 
     </div> 


       <input name="deleteID" type="hidden" id="hidden<?php echo $noteID;?>" value="<?php echo $noteID; ?>"> 
       <input name="delete" type="submit" class="button" value="Delete"> 

      <?php endwhile; ?> 
     </form> 

     <div> 
      <a class="link" href="Logout.php">Logout</a> 
      <div> 
      <a class="link" href="Deactivate.php">Deactivate My Account</a> 
      </div> 
     </div> 

    </body> 
</html> 
+0

ブラウザのインス​​ペクタでコードを検査すると、すべての隠し削除入力に異なるIDの値がありますか? –

+0

はい、私はして、すべてのdeleteIDsは異なる値を持っています。 –

+0

これを使って$ sqlリクエストの前に '$ deleteID'をデバッグしてみてください:' echo $ deleteID;あなたが選択したものと同じIDであれば、あなたのフォームに問題があります。 –

答えて

0

エラーが入力の名前にあるようです。 ID部分に設定した値と同じである必要があります。このよう

<input name="hidden<?php echo $noteID;?>" type="hidden" id="hidden<?php echo $noteID;?>" value="<?php echo $noteID; ?>"> 

はそうでない場合は、すべての入力が同じ名前を持っており、それがクエリを実行するために、最後の1を取ります。

EDIT

あなたはこのようにsubmitボタンで直接削除する値の名前を入れてください:次に、あなたが$_POSTアレイとのexplode()値の値を取得することができます

<input name="delete-<?php echo $noteID;?>" type="submit" class="button" value="Delete"> 

- ID値を取得するための区切り文字。

+0

ああ、意味があります。しかし、それでは、どうすれば私の$ deleteIDが私のelseと同じであるかを分かりますか? –

+0

$ _POST:foreach(foreach($ _ POST as $ key => $ value){} ')のforeachを使うと、$ keyは" delete-48 "を返します。例えば、これを使ってキーをテストできます:' ' –

1

私は、そのすべて削除しないと考えています - しかし、それでノートとdiv要素 - 彼らはwhileループであり、したがって、すべてのノートのdivは「ノート」

のIDを持っているので、それぞれが同じIDを持っています
<div id="note"> 

そのあなたはまた、1つのフォームの入力を複数提出してきた

<div id="note<?php echo $noteID;?>"; 
+0

良い点!確かにそれを訂正するのは間違いです –

+0

- その問題0はあるが、
のものが正しくないように見えるかどうかわかりません。壊れる必要があります
gavgrif

+0

これは、削除されたノートには影響しません。divはCSSの目的で同じです。 –

0

する必要があります - ので、削除依頼機能をトリガするために起こっている、ノートを削除し、各エコー-EDのために保存し、1各トリガするために1を最初にsave submitを起動します。したがって、$ _POST ['save']は$ _POST ['delete']これは、トリガーアクションであった入力ノートではなく、最後の入力ノートを変更するアクションの背後にある問題である可能性があります。

削除メモ機能以外の形式でメモ機能を追加することをお勧めします。あなたは、もしあなたが実際にあなたが期待している情報を投稿しているので、これは新しいロジックであれば同じようにすることができます。