0

さて、昨日、ユーザーが書いたブログ記事を保存する方法について質問しました。私はそれのデータベース側を理解しました、そしてそれはうまくいきます。ここで、onclick ボタンをクリックした後にブログ投稿を削除したいと考えています。Web を何時間も掘り下げた結果、jQuery AJAX 関数を呼び出すことが最善の方法であることがわかりました。私はそれを使いこなしてきましたが、これを機能させることはできません。

blog.php のデータベースから取得したブログ コード:

$connection = mysql_connect("...", "...", "...") or die(mysql_error());
$database = mysql_select_db("...") or die(mysql_error());

$query = mysql_query("SELECT * FROM template") or die(mysql_error());
$template = mysql_fetch_array($query);

$loop = mysql_query("SELECT * FROM content ORDER BY content_id DESC") or die (mysql_error());
while ($row = mysql_fetch_array($loop))
{
        print $template['Title_Open'];
        print $row['title'];
        print '<button class="deletePost" onClick="deleteRow(' . $row['content_id'] . ')">Remove Post</button>';
        print $template['Title_Close'];

        print $template['Body_Open'];
        print $row['body'];
        print $template['Body_Close'];
}

mysqli_close($connection);

これにより、home.php に次の HTML が作成されます。

<div class="blogtitle" class="post3">Title
<button class="deletePost" onClick="deleteRow(3)">Remove Post</button></div>
<div class="blogbody" class="post3">Content</div>

ボタンがクリックされたときに私のremove.jsを呼び出す必要があります(これは、私がやっていることを失い始める場所です):

$function deleteRow(id){
    $.ajax({
        url: "remove.php",
            type: "POST",
            data: {action: id}
    });
    return false;         
};

remove.php の呼び出し (私が何をしているのかわかりません):

$con=mysqli_connect("...","...","...","...");
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$id = $_POST['action'];

$query = mysql_query("DELETE FROM content WHERE content_id=$id") or die(mysql_error());

ここでの私の目標は、テーブルから ID を持つ行を削除することです。これにより、データベース テーブルをループするときに行が表示されないため、ブログ投稿が完全に削除されます。

何か案は?

助けてくれてありがとう、カイル

4

2 に答える 2

1

元のコードのいくつかの問題: Jquery の関数は最初に $ 記号を使用しないでください。単一の値を渡す必要があるため、POst ではなくクエリ文字列を使用し、「die」を呼び出す代わりにPHP では、影響を受ける行を使用して、値が削除されたかどうかのコールバックを返します。しかし、これは私のアプローチに過ぎず、他の方法があると確信しています。

コードの小さな改善点は次のとおりです。

    //HTML
    <div class="blogtitle" class="post3">Title
    <button class="deletePost" data-item="3" >Remove Post</button></div>
    <div class="blogbody" class="post3">Content</div>

   //JQUERY
    jQuery(document).ready(function($) {

        $('button.deletePost').each(function(){

            var $this = $(this);

            $this.click(function(){

                var deleteItem  = $this.attr('data-item');

                $.ajax({url:'remove.php?action='+deleteItem}).done(function(data){

                    //colect data from response or custom code when success

                });
             return false;  
            });

        });


    });


   //PHP
    <?php 

    $id = $_REQUEST['action'];
    $query = mysql_query('DELETE FROM content WHERE content_id="'.$id.'"');
    $confirm = mysql_affected_rows() > 0 ? echo 'deleted' : echo 'not found or error';

     ?>

このサンプルがお役に立てば幸いです :) 楽しいコーディングを!

于 2013-05-10T00:44:19.117 に答える
0

これが私のショッピングカートプロジェクトからアイテムを削除するためにこれを使用したのに役立つことを願っています.

$(".deleteitem").each(function(e) {
            $(this).click(function(e) {
                $.post("library/deletefromcart.php",{pid:$(this).attr('prodid'), ajax:true},function(){
                    window.location.reload()
                })
                return false;
             });
        });
于 2013-05-10T00:11:06.287 に答える