Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 01.10.2016
Сообщений: 28

При добавлении через форму в базу данных, в таблицу products генерировал ID - у которого тип данных CHAR. (БФ1, БФ2.)

13.03.2019, 01:29. Показов 789. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть бд имя которой my_db в ней есть таблица products, При добавлении через форму в базу данных, в таблицу products генерировал (т.е. прибавлял на 1 значение больше) ID - у которого тип данных CHAR. (БФ011010, БФ011011, БФ011012... и тд)
Написал простую форму и вывод данных таблицы, но при добавление товара, он жалуется что не может плюсануть ID не могу понять как его плюсануть, если он через типа char.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<!doctype html>
<html lang="ru">
<head>
  <title>Админ-панель</title>
</head>
<body>
  <?php
    $host = 'localhost';  // Хост, у нас все локально
    $user = 'root';    // Имя созданного вами пользователя
    $pass = ''; // Установленный вами пароль пользователю
    $db_name = 'my_db';   // Имя базы данных
    $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой
 
    // Ругаемся, если соединение установить не удалось
    if (!$link) {
      echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
      exit;
    }
 
    //Если переменная Name передана
    if (isset($_POST["Name"])) {
      //Если это запрос на обновление, то обновляем
      if (isset($_GET['red'])) {
        $sql = mysqli_query($link, "UPDATE `products` SET `Name` = '{$_POST['Name']}',`Price` = '{$_POST['Price']}' WHERE `ID`={$_GET['red']}");
      } else {
        //Иначе вставляем данные, подставляя их в запрос
        $sql = mysqli_query($link, "INSERT INTO `products` (`Name`, `Price`) VALUES ('{$_POST['Name']}', '{$_POST['Price']}')");
      }
 
      //Если вставка прошла успешно
      if ($sql) {
        echo '<p>Успешно!</p>';
      } else {
        echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
      }
    }
 
    //Удаляем, если что
    if (isset($_GET['del'])) {
      $sql = mysqli_query($link, "DELETE FROM `products` WHERE `ID` = {$_GET['del']}");
      if ($sql) {
        echo "<p>Товар удален.</p>";
      } else {
        echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
      }
    }
 
    //Если передана переменная red, то надо обновлять данные. Для начала достанем их из БД
    if (isset($_GET['red'])) {
      $sql = mysqli_query($link, "SELECT `ID`, `Name`, `Price` FROM `products` WHERE `ID`={$_GET['red']}");
      $product = mysqli_fetch_array($sql);
    }
  ?>
  <form action="" method="post">
    <table>
      <tr>
        <td>Наименование:</td>
        <td><input type="text" name="Name" value="<?= isset($_GET['red']) ? $product['Name'] : ''; ?>"></td>
      </tr>
      <tr>
        <td>Цена:</td>
        <td><input type="text" name="Price" size="3" value="<?= isset($_GET['red']) ? $product['Price'] : ''; ?>"> руб.</td>
      </tr>
      <tr>
        <td colspan="2"><input type="submit" value="OK"></td>
      </tr>
    </table>
  </form>
  <?php
  //Получаем данные
  $sql = mysqli_query($link, 'SELECT `ID`, `Name`, `Price` FROM `products`');
  while ($result = mysqli_fetch_array($sql)) {
    echo "<p>{$result['ID']}) {$result['Name']} - {$result['Price']} ₽ - <a href='?del={$result['ID']}'>Удалить</a> - <a href='?red={$result['ID']}'>Редактировать</a></p>";
  }
  ?>
  <p><a href="?add=new">Добавить новый товар</a></p>
</body>
</html>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2019, 01:29
Ответы с готовыми решениями:

Ошибка при добавлении данных в бд через форму
вот action: &lt;? require_once '../config.php'; $name_post = $_POST; $cat = $_POST; $mini_desc = $_POST; $description =...

Ошибка при добавлении записи в базу через форму
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /home/u466134400/public_html/db1/scripts/connect.php:2 Stack...

Добавление данных через форму в таблицу базы данных MS SQL
Здравствуйте! Я делаю форму для добавления записи в таблицу базы данных, созданную в MS SQL 2008. В таблице три поля...

6
133 / 118 / 34
Регистрация: 04.04.2018
Сообщений: 593
13.03.2019, 02:44
Apocalypset, Вы хотите чтобы ID товара сам увеличивался? Код прочитал не один раз, не вижу где оно должно при добавлении увеличиваться по коду. Вы видимо хотите сделать когда ТИП INT и атрибут AUTO INCREMENT? Если все же char, то в 26 строчке Вам необходимо извлечь данные, именно ID, потом удалить БД БФ, получить цифры и затем произвести запись. Так же думаю Вам нужно выбирать большее значение из БД..

