Запись в бд с формы UPDATE + INSERT
Здраствуйте уважаемые. Проблема такая не могу с модального окна забратьи записать в две таблицы данные (в одну в легкю получается). Есть данные с модального окна, и есть две таблицы одна продукт и туда только колличество нужно записать, в есть история продаж, тада всю информацию с модального окна + в таблице истории продаж стоит дататаим который пишет время все таблицы имеют ИД + автоинкремент.
код модального окна :
<!-- Редактирование --> <div class="modal fade" id="edit_<?php echo $row['id']; ?>" tabindex="-1" aria-labelledby="ModalLabel" aria-hidden="true"> <div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="ModalLabel">Редактирование товарной позиции</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form method="POST" action="edit.php?id=<?php echo $row['id']; ?>">
<div class="mb-4 row">
<label class="col-md-4 col-form-label">Наименование</label>
<div class="col-md-6">
<input type="text" name="product_name" class="form-control" value="<?php echo $row['product_name']; ?>">
</div>
</div>
<div class="mb-4 row">
<label class="col-md-4 col-form-label">Артикул</label>
<div class="col-md-6">
<input type="text" name="product_article" class="form-control" value="<?php echo $row['product_article']; ?>">
</div>
</div>
<div class="mb-4 row">
<label class="col-md-4 col-form-label">Категория</label>
<div class="col-md-6">
<input type="text" name="product_category" class="form-control" value="<?php echo $row['product_category']; ?>">
</div>
</div>
<div class="mb-4 row">
<label class="col-md-4 col-form-label">Поставщик</label>
<div class="col-md-6">
<input type="text" name="product_suppliers" class="form-control" value="<?php echo $row['product_suppliers']; ?>">
</div>
</div>
<div class="mb-4 row">
<label class="col-md-4 col-form-label">Актуальный курс $</label>
<div class="col-md-1">
<?php include_once('../database/connection.php');
$database = new Connection();
$db = $database->open();
try{
$sql = 'SELECT * FROM exchange_rates';
foreach ($db->query($sql) as $row) {
?>
<input type="text" name="actuality" class="form-control" value="<?php echo $row['actuality']; ?>">
</div>
</div>
<?php
}
}
catch(PDOException $e){
echo "Проверьте соединение с Базой Данных, ошибка при подключении: " . $e->getMessage();
}
//close connection
$database->close();
?>
<div class="mb-4 row">
<label class="col-md-4 col-form-label">Введите покупаемое количество</label>
<div class="col-md-4">
<input type="text" class="input-number" name="product_quantity" class="form-control" value="">
</div>
</div>
<div class="mb-4 row">
<label class="col-md-4 col-form-label">Введите сумму закупа</label>
<div class="col-md-4">
<input type="text" class="input-number" name="purchase_price" class="form-control" value="">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Закрыть</button>
<button type="submit" name="edit" class="btn btn-primary">Обновить</a>
</form>
</div>
</div> </div> </div>
и вот код обработчика :
<?php
session_start();
include_once('../database/connection.php');
if(isset($_POST['edit'])){
$database = new Connection();
$db = $database->open();
try{
$id = $_GET['id'];
$product_name = $_POST['product_name'];
$product_article = $_POST['product_article'];
$product_category = $_POST['product_category'];
$product_suppliers = $_POST['product_suppliers'];
$product_quantity = $_POST['product_quantity'];
$purchase_price = $_POST['purchase_price'];
$actuality = $_POST['actuality'];
// Обновление данных в таблице `product`
$productUpdateSql = "UPDATE product SET
product_name = '$product_name',
product_article = '$product_article',
product_category = '$product_category',
product_suppliers = '$product_suppliers',
product_quantity = '$product_quantity',
WHERE id = '$id'";
// Вставка новой записи в таблицу `purchase_history`
$purchaseInsertSql = "INSERT INTO purchase_history
(rate, purchase_price, purchase_quantity, purchase_name, purchase_category, purchase_suppliers)
VALUES
('$actuality', '$purchase_price', '$product_quantity', '$product_name', '$product_category', '$product_suppliers')";
// Выполнение обоих запросов в одной транзакции
$db->beginTransaction();
$db->exec($productUpdateSql);
$db->exec($purchaseInsertSql);
$db->commit();
$_SESSION['message'] = 'Данные успешно обновлены и добавлены в историю покупок';
}
catch(PDOException $e){
$db->rollback();
$_SESSION['message'] = 'Ошибка при обновлении данных и добавлении в историю покупок: ' . $e->getMessage();
}
$database->close();
}
else{
$_SESSION['message'] = 'Сначала заполните форму редактирования';
}
header('location: ./product.php');
?>
Благодарю всех за подсказки, убрал лишню запятую.
И как видно на скрине у меня в таблице purchase_history, было поле data с некоректной для нее настройкой, как только изменил, все заработало. На свои вопрос о том как прибавить к уже имеющемуся количеству вот ответу : product_quantity = product_quantity + '$product_quantity' WHERE id = '$id'";
Так же возникла задача запретить редактирование даннных в инпутах этой формы, что бы не напортачить и к концу инпута добавил readonly
<input type="text" name="actuality" class="form-control" value="<?php echo $row['actuality']; ?>" readonly>
ВСЕМ ОГРОМНОЕ СПАСИБО, к 5-ти утра голова была просто не какая.