2016-12-28 6 views
0

私は新しい開発者です。私は、WPダッシュボードにデータを挿入するためのプラグインを作成しました。私はWordPressでAjaxを使って提出するようにしています。私は写真を変更すると正常に更新されましたが、私は写真を変更していないときは削除しました。どうして?私のコードがあります。削除した写真を変更しないとき

形式:

<form id="ajax_form_update" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>" enctype="multipart/form-data"> 
    <table class='wp-list-table widefat fixed'> 
     <tr><th></th><td><input type="hidden" name="id" value="<?php echo $id; ?>"/></td></tr> 
     <tr><th>Name</th><td><input type="text" name="name" value="<?php echo $name; ?>"/></td></tr> 
     <tr><th>Code</th><td><input type="text" name="code" value="<?php echo $code; ?>"/></td></tr> 
     <tr><th>Image</th><td ><img id="blah" src="data:image/jpeg;base64, <?php echo $photo;?> " width="100" height="100" /> </td></tr> 
     <tr><th></th><td><input type="file" onchange="readURL(this);" name="photo" class="ss-field-width" /></td></tr> 
    </table> 
    <input type='submit' name="submit" value='Save' class='button'> &nbsp;&nbsp; 
</form> 

PHP:

<?php 
function ajaxupdate() { 
    global $wpdb; 
    $id = $_POST["id"]; 
    $code = $_POST["code"]; 
    $name = $_POST["name"]; 
    $imagesss = ($_FILES["photo"]["tmp_name"]); 
    $bin_string = file_get_contents("$imagesss"); 
    $aencode1 = base64_encode($bin_string); 
    $table_name = $wpdb->prefix . "school"; 
    //update 
    $result = $wpdb->update(
       $table_name, //table 
       array('code' => $code, 'name' => $name,'image_name'=>$aencode1), //data 
        array('id' => $id) //where 
       ); 
} 
add_action('wp_ajax_ajaxupdate', 'ajaxupdate'); 
add_action('wp_ajax_nopriv_ajaxupdate', 'ajaxupdate'); 

AJAXこれはあなたのコードである

jQuery("#ajax_form_update").submit(function(event){ 
    event.preventDefault(); //prevent default action 
    var post_url = jQuery(this).attr("action"); //get form action url 
    var request_method = jQuery(this).attr("method"); //get form GET/POST method 
    var form_data = new FormData(this); //Creates new FormData object 
    jQuery.ajax({ 
     url: "/mywp/wp-admin/admin-ajax.php?action=ajaxupdate", 
     type: request_method, 
     data : form_data, 
     contentType: false, 
     cache: false, 
     processData:false, 
     success:function(data){ 
      alert ('Data Updated'); 
      //location.reload(); 
     }, 
    }); 
}); 
+0

写真を変更しないと、対応するイメージのdb列に空白の値が表示されますか? – Rahul

+0

はい、私はそれを見ました、解決策は何ですか? –

+0

あなたのフォームが提出されるたびに、イメージが変更されたときにイメージ名を取得していますが、空でない値が取得されていないときにdb内で更新されます。イメージを保存する前に、空であるかどうかをチェックします。空であれば、dbのイメージカラムを更新しません。 – Rahul

答えて

1

if(!empty(imagesss)){ 
    //update 
      $result = $wpdb->update(
         $table_name, //table 
         array('code' => $code, 'name' => $name,'image_name'=>$aencode1), //data 
         array('id' => $id) //where 

       ); 
    } else { 
    //update 
      $result = $wpdb->update(
         $table_name, //table 
         array('code' => $code, 'name' => $name), //data 
         array('id' => $id) //where 

       ); 
    } 
関連する問題