PHP
1
2
3
4
5
$number = 'БФ011012'; // $rs['id'] - достаем данные из БД
$only_numbers = mb_substr($number, 2); // удаляем первые 2 символа
$new = $only_numbers+1; // прибавляем 1
$new_id = "БФ" . str_pad($new, strlen($only_numbers), "0", STR_PAD_LEFT); // до этого нули теряем с лева, вставляем нули с левой стороны, в зависимости сколько символов имела переменная $only_numbers и добавляем БФ
echo  $new_id; // это новый ID который уже нужно записать в 27 строчке
Как-то так.
0
0 / 0 / 0
Регистрация: 01.10.2016
Сообщений: 28
13.03.2019, 09:29  [ТС]
Попробовал вставить в код. Теперь выдает ошибку "Произошла ошибка: Column count doesn't match value count at row 1". Как исправить?
0
133 / 118 / 34
Регистрация: 04.04.2018
Сообщений: 593
13.03.2019, 10:03
Apocalypset, код покажите.

Добавлено через 2 минуты
И структуру.
0
0 / 0 / 0
Регистрация: 01.10.2016
Сообщений: 28
13.03.2019, 10:05  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<!doctype html>
<html lang="ru">
<head>
  <title>Админ-панель</title>
</head>
<body>
  <?php
    $host = 'localhost';  // Хост, у нас все локально
    $user = 'root';    // Имя созданного вами пользователя
    $pass = ''; // Установленный вами пароль пользователю
    $db_name = 'laba_01';   // Имя базы данных
    $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой
      mysqli_set_charset($link, "utf8");          
    // Ругаемся, если соединение установить не удалось
    if (!$link) {
      echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
      exit;
    }
 
    //Если переменная Name передана
    if (isset($_POST["AUTHOR_BOOK"])) {
      //Если это запрос на обновление, то обновляем
      if (isset($_GET['red'])) {
        $sql = mysqli_query($link, "UPDATE `books` SET `AUTHOR_BOOK` = '{$_POST['AUTHOR_BOOK']}',`NAME_BOOK` = '{$_POST['NAME_BOOK']}', `ID_SUBJ` = '{$_POST['ID_SUBJ']}',
          `STORAGE_BOOK` = '{$_POST['STORAGE_BOOK']}',
          `YEAR_BOOK` = '{$_POST['YEAR_BOOK']}',
          `PRICE_BOOK` = '{$_POST['PRICE_BOOK']}',
          `AVALIABLE` = '{$_POST['AVALIABLE']}',
         WHERE `ID_BOOK`={$_GET['red']}");
      } 
      else {
        $number = 'БФ013110'; // $rs['id'] - достаем данные из БД
$only_numbers = mb_substr($number, 2); // удаляем первые 2 символа
$new = $only_numbers+1; // прибавляем 1
$new_id = "БФ" . str_pad($new, strlen($only_numbers), "0", STR_PAD_LEFT); // до этого нули теряем с лева, вставляем нули с левой стороны, в зависимости сколько символов имела переменная $only_numbers и добавляем БФ
       echo $new_id;
        //Иначе вставляем данные, подставляя их в запрос
        $sql = mysqli_query($link, "INSERT INTO `books` ( `ID_BOOK`, `AUTHOR_BOOK`, `NAME_BOOK`, `ID_SUBJ`, `STORAGE_BOOK`, `YEAR_BOOK`,
      `PRICE_BOOK`, `AVALIABLE`)
       VALUES ('ID_BOOK'='$new_id', '{$_POST['AUTHOR_BOOK']}', '{$_POST['NAME_BOOK']}' 
       '{$_POST['ID_SUBJ']}', '{$_POST['STORAGE_BOOK']}',
       '{$_POST['YEAR_BOOK']}', '{$_POST['PRICE_BOOK']}',
       '{$_POST['AVALIABLE']}'
     )");
      }
 
      //Если вставка прошла успешно
      if ($sql) {
        echo '<p>Успешно!</p>';
      } else {
        echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
      }
    }
 
    //Удаляем, если что
    if (isset($_GET['del'])) {
      $sql = mysqli_query($link, "DELETE FROM `books` WHERE `ID_BOOK` = {$_GET['del']}");
      if ($sql) {
        echo "<p>Товар удален.</p>";
      } else {
        echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
      }
    }
 
    //Если передана переменная red, то надо обновлять данные. Для начала достанем их из БД
    if (isset($_GET['red'])) {
      $sql = mysqli_query($link, "SELECT `ID_BOOK`, `AUTHOR_BOOK`, `NAME_BOOK` , `ID_SUBJ`, `STORAGE_BOOK`, `YEAR_BOOK`,
      `PRICE_BOOK`, `AVALIABLE` FROM `books` WHERE `ID_BOOK`={$_GET['red']}");
      $product = mysqli_fetch_array($sql);
    }
  ?>
  <form action="" method="post">
    <table>
      <tr>
        <td>Автор:</td>
        <td><input type="text" name="AUTHOR_BOOK" size="50" value="<?= isset($_GET['red']) ? $product['AUTHOR_BOOK'] : ''; ?>"></td>
      </tr>
      <tr>
        <td>Название:</td>
        <td><input type="text" name="NAME_BOOK" size="50" value="<?= isset($_GET['red']) ? $product['NAME_BOOK'] : ''; ?>"> </td>
      </tr>
      <tr>
        <td>Жанр:</td>
        <td><input type="text" name="ID_SUBJ" size="35" value="<?= isset($_GET['red']) ? $product['ID_SUBJ'] : ''; ?>"></td>
      </tr>
      <tr>
        <td>Место хранения:</td>
        <td><input type="text" name="STORAGE_BOOK" size="20" value="<?= isset($_GET['red']) ? $product['STORAGE_BOOK'] : ''; ?>"></td>
      </tr>
      <tr>
        <td>Год:</td>
        <td><input type="text" name="YEAR_BOOK" size="15" value="<?= isset($_GET['red']) ? $product['YEAR_BOOK'] : ''; ?>"></td>
      </tr>
      <tr>
        <td>Цена:</td>
        <td><input type="text" name="PRICE_BOOK" size="10" value="<?= isset($_GET['red']) ? $product['PRICE_BOOK'] : ''; ?>"></td>
      </tr>
      <tr>
        <td>Доступность:</td>
        <td><input type="text" name="AVALIABLE" size="5" value="<?= isset($_GET['red']) ? $product['AVALIABLE'] : ''; ?>"></td>
      </tr>
      <tr>
        <td colspan="2"><input type="submit" value="OK"></td>
      </tr>
    </table>
  </form>
  <?php
  //Получаем данные
  $sql = mysqli_query($link, 'SELECT `ID_BOOK`, `AUTHOR_BOOK`, `NAME_BOOK` , `ID_SUBJ` , `STORAGE_BOOK` , `YEAR_BOOK` 
  , `PRICE_BOOK` , `AVALIABLE` FROM `books`');
  while ($result = mysqli_fetch_array($sql)) {
    echo "<p>{$result['ID_BOOK']}) {$result['AUTHOR_BOOK']} {$result['NAME_BOOK']} Жанр: {$result['ID_SUBJ']}, Находится в
    {$result['STORAGE_BOOK']}, Год: {$result['YEAR_BOOK']}, Цена
    {$result['PRICE_BOOK']} ₽ Доступно: {$result['AVALIABLE']} - <a href='?del={$result['ID_BOOK']}'>Удалить</a> - <a href='?red={$result['ID_BOOK']}'>Редактировать</a></p>";
  }
  ?>
  <p><a href="?add=new">Добавить новый товар</a></p>
</body>
</html>
0
133 / 118 / 34
Регистрация: 04.04.2018
Сообщений: 593
13.03.2019, 10:40
Apocalypset, 40 строчка, 'ID_BOOK'= удалите и Вы же не достаете данные из базы или пробуете получить из $_POST, а просто всунули мой код, не зря же указал что нужно сделать.

Добавлено через 1 минуту
А, Вы указали другой ID, все же нужно из базу доставить или из $_POST получать, там проверять, есть такой вообще в базе или нет, а потом уже выполнять действие которое Вам написал, и затем уже только записывать в базу данных.
0
0 / 0 / 0
Регистрация: 01.10.2016
Сообщений: 28
18.03.2019, 12:04  [ТС]
Мда... код не оптимизирован. Как искать максимальное id?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2019, 12:04
Помогаю со студенческими работами здесь

Как при вводе данных в таблицу через форму осуществить переход к следующей непустой строке?
Доброго времени суток! извините, если пишу не там где нужно( я долго искал подходящий раздел но так ничего и не нашел) Я начинающий. учусь...

Ошибка при добавлении данных в базу
Здравствуите, помогите пожалуйста у меня база студентов, я прописала код добавления данных в базу у меня ошибку выводит, что делать(

Ошибка при добавлении в базу данных
&lt;?php include (&quot;settings/connect.php&quot;); if (isset($_POST)) {$title = $_POST;} if (isset($_POST)) {$title = $_POST;} if...

Ошибка при добавлении в базу данных
Здравствуйте уважаемые форумчане. Столкнулся с одной проблемой, которую не в силах решить самостоятельно. А именно, при оформлении заказа в...

Ошибка при добавлении в базу данных
Здравствуйте! Я раньше не работал с бд, это мое первое приложение, делал опираясь на урок... Вот такой код в итоге получился: package...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru