2016-12-28 3 views
0

Ich bin ein neuer Entwickler. Ich habe ein Plugin für Daten einfügen WP-Dashboard erstellt. Ich versuche, mit Ajax in WordPress einreichen. Wenn ich das Bild ändere, wird es erfolgreich aktualisiert, aber wenn ich das Bild nicht ändere, wird es gelöscht. Warum? Da ist mein Code.Wenn ich mein Bild nicht ändere ist es gelöscht

Form:

<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

Wenn Sie das Bild nicht ändern, erhalten Sie einen leeren Wert in db Spalte für das entsprechende Bild? – Rahul

+0

Ja, ich sah das, was ist die Lösung? –

+0

Jedes Mal, wenn Ihr Formular gesendet wird, erhalten Sie ein Bild, wenn das Bild geändert wird, erhalten Sie einen Bildnamen, aber wenn es nicht ist, erhalten Sie einen leeren Wert, der dann in Ihrer Datenbank aktualisiert wird. Bevor Sie das Bild speichern, prüfen Sie, ob es leer ist oder nicht. Wenn es leer ist, aktualisieren Sie die Bildspalte nicht in db. – Rahul

Antwort

1

Dieser Code ist:

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 

       ); 
    } 
Verwandte Themen