С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
10 / 9 / 5
Регистрация: 17.02.2016
Сообщений: 375
1

Ввод данных из формы в таблицу БД

30.09.2021, 14:57. Показов 497. Ответов 9

Author24 — интернет-сервис помощи студентам
Пытаюсь внести данные из формы в БД MySQL.
Форма:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  <form action="" method="POST">
    <div>
        <label for="Title">Промокод:</label>
        <input type="text" id="promos" name="promo" required>
    </div>
    <div>
        <label for="Author">Сумма скидки:</label>
        <input type="text" id="discounts" name="discount" required>
    </div>
    <div>
        <label for="Publish_year">Мероприятие:</label>
        <input type="number" id="event" name="event_id">
    </div>
    <input type="submit" value="Отправить в БД">
  </form>
Код запроса:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  if (isset($_POST['promo']) && isset($_POST['discount'] && isset($_POST['event_id'])){
    // Переменные с формы
    $promo = $_POST['promo'];
    $discount = $_POST['discount'];
    $event_id = $_POST['event_id'];
    
    try {
        // Собираем данные для запроса
        $data = array( 'promo' => $promo, 'discount' => $discount, 'event_id' => $event_id ); 
        // Подготавливаем SQL-запрос
        $sql_promo = $wpdb->insert("INSERT INTO promo_event (promo, discount, event_id) VALUES (:promo, :discount, :event_id)");
        // Выполняем запрос с данными
        $sql_promo->execute($data);
        // Запишем в переменную, что запрос отработал
        $result = true;
    }   
    if ($result) {
      echo "Успех. Информация занесена в базу данных";
    }
 
  }
Код брал из интернета, попробовал его изменить по аналогичным другим кодам и статьям. Проблема в том, что нет никаких ошибок на странице, просто белый экран.
Миниатюры
Ввод данных из формы в таблицу БД  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.09.2021, 14:57
Ответы с готовыми решениями:

ввод данных из формы в таблицу
Друзья, помогите! Немогу сделать следующее: Надо чтоб данные, вводимые в форму (лист &quot;ФОРМА...

Ввод данных в таблицу с формы
Нужно ввести данные с помощью формы, которая вызывается на листе1, в таблицу на другой лист3 (БД)....

Передача данных из одной формы в таблицу dataGridView другой формы
Есть две формы на одной таблица на второй поля в которые пользователь вводит значения. Не получает...

Как при отправке формы добавить текущего пользователя сессии в таблицу данных формы
вывод логина юзера, может поможет &lt;?php &lt;?php // Проверяем, пусты ли переменные логина и id...

Как сделать динамическое добавление данных из таблицы одной формы в таблицу другой формы
Здравствуйте! Подскажите, пожалуйста, как сделать динамическое добавление данных из таблицы одной...

9
Заблокирован
30.09.2021, 15:41 2
Цитата Сообщение от Fruit Посмотреть сообщение
Проблема в том, что нет никаких ошибок на странице, просто белый экран.
Нет ошибок вероятно из за того, что засунули в блок try, а белый экран - наверное надо подключиться к базе вначале и если пишите вот это:
Цитата Сообщение от Fruit Посмотреть сообщение
if ($result) {
      echo "Успех. Информация занесена в базу данных";
    }
допишите вот это:
PHP
1
else { echo "Опять накосячил"}
0
162 / 150 / 97
Регистрация: 24.12.2013
Сообщений: 744
Записей в блоге: 12
30.09.2021, 15:45 3
Цитата Сообщение от Fruit Посмотреть сообщение
try {
        // Собираем данные для запроса
        $data = array( 'promo' => $promo, 'discount' => $discount, 'event_id' => $event_id );
        // Подготавливаем SQL-запрос
        $sql_promo = $wpdb->insert("INSERT INTO promo_event (promo, discount, event_id) VALUES (romo, :discount, :event_id)");
        // Выполняем запрос с данными
        $sql_promo->execute($data);
        // Запишем в переменную, что запрос отработал
        $result = true;
    }
этот блок неверно написан, обязательно должно быть условие catch
PHP
1
2
3
4
5
6
7
8
9
10
11
12
try {
        // Собираем данные для запроса
        $data = array( 'promo' => $promo, 'discount' => $discount, 'event_id' => $event_id ); 
        // Подготавливаем SQL-запрос
        $sql_promo = $wpdb->insert("INSERT INTO promo_event (promo, discount, event_id) VALUES (:promo, :discount, :event_id)");
        // Выполняем запрос с данными
        $sql_promo->execute($data);
        // Запишем в переменную, что запрос отработал
 
    } catch(\Exception $e){
      print_r($e);
   }
Цитата Сообщение от Fruit Посмотреть сообщение
$result = true;
это тоже как то не понятно, получается что всегда будет true вне зависимости от результата я думаю надо так
PHP
1
$result = $sql_promo->execute($data);
Цитата Сообщение от Fruit Посмотреть сообщение
$result = true;
это соответственно убрать
1
10 / 9 / 5
Регистрация: 17.02.2016
Сообщений: 375
30.09.2021, 16:00  [ТС] 4
Цитата Сообщение от Camy Посмотреть сообщение
а белый экран - наверное надо подключиться к базе вначале и если пишите вот это:
Если удалить
PHP
1
2
3
4
5
6
  if (isset($_POST['promo']) && isset($_POST['discount'] && isset($_POST['event_id'])){
    // Переменные с формы
    $promo = $_POST['promo'];
    $discount = $_POST['discount'];
    $event_id = $_POST['event_id'];
  }
то форма отображается.
0
Заблокирован
30.09.2021, 16:33 5
Цитата Сообщение от Fruit Посмотреть сообщение
Если удалить
Я думал во время POST-запроса белый экран, а у Вас просто ошибки в коде. Следует в начале скрипта прописать:
PHP
1
2
ini_set("display_errors",1);
error_reporting(E_ALL);
1
10 / 9 / 5
Регистрация: 17.02.2016
Сообщений: 375
30.09.2021, 16:39  [ТС] 6
После выше изложенного, переписал код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  
  //параметры подключения к базе!
  require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );
  global $wpdb;
 
  // Собираем данные для запроса
  if (isset($_POST["Promo"])) {
      // Подготавливаем SQL-запрос
      $sql_promo = $wpdb->insert(" INSERT INTO `promo_event` (promo, discount, event_id) VALUES ('{$_POST['Promo']}', '{$_POST['Discount']}, '{$_POST['Event_id']}')" );
    
      if ($sql_promo) {
        echo "Успех. Информация занесена в базу данных";
      } else {
        echo "Опять накосячил";
      }
  }
Ошибки появились и теперь при отправке формы ругается сам WP:
Warning: Invalid argument supplied for foreach() in /home/f/fruit0006/Home/public_html/wp-includes/wp-db.php on line 2275

Warning: Invalid argument supplied for foreach() in /home/f/fruit0006/Home/public_html/wp-includes/wp-db.php on line 2307

Warning: Invalid argument supplied for foreach() in /home/f/fruit0006/Home/public_html/wp-includes/wp-db.php on line 2338

Warning: Invalid argument supplied for foreach() in /home/f/fruit0006/Home/public_html/wp-includes/wp-db.php on line 2882

Warning: Invalid argument supplied for foreach() in /home/f/fruit0006/Home/public_html/wp-includes/wp-db.php on line 2077

Warning: array_keys() expects parameter 1 to be array, null given in /home/f/fruit0006/Home/public_html/wp-includes/wp-db.php on line 2087

Warning: implode(): Invalid arguments passed in /home/f/fruit0006/Home/public_html/wp-includes/wp-db.php on line 2087
Добавлено через 28 секунд
Цитата Сообщение от Camy Посмотреть сообщение
Следует в начале скрипта прописать
Как раз таки это всё есть.
0
Заблокирован
30.09.2021, 18:18 7
Цитата Сообщение от Fruit Посмотреть сообщение
Warning: Invalid argument supplied for foreach()
Ну и? Там же написана ошибка, название файла и даже строка. В цикл foreach попадает вероятно не массив. Смотрите в файле wp-db.php
Да и вообще достаточно странно, что в файле подключения к базе имеется цикл. Я с Ворд-Прессом не знаком, но это ерунда какая-то
1
10 / 9 / 5
Регистрация: 17.02.2016
Сообщений: 375
30.09.2021, 19:14  [ТС] 8
Цитата Сообщение от Camy Посмотреть сообщение
Да и вообще достаточно странно, что в файле подключения к базе имеется цикл. Я с Ворд-Прессом не знаком, но это ерунда какая-то
В этом и проблема что это файл движка, и до этого всё было нормально.

Добавлено через 52 минуты
Строка из файла wp-db.php

PHP
1
$fields  = '`' . implode( '`, `', array_keys( $data ) ) . '`';
Ошибка array_keys() expects parameter 1 to be array, null given in
и
implode(): Invalid arguments passed in
0
Невнимательный
2773 / 1105 / 346
Регистрация: 08.02.2013
Сообщений: 6,319
Записей в блоге: 2
30.09.2021, 19:24 9
Цитата Сообщение от Fruit Посмотреть сообщение
$sql_promo = $wpdb->insert(" INSERT INTO `promo_event` .....(promo
Этот метод вызывается по другому, если это я его нашёл.

https://developer.wordpress.or... db/insert/
PHP
1
wpdb::insert( string $table, array $data, array|string $format = null )
1
10 / 9 / 5
Регистрация: 17.02.2016
Сообщений: 375
30.09.2021, 21:33  [ТС] 10
Не знаю почему, но проблема была в самом файле wp-db.php, нашёл новый файл моей версии wp, заменил старый файл и ошибки пропали ...
Конечный код:
HTML5
1
2
3
4
5
6
7
8
9
10
11
  <form action="" method="POST">
    <div>
        <label for="Title">Промокод:</label>
        <input type="text" id="promos" name="Promo" required>
    </div>
    <div>
        <label for="Author">Сумма скидки:</label>
        <input type="text" id="discounts" name="Discount" required>
    </div>
    <input type="submit" value="Отправить в БД">
  </form>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  
  if (isset($_POST['Promo']) && isset($_POST['Discount'])){
    // Переменные с формы
    $promo = $_POST['Promo'];
    $discount = $_POST['Discount'];
    
    try {
 
        // Собираем данные для запроса
        $data = array( 'promo' => $promo, 'discount' => $discount ); 
 
        // // Подготавливаем SQL-запрос
        $sql_promo = $wpdb -> insert( 'promo_event', array( 'promo' => $promo, 'discount' => $discount ) );
                
        // Запишим в переменую, что запрос отрабтал
    } catch(\Exception $sql_promo){
      // Вывод ошибки
      print "Ошибка!: " . $e->getMessage();
    }         
  }
Всем спасибо за помощь!
0
30.09.2021, 21:33
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.09.2021, 21:33
Помогаю со студенческими работами здесь

введение данных в таблицу через форму (последовательный ввод данных)
Уважаемые профи своего дела! Начал делать форму для своего отдела, остановился на таких...

Перенос данных из формы в таблицу другой формы
Доброво времени суток! Столкнулся с такой проблемой есть 2 формы , в 1 стаблица данных, допустим...

Гостиница. Разработать программу, реализующую ввод данных с экрана и вывод данных в таблицу на экран монитора.
10.ГОСТИНИЦА ФИО Номер комнаты Кол-во суток проживания Цена /сут.(руб.) Итого(руб.) Для вывода...

Ввод данных в таблицу
Ребят нужно ввести данные категории в базу данных сначала что то наворотил(передовалось только имя...

Ввод данных в таблицу
Здравствуйте! Написала код для добавления записи в бд, но он не пашет. Т.е ошибок не выдает, а...

ввод данных в таблицу
можно ли ввести данные в таблицу из excel


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru