2016-12-03 18 views
0

私の削除フォームに問題があります。削除ボタンを押すと、削除する行の代わりに最後に挿入された行が削除されます。 jQuery Ajax SendForm関数を使用して、deleteキーを押したときにdivで更新を行います。その機能を追加する前に機能しました。それはSendFormで動作しない削除だけです。あなたは更新を行うことができ、うまく動作します。MYSQLテーブルからPHPフォームを削除すると、正しい行が削除されません。

<?php  

    foreach ($pdo->query('SELECT * FROM Commenta order by commentID desc;' ) as $row) : 
     $luck = $row ['commentID']; 
     echo "<tr>"; 
     echo "<td><i class='fa fa-eye w3-blue w3-padding-tiny'></i></td>"; 
     echo "<td>".$row['alias']."</td>"; 
     echo "<td>"; 
     foreach($pdo->query('select realName from SubPlace, CommentSubPlace where SubPlace.name = CommentSubPlace.name and CommentSubPlace.commentID = '.$luck.';') as $brow){; 
      echo $brow['realName']."</br>"; 
     }; 
     echo "</td>"; 
     echo "<td>".$row['grade']."/5 </td>"; 
     echo "<td>".$row['kommentar']."</td>"; 
     echo "<td>".$row['date']."</td>"; 
     ?>  

     <td class="comment-delete"> 
      <form id="cucdel"> 
      <input type="hidden" name="commentID" value="<?php echo $row['commentID']; ?>"> 
      <button type="button" onclick="SendForm('comments', 'comments', 'cucdel');">radera</button> 
      </form> 
     </td> 
     </tr> 

    <?php 
    endforeach; 
?> 

コードの削除部分:

<?php 
    if (isset($_POST['commentID'])) { 
    $sql = "DELETE FROM Commenta WHERE commentID = :commentID"; 
    $stmt = $pdo->prepare($sql); 
    $stmt->bindParam(':commentID', $_POST['commentID'], PDO::PARAM_INT); 
    $stmt->execute(); 
    } 
?> 
+1

チェックを更新します。 –

+1

'SendForm'とは何ですか?これをデバッグすると、どこの/具体的には間違ったコメントIDが使用されますか? – David

+1

ビュー/出力の上に削除コードを移動すると、表示される前に削除されます。 @davidで述べたように '関数SendForm'を見る必要があります。 – WEBjuju

答えて

1

この行ない構文エラーながら

foreach($pdo->query('select realName from SubPlace, CommentSubPlace where SubPlace.name = CommentSubPlace.name and CommentSubPlace.commentID = '.$luck.';') as $brow){; 

- その半結腸には目的を持っていません。

それは常に最後の1を削除だ理由はフォームIDで質問し

// protect yourself from bad data 
$luckint = (integer) $luck; 

// lose the confusing and unnecessary semi-colon here 
// prepare the query separately 
$query = 'select realName from SubPlace, CommentSubPlace where SubPlace.name = CommentSubPlace.name and CommentSubPlace.commentID = '.$luckint; 

// this line *can not* end in a semi-colon - find your error log 
foreach ($pdo->query($query) as $brow) { 

答え:に変更された場合のラインは、はるかに明確にあなたとあなたの後ろにプログラマーに行うことができます。すべての削除フォームに同じIDを常に表示しています。 IDは一意でなければなりません - このようにフォームIDを作る:

<form id="cucdel<?php echo $row['commentID']; ?>"> 
<input type="hidden" name="commentID" value="<?php echo $row['commentID']; ?>"> 
<button type="button" onclick="SendForm('comments', 'comments', 'cucdel<?php echo $row['commentID']; ?>');">radera</button> 
</form> 

、その後commentID`が送信される `デベロッパーコンソールで

+0

おかげで、「構文エラーがあります - それは、セミコロンで終わるべきではない」* sendForm機能です* - それは正しくないと正しい両方です。 PHPのセミコロンは有効な文字です。それは、http://php.net/manual/en/language.basic-syntax.instruction-separation.php *のように "文を終了する"ということです。 "CやPerlの場合と同様に、PHPは命令を終了させる必要がありますPHPコードのブロックの終了タグは自動的にセミコロンを意味し、PHPブロックの最後の行を終了するセミコロンを持つ必要はありません。 "* - したがって、それ自体エラーを投げることはありません。 – lanarn

+1

を固定 –

+0

@ Fred-ii-良い点、私はそれを適切に編集しました – WEBjuju

関連する問題