У меня есть несколько линий продуктов в панели сайта. В каждом ряду есть флажок для каждого товара, который определяет, есть ли товар в наличии или нет. Пользователь также должен иметь возможность изменять состояние поля инвентаризации в базе данных, установив этот флажок с текущего состояния на несуществующее и наоборот. Я использовал Ajax для этого, но код не работает должным образом.
javascript:
<script>
function showHint(item,the_location) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(the_location).innerHTML = this.responseText;
}
};
xmlhttp.open("GET", "https://*****.com/order_check/change_stock_status.php?pro="+item, true);
xmlhttp.send();
}
</script>
код на странице Wordpress:
<?php
if($product->get_stock_status() == "outofstock"){
$chkbox_value = "";
}elseif($product->get_stock_status() == "instock"){
$chkbox_value = "checked";
}
$product_id = $product->get_id();
$order_check_path = realpath('order_check');
echo<<<HEREDOC
<input type="checkbox" id="$product_id" name="$product_id" value="$product_id" $chkbox_value onClick="showHint($product_id, 'location$product_id')"><br />
<div id="location$product_id"></div>
HEREDOC;
PHP код:
<?php
require_once('../wp-config.php');
function correctit2($field,$istrim){
if($istrim) $field=trim($field);
$field=htmlspecialchars($field);
$field=str_replace("'","",$field);
$field=strip_tags($field);
return($field);
}
if(isset($_GET["product_no"])) {
$product_no = correctit2($_GET["product_no"],"true");
$thisuser = wp_get_current_user();
$thisroles = $thisuser->roles[0];
if(!is_user_logged_in()){
echo('Please sign in.');
}else{
if(is_numeric($product_no)){
$con = new mysqli("localhost", "user", "password", "***");
if ($con->connect_error) {
die("Connection failed: " . $con->connect_error);
}
mysqli_query($con, "SET NAMES utf8");
mysqli_query($con, "SET CHARACTER SET utf8");
mysqli_query($con, "SET character_set_connection = utf8");
$con->select_db("***");
$sql_stock = "SELECT meta_value FROM Hb***_postmeta WHERE post_id = '".$product_no."' AND meta_key = '_stock_status';";
$result = $con->query($sql_stock);
$row_stock = mysqli_fetch_array($result);
if($row_stock['meta_value'] == "outofstock"){
$sql_stock = "UPDATE Hb***_postmeta SET meta_value='instock'
WHERE post_id = '".$product_no."' AND meta_key = '_stock_status';";
$msg = 'Yes';
}elseif($row_stock['meta_value'] == "instock"){
$sql_stock = "UPDATE Hb***_postmeta SET meta_value='outofstock'
WHERE post_id = '".$product_no."' AND meta_key = '_stock_status';";
$msg = 'No';
}else{
$msg = 'Error 1';
}
$result = $con->query($sql_stock);
if ($result) {
echo $msg;
}else{
echo "Error 2";
}
}
}
} else {
echo "Error 3";
}
?>