Не происходит запись в БД

353
26 июля 2022, 00:10

Есть кнопки категорий, которые выводятся циклом foreach и соответственно таких кнопок несколько:

<form action="" method="POST">
<button name="addArticle" class="btn_buy" type="button" onclick="addToCart(<?=$key['id']?>)">Купить</button>
</form>
function addToCart(id){
 $.ajax({
      type:'post',
      url:'../cart/cart.php',
      data:{add_id:id},
      success:function(data){
           $("#students").html(data);
      }
 });
}
<?
$idGoods = $_POST['add_id'];
echo $idGoods;
function addGoodsCart($p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8) {
    global $mysqli;
    $sql = mysqli_prepare($mysqli, "INSERT INTO `cart` (`cookie`, `title`, `idMainSect`, `brand`, `img1`, `coin`, `price`, `amount`) VALUES(?,?,?,?,?,?,?,?)");
    mysqli_stmt_bind_param($sql, "ssssssss", $p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8);
    mysqli_stmt_execute($sql);
    mysqli_stmt_close($sql);
}
if(isset($_POST['addArticle'])){
    addGoodsCart($idGoods, 2, 3, 4, 5, 6, 7, 8);
}

При клике на button не происходит запись в БД, но если удалить из PHP блок кода if(isset($_POST['addArticle'])){} то запись добавляется, и так же добавляется если просто обновить страницу. Подскажите пожалуйста, в чём может быть дело?

Answer 1

Вы имеет функцию, которая делает POST запрос с телом

{add_id:id}

(Javascript объект с ключем add_id и значением id)

function addToCart(id){
 $.ajax({
      type:'post',
      url:'../cart/cart.php',
      data:{add_id:id},
      success:function(data){
           $("#students").html(data);
      }
 });
}

А затем ваш обработчик в части кода на PHP пытается получить данные из тела запроса. Помимо add_id вы хотите получить данные поля addArticle, которое вы НЕ передаете с клиента. Поэтому isset($_POST['addArticle']) будет возвращать false; А isset($_POST['add_id']) будет возвращать true и его можно использовать;

READ ALSO
post массив input&#39;ов и multiple

post массив input'ов и multiple

На странице есть какие-то статические поля и динамически добавляется таблица с инпутами к примеру такая:

400
Почему обнуляются значения часов, минут и секунд у обеих переменных?

Почему обнуляются значения часов, минут и секунд у обеих переменных?

Почему после выполнения строки startTimesetHours(0,0,0); обнуляются значения у currentTime?

276
Event.target в JS

Event.target в JS

Помогите, пожалуйста, разобраться в работе event:

339
Передача данных из JSON файла в JavaScript

Передача данных из JSON файла в JavaScript

Здраствуйте! Есть JSON файлик с данными

321