Запись данных массива в базу данных MySQL

244
30 декабря 2017, 04:42

Доброго времени суток. Имеется массив (только числовой) $_POST['ch'] и массив $_POST['osel'] (так же числовой)

Имеются таблицы базы данных prices

id
model
name
priceor
pricecopy

и orders

id
denominations
additional
quality
warr
prices
atotal
ophumber
oname
status
date
uid

Инпуты передаются как:

$_POST['oadd']
$_POST['onphone']
$_POST['oname']

В массиве $_POST['ch'] хранятся id с таблицы prices.
В массиве $_POST['osel'] хранятся value выбранных select.

Как записать данные в таблицу orders, где:

  • id = авто,
  • denominations = данные через запятую массива $_POST['ch'],
  • additional = данные с инпута $_POST['oadd'],
  • quality = данные через запятую с массива $_POST['osel'],
  • warr = данные через запятую с массива $_POST['osel'],
  • prices = если значение select (данные select'ов передаются в массиве $_POST['osel']) было передано как 0 - то считывать данные с таблицы prices столбика priceor, а если 1 - то считывать данные с таблицы prices столбика pricecopy,
  • atotal = сумма тех чисел, которые будут записываться через запятую в ячейку prices,
  • ophumber = данные с инпута $_POST['onphone'],
  • oname = данные с инпута $_POST['oname'],
  • status = 0,
  • date = дата записи (время и число),
  • uid = 0.

?

Answer 1

Неплохо было бы еще и знать типы столбцов таблиц, а не только их названия, ну да ладно. Из комментария у Вас похоже проблема с незнанием вложенных запросов (хотя на самом деле эту задачу можно решить разными способами, но вот к примеру один из них)

$denominations = implode(',', $_POST['ch']);
$quality = $warr = implode(',', $_POST['osel']);
if ($_POST['osel'] == 0) {
    $priceids = implode(',', $_POST['osel']);
    $query = "SELECT `priceor` FROM `prices` WHERE `id` IN ({$priceids})";
} else {
    $query = "SELECT `pricecopy` FROM `prices` WHERE `id` IN ({$priceids})"
}
$prices_query = MYSQL_QUERY_EXEC($query);
$prices = implode(',', $prices_query);
$atotal = 0;
foreach($prices_query as $p) {
    $atotal += $p;
}
$query = "INSERT INTO `orders` (`denominations`, `additional`, `quality`, `warr`, `prices`, `atotal`, `ophumber`, `oname`, `status`, `date`, `uid`) 
VALUES('{$denominations}', '{$_POST['oadd']}', '{$quality}', '{$warr}', '{$prices}', '{$atotal}', '{$_POST['onphone']}', '{$_POST['oname']}', '0', now(), '0')"
MYSQL_QUERY_EXEC($query);

Ну и естественно не забываем ВСЕ ВХОДНЫЕ ДАННЫЕ перепроверять и использовать mysqli_real_escape_string

PS. Код написан на "коленке" и на скорую руку, поэтому возможно нужны будут правки, но смысл думаю понятен.

PS2. MYSQL_QUERY_EXEC - это моя абстрактная (придуманная) функция

READ ALSO
DropzoneJS + PHP

DropzoneJS + PHP

Установил плагин DropzoneJS (http://wwwdropzonejs

153
Рассчитать время между датами

Рассчитать время между датами

Есть две даты с временем в формате DATETIME (напр2017-12-28 15:00 и 2017-12-29 12:00 )

195
Как исключить мета поле в запросе get_posts?

Как исключить мета поле в запросе get_posts?

В цикле wordpress есть запрос get_posts произвольного типа, в выводе которого нужно исключить мета поле cp_category со значением "Шины" и полностью мета...

152