Ajax-запрос не работает при нажатии кнопки с использованием PHP и MySQL - PullRequest
0 голосов
/ 13 октября 2019

Я отправляю ajax-запрос через JavaScript при нажатии кнопки. При нажатии кнопки вызывается функция, из которой выполняется ajax-запрос.

Вот HTML-код, где вызывается функция:

echo "
<form > ";
if ($status == 'regular') {
    echo "<input type='hidden' value='".$id."' name='id'>";
     echo "<input type='hidden' value='official' name='status'>";
    echo "<td><button class='btn btn-info' onclick='UpdateStatus(".$id.",'official')'>UPDATE TO OFFICIAL</button><br><br>";
}
if ($status == 'official') {
     echo "<input type='hidden' value='".$id."' name='id'>";
     echo "<input type='hidden' value='regular' name='status'>";
echo "<td><button class='btn btn-success' onclick='UpdateStatus(".$id.",'regular')'>UPDATE TO REGULAR</button><br><br>";
    }
echo "</form>";

UpdateStatus() - это функция, в которой естьзапрос ajax. Отсюда я отправляю $id, который является идентификатором пользователя и статусом, который должен быть обновлен.

Вот функция UpdateStatus ():

<script>
function UpdateStatus(str,str1) {
if (str.length == 0) {
    document.getElementById("txtHint").innerHTML = "";
    return;
} else {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
      //ready
    };
    xmlhttp.open("GET", "update_status.php?id=" + str + "&status=" + str1, true);
    xmlhttp.send();
}
}
</script>

str иstr1 - это идентификатор и статус соответственно. Вот update_status.php:

<?php
$id = $_REQUEST["id"];
$status = $_REQUEST["status"];
$server_name = "localhost";
$user_name = "root";
$password = "";
$db = "diwan";
$conect = new mysqli($server_name, $user_name, $password, $db);
if($conect->connect_error)
{ die("Connection failed ".$conect->connect_error); }
$sql = "UPDATE user SET status = '$status' WHERE UserID = $id";
if(!$conect->query($sql))
      {echo "error in adding record ".$conect->error;}
$result = $conect->query($sql);
?>

И когда я нажимаю на кнопку, я получаю URL-адрес этого формата:

http://localhost/diwan_web/manageusers.php?id=2&status=official

Но данные не обновляютсяв базе данных. Пожалуйста, покажите мне, где я ошибаюсь или что-то пропало. Любое предложение будет высоко оценено.

Ответы [ 3 ]

0 голосов
/ 13 октября 2019

Код выглядит хорошо. Возможно, вы не видите ошибку.

Добавьте это к началу:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', true);
0 голосов
/ 13 октября 2019

Возникли некоторые проблемы:

  1. Необходимо убедиться, что кнопка не перезагружает страницу (с type='button', как указано в в другом сообщении ).
  2. Мы всегда должны использовать двойные кавычки для атрибутов HTML, чтобы предотвратить такие ошибки (используйте onclick=\"UpdateStatus('param-here')\" вместо onclick='...')
  3. Если вы используете функции двойных кавычек PHP, вам не нужно объединять вручную (еслиPHP находит $ в двойных кавычках, таких как echo "Variable is: $x", он пытается автоматически найти и объединить переменную $x.

Если вы примените вышеупомянутые изменения, ваш код должен выглядеть следующим образом:

echo "<form >";
if ($status == 'regular') {
  echo "<input type='hidden' value='$id' name='id'>";
  echo "<input type='hidden' value='official' name='status'>";
  echo "<td><button type='button' class='btn btn-info' onclick=\"UpdateStatus('$id','official')\">UPDATE TO OFFICIAL</button><br><br>";
}
if ($status == 'official') {
  echo "<input type='hidden' value='$id' name='id'>";
  echo "<input type='hidden' value='regular' name='status'>";
  echo "<td><button type='button' class='btn btn-success' onclick=\"UpdateStatus('$id','regular')\">UPDATE TO REGULAR</button><br><br>";
}
echo "</form>";
0 голосов
/ 13 октября 2019

Похоже, ваш синтаксис неправильный. Попробуйте $sql = "UPDATE user SET status = ".$status." WHERE UserID = ".$id";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...