4

ユーザーがファイルのアップロードをキャンセルできるキャンセル ボタンがあり、キャンセル メッセージが表示されます。ここで、ユーザーが [キャンセル] ボタンをクリックすると、データベースでキャンセルされたファイル名が検索され、データベース行が削除されるようにしたいと考えています。問題は、データベースの行をまったく削除していないことです。どうすればこれを実現できますか。現時点では、以下のコードで確認できる jpuery.ajax メソッドを使用しています。

以下はフォームコードです。

var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" + 

 "Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>" + 

 "<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" + 

 "</p><p class='imagef1_cancel' align='center'><label>" + 

 "<input type='button' name='imageCancel' class='imageCancel' cancel_image_file_name='" + imagefilename + "' value='Cancel' /></label></form>"); 

以下はキャンセルボタンの機能です。

    $('.imagef1_cancel').eq(window.lastUploadImageIndex).find(".imageCancel").on("click", function(event) {

        var cancel_image_file_name = $(this).attr('cancel_image_file_name');

    jQuery.ajax("cancelimage.php?imagefilename=" + cancel_image_file_name)

    return stopImageUpload(2, cancel_image_file_name);

});

最後に、ファイル名を含むデータベース行を削除できると思われる jquery.ajax が移動する cancelimage.php スクリプトを以下に示します。

 <?php

...

    //I have connected to database

    $cancel_image_file_name = $_GET["imagefilename"];

            $imagecancelsql = "DELETE FROM Image 
            WHERE ImageFile = 'ImageFiles/". mysql_real_escape_string($cancel_image_file_name)."'";

        mysql_query($imagecancelsql);

        mysql_close();


    ?>

アップデート:

以下は、削除クエリをエコーするときに現在表示されているものです。

Notice: 未定義のインデックス: 19 行目の /web/stud/xxx/.../cancelimage.php の imagefilename DELETE FROM Image WHERE ImageFile = 'ImageFiles/'

以下は、削除ボタンが押されたときに deleteimage.php スクリプトに移動し、データベース行を削除する削除関数のコードです。

function stopImageUpload(success, imagefilename){

         $('.listImage').eq(window.lastUploadImageIndex).append('<div>' + htmlEncode(imagefilename) + '<button type="button" class="deletefileimage" image_file_name="' + imagefilename + '">Remove</button><br/><hr/></div>'); 

$('.listImage').eq(window.lastUploadImageIndex).find(".deletefileimage").on("click", function(event) {
    var image_file_name = $(this).attr('image_file_name');

    jQuery.ajax("deleteimage.php?imagefilename=" + image_file_name)

    $(this).parent().remove();
});

      return true;   
}

以下は、deleteimage.php スクリプトです。

<?php

//connected to DB

  $image_file_name = $_GET["imagefilename"];

        $imagedeletesql = "DELETE FROM Image 
        WHERE ImageFile = 'ImageFiles/". mysql_real_escape_string($image_file_name)."'";

    mysql_query($imagedeletesql);

    mysql_close();


?>

以下は、キャンセル ボタン機能がどのように見えるかの更新です。

function startImageUpload(imageuploadform, imagefilename){
            $('.imagef1_cancel').eq(window.lastUploadImageIndex).find(".imageCancel").on("click", function(event) {

var cancel_image_file_name_ = $(this).attr('css');
var cancel_image_file_name = '';
var style_array = cancel_image_file_name_.split(" ");
for(i=0;i<style_array.length;i++){
    if(style_array[i].substr(0,2) == "__"){
     cancel_image_file_name = style_array[i].slice(2,style_array[i].length-2);
}

}

    jQuery.ajax("cancelimage.php?imagefilename=" + cancel_image_file_name)

    return stopImageUpload(2, cancel_image_file_name);

});       
      return true;
}

キャンセルボタンのボタン入力タグを次のように変更しました。

<input type='button' name='imageCancel' class='imageCancel __"+ imagefilename + "' value='Cancel' />
4

1 に答える 1

1

これらの変更を試してください:

フォーム上:

<input type='button' name='imageCancel' class='imageCancel __"+ imagefilename + "' value='Cancel' /></label></form>

キャンセルボタン機能について:

var cancel_image_file_name_ = $(this).attr('class');
var cancel_image_file_name = '';
var style_array = cancel_image_file_name_.split(" ");
for(i=0;i<style_array.length;i++){
    if(style_array[i].substr(0,2) == "__"){
     cancel_image_file_name = style_array[i].slice(2,style_array[i].length);
}

}
于 2012-05-14T21:43:53.217 に答える