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'>
</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();
},
});
});
Wenn Sie das Bild nicht ändern, erhalten Sie einen leeren Wert in db Spalte für das entsprechende Bild? – Rahul
Ja, ich sah das, was ist die Lösung? –
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