0

私のWebサイトで、画面を更新せずにテーブルのSQLエントリを削除(非表示)しようとしています。

現在、表示されている各エントリは、schedule000のIDを持つdivに表示されます。ここで、000はエントリのID番号です。それぞれに削除ボタンがあります:

<div id="btn_delete" class="schedule-delete" onclick="deleteEvent(schedule'.$row['id'].');"></div>

機能が

function deleteEvent(id) {
    var delurl = "..schedule/index.php?d="+String(id.id.substring(8));
    $.get(delurl);
    $(id).hide('slow');
    return false;
}

インターネットを検索したところ、get関数が見つかりましたが、動作しなかったようです。私は提案や新しい解決策を探しています。

ありがとう

補足として:これはそれが呼び出しているページの一部です

if (isset($_GET['d'])) {
    $id = $_GET['d'];
    $query = "UPDATE schedule SET visible=0 WHERE id='$id'";
    if (!(mysql_query($query) or die(mysql_error()))) {
        echo 'failed to delete';
    }

編集:スヴェンの方法を使用して、私は今持っています:

function del_item() {
    try {
        var item_id = $(this).attr('item_id'); 
        var item = $(this).parent().parent(); //parent().paren... until you reach the element that you want to delete 
        $.ajax({
          type: 'POST',
          url: "../schedule/index.php",
          data: { id: item_id},
          success: function() {
              //fade away and remove it from the dom
              $(element).fadeOut(300, function() { $(this).remove(); });
          },
          error: function() {
              alert('failed to delete');
          }
        });
    } catch (err) {
        alert(err.message);
    }
}

ドキュメントレディ機能と一緒に

if (isset($_POST['action'])) {
    if ($_POST['action'] == 'd' && isset($_POST['id'])) {
        $id = $_POST['id'];
        $query = "UPDATE schedule SET visible=0 WHERE id='$id'";
        if (!(mysql_query($query) or die(mysql_error()))) {
            echo 'failed to delete';
        }
        die("J! :)");
    }
4

2 に答える 2

1

私はこのようにします:

次のように、アイテムIDを削除ボタンに追加します。

<div id="btn_delete" class="schedule-delete" item_id="' . $row['id'] . '"></div>

そのページのJavaScript:

function del_item() {
    var item_id = $(this).attr('item_id'); 
    var item = $(this).parent(); //parent().paren... until you reach the element that you want to delete 

    $.ajax({
      type: 'POST',
      url: "url_to_your_remove_script.php",
      data: { id: item_id},
      success: function() {
          //fade away and remove it from the dom
          $(item).fadeOut(300, function() { $(this).remove(); });
      },
      error: your_error_func
    });
}

​$(document).ready(function() {
    $('.schedule-delete').click(del_item);
});​

そして、php削除ページ(url_to_your_remove_script.php)の場合:

<?php
    if(isset($_POST['id'])) {
        //your update query here

        die("J! :)");
    }

    //no id, return error
    header('HTTP/1.1 500 Internal Server Error :(');
?>

$ .ajaxの詳細については、ここをクリックしてください

お役に立てれば。

PS:コードをテストしていませんが、動作するはずです。

于 2012-08-19T14:46:31.517 に答える
0

削除するIDを文字列として送信しています。クエリは「WHEREid='001'」になりますが、「WHERE id = 1」である必要があります。したがって、JavaScriptのIDを'parseInt'を使用して整数として解析してから、delurl変数に追加します。

    var id = parseInt(id.id.substring(8));
var delurl = "../schedule/index.php?d="+id;
...etc

クエリから''を削除します

于 2012-08-19T14:41:02.193 に答える