Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как организовать правильный запрос для set_vars?

Как организовать правильный запрос для set_vars?


     15.08.2017    Общие вопросы по PHP, MySQL    389

вопрос
Мне нужно построить кеш пользователей, с одной из таблиц, но для каждого значения - отдельная строка с пользователем.

Иван - настройка_1 - время;
Иван - настройка_2 - время;
Саша - настройка_4 - время;

Лучшее, к чему я смог прийти - это кеш такого типа:
Имя:
--- настройка_1:время
--- настройка_2:время

Но как правильно сформировать такое построение в коде, я не знаю. Может кто нибудь подсказать?

Ответил: Sander


Если я правильно понял...
$set = array(
	array(
		'name'=> 'Иван',
		'set' => array(
			'time1',
			'time2',
		),
	),
	array(
		'name'=> 'Саша',
		'set' => array(
			'time4',
		),
	),
);
set_vars( 'some_var', $set );

5 комментариев

Evgehha
Юзер

Evgehha - 16 августа 2017 15:20 -

Вот мне и надо собрать что-то подобное, но я не знаю как так сделать.
Вся проблема в том, что идут одинаковые имена людей и в кеше будет только одна запись с одним именем. Чтобы нормально сформировать, надо сделать -
Имя пользователя - у него такие-то настройки и у каждой настройки такое-то время.


$cache = get_vars ( "cache" );

if (!is_array( $cache )) {
	$cache = array ();

	$db->query ( "SELECT name, set, data FROM table WHERE value = 1 ORDER BY id ASC" );

	while ( $row = $db->get_row () ) {
		$cache[$row['name']] = array ();
		foreach ( $row as $key => $value ) $cache[$row['name']][$key] = stripslashes($value);
	}
	
	set_vars ( "cache", $cache );
	$db->free ();
}

lutskboy
Эксперт

lutskboy - 16 августа 2017 17:46 -

зачем такую фигню пороть. как вы потом из кеша будите доставать. имена то однаковые
задайте например в ету таблицу поле где будет какой то уникальный идентификатор. например user_id

Evgehha
Юзер

Evgehha - 16 августа 2017 17:53 -

Вот именно что никак, для этого мне и надо сделать иначе -
Саша(настройка:время;настройка2:время)
Петя(настройка:время;настройка5:время;настройка3:время)
Стёпа(настройка51:время)

lutskboy
Эксперт

lutskboy - 16 августа 2017 18:22 -

напишите что у вас в таблице. посмотрим какая у вас структура

Evgehha
Юзер

Evgehha - 16 августа 2017 18:41 -


CREATE TABLE IF NOT EXISTS `table1` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  `options` varchar(255) NOT NULL,
  `data` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`),
  UNIQUE KEY `options_UNIQUE` (`name`,`options`,`data`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;

У такого-то пользователя есть такая-то настройка и у этой настройки такое-то время жизни.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

наверх