@0lzhi

Ошибка в добавлении записи в БД?

Я в этом мало что понимаю, так что приношу свои извинения за допущенные ошибки.

Я добавил на свой сайт форму, для добавления товаров в таблицу на сайте и БД. Когда я пытаюсь добавить предмет в БД, выходит ошибка. Форма слизана с инета и просто переделана. код php слизан с другого ,который отвечает за регистрацию.

<button onclick="document.getElementById('id01').style.display='block'" style="width:auto;">Добавить предмет</button>

<div id="id01" class="modal">
  <form class="modal-content" action="/action_page.php">
    <div class="container">
      <h1>Добавить предмет в таблицу</h1>
      <hr>
      <label for="name"><b>Название предмета</b></label>
      <input type="text" placeholder="Название предмета" name="name" required>

      <label for="quantity"><b>Количество</b></label>
      <input type="text" placeholder="Количество" name="quantity" required>

      <label for="price"><b>Цена</b></label>
      <input type="text" placeholder="Цена" name="price" required>

      <div class="clearfix">
        <button type="button" onclick="document.getElementById('id01').style.display='none'" class="cancelbtn">Закрыть</button>
        <button type="submit" class="addbtn" name="reg_item">Добавить в таблицу</button>
      </div>
    </div>
  </form>
</div>


* {box-sizing: border-box}
input[type=text], input[type=password] {
    width: 100%;
    padding: 15px;
    margin: 5px 0 22px 0;
    display: inline-block;
    border: none;
    background: #f1f1f1;
}

input[type=text]:focus, input[type=password]:focus {
    background-color: #ddd;
    outline: none;
}

button {
    background-color: #4CAF50;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    cursor: pointer;
    width: 100%;
    opacity: 0.9;
}

button:hover {
    opacity:1;
}

.cancelbtn {
    padding: 14px 20px;
    background-color: #f44336;
}

.cancelbtn, .addbtn {
  float: left;
  width: 50%;
}

.container {
    padding: 16px;
}

.modal {
    display: none;
    position: fixed; 
    z-index: 1; 
    left: 0;
    top: 0;
    width: 100%; 
    height: 100%;
    overflow: auto;
    background-color: #E6E6E6;
    padding-top: 50px;
}

.modal-content {
    background-color: #fefefe;
    margin: 5% auto 15% auto; 
    border: 1px solid #888;
    width: 80%; 
}

hr {
    border: 1px solid #f1f1f1;
    margin-bottom: 25px;
}

.close:hover,
.close:focus {
    color: #f44336;
    cursor: pointer;
}

.clearfix::after {
    content: "";
    clear: both;
    display: table;
}

@media screen and (max-width: 300px) {
    .cancelbtn, .addbtn {
       width: 100%;
    }
}


<?php
session_start();

// инициализация переменных
$name = "";
$quantity   = ""; 
$price	="";

// подключение к базе данных
$db = mysqli_connect('localhost', 'phpmyadmin', 'Super2021', 'product');

// добавить предмет в таблицу
if (isset($_POST['reg_item'])) {
	// получите все входные значения из формы
	$name = mysqli_real_escape_string($db, $_POST['name']);
	$quantity = mysqli_real_escape_string($db, $_POST['quantity']);
	$price = mysqli_real_escape_string($db, $_POST['price']);
	// проверка формы: убедитесь, что форма заполнена правильно ...
	if (empty($name)) { array_push($errors, "Требуется название предмета"); }
	if (empty($quantity)) { array_push($errors, "Требуется количество"); }
	if (empty($price)) { array_push($errors, "Требуется цена"); }
	
	// сначала проверьте базу данных, чтобы убедиться предмет уже существует с тем же именем
	$user_check_query = "SELECT * FROM product WHERE name='$name' LIMIT 1";
	$result = mysqli_query($db, $user_check_query);
	$product = mysqli_fetch_assoc($result);
  
	if ($product) { // если предмет существует
	if ($product['name'] === $name) 
	{array_push($errors, "Предмет уже существует");}
    }
}

  // добавление предмета, если в форме нет ошибок
  if (count($errors) == 0) {
  	$query = "INSERT INTO users (name, quantity, price) 
  			  VALUES('$name', '$quantity', '$price')";
  	mysqli_query($db, $query);
  	$_SESSION['name'] = $name;
  	$_SESSION['success'] = "предмет добавлен";
  	header('location: new1.html');
  }
?>
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
@0lzhi Автор вопроса
Подключение к БД:
<?php
    $host = 'localhost';
    $user = 'имя';
    $pass = 'пароль';
    $db_name = 'БД';
    $link = mysqli_connect($host, $user, $pass, $db_name);

    if (!$link) {
      echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
      exit;
    }
?>
<?php


Кнопка и форма:
<button onclick="document.getElementById('id01').style.display='block'" style="width:auto;">Добавить предмет</button>
<div id="id01" class="modal">
<form action="" method="post" class="modal-content">
    <div class="container">
      <h1>Добавить предмет в таблицу</h1>
      <hr>
      <b>Название предмета</b>
		<input type="text" placeholder="Название предмета" name="itname">
 
      <b>Количество</b>
		<input type="text" placeholder="Количество" name="quantity">

      <b>Цена</b>
		<input type="text" placeholder="Цена" name="price">

     <div class="clearfix"> 
        <button type="button" onclick="document.getElementById('id01').style.display='none'" class="cancelbtn">Закрыть</button>
        <td colspan="2"><button type="submit" class="addbtn">Добавить в таблицу</button></td>
      </div>
    </div>
  </form>
</div>


CSS кнопки и формы:
* {box-sizing: border-box}
input[type=text], input[type=password] {
    width: 100%;
    padding: 15px;
    margin: 5px 0 22px 0;
    display: inline-block;
    border: none;
    background: #f1f1f1;
}

input[type=text]:focus, input[type=password]:focus {
    background-color: #ddd;
    outline: none;
}

button {
    background-color: #4CAF50;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    cursor: pointer;
    width: 100%;
    opacity: 0.9;
}

button:hover {
    opacity:1;
}

.cancelbtn {
    padding: 14px 20px;
    background-color: #f44336;
}

.cancelbtn, .addbtn {
  float: left;
  width: 50%;
}

.container {
    padding: 16px;
}

.modal {
    display: none;
    position: fixed; 
    z-index: 1; 
    left: 0;
    top: 0;
    width: 100%; 
    height: 100%;
    overflow: auto;
    background-color: #E6E6E6;
    padding-top: 50px;
}

.modal-content {
    background-color: #fefefe;
    margin: 5% auto 15% auto; 
    border: 1px solid #888;
    width: 80%; 
}

hr {
    border: 1px solid #f1f1f1;
    margin-bottom: 25px;
}

.close:hover,
.close:focus {
    color: #f44336;
    cursor: pointer;
}

.clearfix::after {
    content: "";
    clear: both;
    display: table;
}

@media screen and (max-width: 300px) {
    .cancelbtn, .addbtn {
       width: 100%;
    }
}


JS для кнопки и формы:
var modal = document.getElementById('id01');

window.onclick = function(event) {
    if (event.target == modal) {
        modal.style.display = "none";
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы