На самом деле это проблема с моей базой данных, а не с моей формой или моим isset. Если кто-то захочет узнать, как я это исправил, я расскажу об этом здесь.
Я сделал так, как в in.k предложил и использовал тот же запрос, что и в форме, а затем добавил несколько строк для генерации некоторых кодов ошибок, например:
// query execution
$wr_pro = "INSERT INTO products (name, description, price, cat_id) VALUES ('$name', '$description', '$price', '$categories')";
$result = $db->query($wr_pro);
print "$db->error()";
if ($db->connect_error) {
die("Connection failed: ");
}
if ($result === TRUE) {
echo "Product added successfully!";
}
else {
echo "Problem loading to database...";
}
Когда я загрузил страницу, у меня появилась ошибка базы данных, в которой говорилось, что мне нужно установить значения по умолчанию для всех пустых полей (это было пустое поле тега, которое вызывало проблему).
Так что да, я не правильно настроил свою базу данных в принципе. Но теперь я знаю, что коды ошибок являются удивительными.
-------------- ОРИГИНАЛЬНЫЙ ВОПРОС ----------------- Я очень новичок в этом, поэтому я сожалею заранее, если я "я пропустил что-то очень очевидное, или мой код немного грязный.
Я пытаюсь сделать страницу, которая записывает новую запись продукта в существующую таблицу базы данных mysql.
Из других вопросов я пробовал:
Ошибки при невозможности записи в базу данных не отображаются, и они не записываются в базу данных, поэтому я предполагаю, что этот isset не работает? но я мог легко ошибаться.
Я уверен, что соединение с базой данных работает, потому что в форме есть раздел категории, который он выбирает из базы данных, и это хорошо видно на странице.
Я не знаю, соответствует ли это, но я выполняю это на WAMP локально.
Любой, кто мог бы указать мне в правильном направлении, я был бы очень благодарен.
---- мой код
<?php
include("includes/connection.php");
include("includes/head.html");
include("includes/header.php");
?>
<div class="pagecontent">
<h1> Create New Product:</h1>
<!-- form submission action-->
<?php
if (isset($_POST['submitwrpro'])) {
// escape user inputs
$name = mysqli_real_escape_string($db, $_POST['name']);
$description = mysqli_real_escape_string($db, $_POST['description']);
$price = mysqli_real_escape_string($db, $_POST['price']);
$categories = mysqli_real_escape_string($db, $_POST['category_id']);
// query execution
$wr_pro = "INSERT INTO products (name, description, price, cat_id) VALUES ('$name', '$description', '$price', '$categories')";
if(mysqli_query($db, $wr_pro)){
echo "Product added successfully!";
}
else{
echo "Error writing to database $wr_pro. " . mysqli_error($db);
}
}
?>
<!-- form entry -->
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<table>
<tr>
<td>Name</td>
<td><input type='text' name='name'></td>
</tr>
<tr>
<td>Price</td>
<td><input type='text' name='price'></td>
</tr>
<tr>
<td>Description</td>
<td><textarea name='description'></textarea></td>
</tr>
<tr>
<td>Category</td>
<td>
<!-- read product categories from the db -->
<?php
$req_cat = "SELECT cat_id, name FROM categories";
$result = $db->query($req_cat);
echo "<select class='form-control' name='category_id'>";
echo "<option>Select category...</option>";
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()){
extract($row);
echo "<option value=\"" . $row['cat_id'] . "\">" . $row["name"] . "</option>";
}
}
else {
echo "no results";
}
echo "</select>";
?>
</td>
</tr>
<tr>
<td></td>
<td>
<button name="submitwrpro" type="submit">Create</button>
</td>
</tr>
</table>
</form>
</div>
<?php
include("includes/footer.php");
?>
Я не думаю, что вы правильно подключаетесь к db. Я не вижу файл подключения, но результат, который вы получаете в форме в select, имеет другой способ подключения к db. Я прошел через форму и не нашел ошибок. Попробуйте что-то вроде этого
$connection = "INSERT INTO products (name, description, price, cat_id) VALUES ('$name', '$description', '$price', '$categories')";
$result = $db->query($connection);
echo "Product added successfully!";