2

jquery deleteステートメントがあり、ファイルのNEWESTアップロードのみを削除しています(mysqlを使用)。「ファイルが最初にアップロードされた」、「ファイルが2番目にアップロードされた」、「ファイルが最後にアップロードされた(最新のファイル)」と言います。「最初または2番目にアップロードされたファイル」をクリックすると、最新のファイル(3番目にアップロードされたファイル)が削除されます。

    $(document).on('click', '.del', function(){
    var sid = $(this).next('.hiddenVid').val();
    $.ajax({
        type: "GET",
        url: "delete.php",
        data: {id:sid}
    });
    return false;
});
4

1 に答える 1

3

これはあなたのエラーです - >

var sid = "$vid";. 

入力した最新のアイテムの ID のみが生成されます。

アイテムを echo ステートメントに追加して、後でクリック関数で参照できるようにします。

非表示の入力に vid への参照を追加します。

これを変える

$option = "<td><form method='POST'><button type='submit' name='del' class='del'><i class='icon-remove'></i></button></form></td>";

これに

$option = "<td><form method='POST'><button type='submit' name='del' class='del'><i class='icon-remove'></i></button><input type='hidden' class='hiddenVid' value='".$vid."'/></td>";

クリック機能を変更して、実際の sid を参照してください。

$(function(){
    $(".del").click(function(){
        var row = $(this).parent();
        var sid = $(this).next('.hiddenVid').val();
        alert(sid);
        $.ajax({
            type: "GET",
            url: "delete.php",
            data: {id:sid}
        });
        return false;
    });
 });

更新後に行を返したい場合は、行を取得して返すために使用する上記の方法に基づいて、データを吐き出して印刷する必要があります。再利用できます。

$id = mysql_real_escape_string($_REQUEST['id']);
$DB->Query("DELETE FROM `files` WHERE `id`='$id'");

if(TRUE == (unlink("uploads/$id")):
    $DB->Query("SELECT * FROM `files` WHERE `author`='$username'");
    $file = $DB->Get();
    $obj = new stdClass();
    $i = 0;
    foreach($file as $key => $value){
        $n = $value['name'];
        $vid = $value['id'];
        $date = "<td>".$value['date']."</td>";
        $fname = "<td><a id='$vid' href='download.php?id=$vid'>$n</a></td>";
        $option = "<td><form method='POST'><button type='submit' name='del' class='del'><i class='icon-remove'></i></button></form></td>";
        $size = "<td>".filesize("uploads/".$vid."/".$value['name'])." bytes</td>";
        $obj->$i = $files = "<tr>".$fname.$size.$date.$option."</tr>";
        $i++;
    }
    echo json_encode($obj);
endif;

ここで、クリック ハンドラーを変更して dataType を想定し、テーブル内の既存のデータを置き換える必要があります。

$(function(){
    $(".del").click(function(){
        var row = $(this).parent();
        var sid = $(this).next('.hiddenVid').val();
        alert(sid);
        $.ajax({
            type: "GET",
            url: "delete.php",
            dataType: 'json',
            data: {id:sid},
            success: function(data){
              $('table').empty();
              $.each(data, function(i,obj){
                  $('table').append(obj);
              }
            }
        });
        return false;
    });
 });
于 2012-09-18T02:57:21.903 に答える