Как Записать данные в виде массива в базу Mysql на php?

Доброго времени суток , нужна ваша помощь
Есть 3 таблицы
CREATE TABLE `Services` (
	`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
	`name` VARCHAR(255) NULL DEFAULT NULL COMMENT 'наименование ',
	`options` VARCHAR(255) NULL DEFAULT NULL COMMENT 'описание услуги',
	`price` VARCHAR(255) NULL DEFAULT NULL COMMENT 'цена услуги',
	`price_type` ENUM('0','1') NULL DEFAULT NULL COMMENT 'наименование цены услуги допустим руб./месяц или руб.',
	PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
CREATE TABLE `ClientServices` (
	`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
	`client_id` INT(11) UNSIGNED NOT NULL,
	`service_id` INT(11) UNSIGNED NOT NULL,
	`price_condition` ENUM('0','1') NULL DEFAULT NULL COMMENT 'выкл вкл',
	PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 CREATE TABLE `ServicesHistory` (
	`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
	`service_id` INT(11) UNSIGNED NOT NULL,
	`client_id` INT(11) UNSIGNED NOT NULL,
	`data_time` DATETIME NULL DEFAULT NULL COMMENT 'Дата и время установки новой услуги',
	`service_change` ENUM('0','1') NULL DEFAULT NULL COMMENT 'Услуга если 0 выключена, если 1 включена',
	PRIMARY KEY (`id`),
	INDEX `service_id_key` (`service_id`),
	INDEX `client_id_key` (`client_id`),
	CONSTRAINT `service_idx_const` FOREIGN KEY (`service_id`) REFERENCES `Services` (`id`) ON UPDATE NO ACTION ON DELETE NO ACTION,
	CONSTRAINT `client_idx_const` FOREIGN KEY (`client_id`) REFERENCES `Clients` (`id`) ON UPDATE NO ACTION ON DELETE NO ACTION
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

Есть форма
<form method="post" action="edit_services.php">
<?php
foreach ($services_list as $row)
{
	if ($row['price_type'] == 0) {$row['price_type'] = 'Руб./месяц';}
	else {$row['price_type'] = 'Руб./единоразово';}	
												
echo '<li class="list-group-item">
<button class="changeCondition '.(!empty($row['price_condition'] == '1') ? "btn btn-primary" : "btn btn-default").'" type="submit">
<i class="'.(!empty($row['price_condition'] == '1') ? "icon-check" : "icon-list-add").'"></i>
</button>'.$row['options'].' '.$row['price'].' '.$row['price_type'].' '.$row['price_condition'].'</li>
';
}
?>
</ul>
	<input type="hidden" name="save_but">
	<button class="btn btn-success save_services" type="submit">Сохранить</button>	
</form>

Вывожу таким запросом SQL
$services_list = DB::query_fetch_all("
		SELECT cs.price_condition, client_id, s.`name`, s.`options`, s.price, s.price_type, s.id
		FROM Services as s JOIN ClientServices as cs ON s.id = cs.service_id WHERE client_id = '%d'
	",$session);

В чем вопрос
Есть форма на ней выводятся все услуги, можно нажать 3-8 штук и они должны записаться массивом в базу
не могу записать , точнее составить правильно форму записи и пхп скрипт
вот что есть на данный момент

if (isset($_POST['save_but']))
	{
		$on_off = 1;
		$service_id = 2;
		/*$on_off  = $_POST["где взять пост"];
		$service_id = $_POST["где взять пост"];*/

		$res = DB::query("UPDATE ClientServices SET client_id = '%d', service_id = '%d', price_condition = '%d'",$session,$service_id,$on_off);
		if ($res) return "все получилось";
	}

Если нужен дополнительный код то скину коментом
за все ответы заранее спасибо
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
OKyJIucT
@OKyJIucT
Sunshine reggae
Создайте внешнюю таблицу, и записывайте в нее каждый элемент массива, и ключ, который будет связывать данный элемент с внешней сущностью (например, айди юзера и услуги, которые он оформил).

Либо же храните все в формате JSON или serialize и при выводе декодируйте обратно в массив.

Но первый вариант лучше - редактировать, искать будет значительно проще в конечном счете.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Badoo Development Москва
от 140 000 до 180 000 руб.
Badoo Development Москва
от 180 000 до 250 000 руб.
22 июля 2018, в 20:41
10000 руб./за проект
22 июля 2018, в 20:13
2000 руб./за проект