- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
$db = new Db();
$db->prepare('SELECT `ID`, `Title`, `Date`, `Active` FROM `videos` WHERE `UserID` = :userId AND `is_temporary` = 0 ORDER BY `Date` DESC')
->bindInt(':userId', $userId)
->execute();
$dbResult = $db->fetchAll();
if (empty($dbResult)) return array();
$orderDir = strtoupper($orderDir);
if (!in_array($orderDir, array('DESC', 'ASC'))) $orderDir = 'DESC';
if (empty($filter) && $orderDir == 'DESC') return ArrayHelper::extract($dbResult, 'ID', ArrayHelper::INT);
$db->prepare('CREATE TEMPORARY TABLE `videos_tmp` (
`id` INT(11),
`title` VARCHAR(256),
`date` DATETIME,
`active` VARCHAR(1)
) ENGINE = MEMORY
CHARACTER SET utf8
COLLATE utf8_general_ci')
->execute();
foreach ($dbResult as $row) {
$db->prepare('INSERT INTO `videos_tmp` (`id`, `title`, `date`, `active`) VALUES (:id, :title, :date, :active)')
->bindInt(':id', $row['ID'])
->bindStr(':title', $row['Title'])
->bindStr(':date', $row['Date'])
->bindStr(':active', $row['Active'])
->execute();
}
$sql = 'SELECT `id` FROM `videos_tmp` WHERE 1';
if (isset($filter['active'])) $sql .= ' AND `Active` = :active';
if (isset($filter['search'])) $sql .= ' AND `title` LIKE :search';
if (isset($filter['fromDate'])) $sql .= ' AND `Date` >= :fromDate';
if (isset($filter['toDate'])) $sql .= ' AND `Date` <= :toDate';
$sql .= ' ORDER BY `Date` ' . $orderDir;
$stmt = $db->prepare($sql);
if (isset($filter['active'])) $stmt->bindStr(':active', $filter['active']);
if (isset($filter['search'])) $stmt->bindStr(':search', '%' . $filter['search'] . '%');
if (isset($filter['fromDate'])) $stmt->bindStr(':fromDate', $filter['fromDate']);
if (isset($filter['toDate'])) $stmt->bindStr(':toDate', $filter['toDate']);
$stmt->execute();
$dbResult = $db->fetchAll();
$db->prepare('DROP TABLE `videos_tmp`')->execute();
Извиняюсь, что так много, но какого слоника надо было делать выборку, создавать временную таблицу и делать выборку снова - загадка.
Bart 11.01.2014 00:45 # 0
guest 11.01.2014 01:07 # −3
anonimb84a2f6fd141 11.01.2014 03:47 # −3
guest 11.01.2014 16:48 # −6
Stertor 11.01.2014 19:07 # −2
guest 11.01.2014 16:48 # −7
guest 11.01.2014 16:48 # −8
guest 11.01.2014 16:50 # −7
guest 11.01.2014 16:51 # −6
]
Делаю минеты, анал, ануслизинк.
Обращаться: [email protected][/code]
guest 11.01.2014 16:51 # −7
someone 11.01.2014 13:25 # +4
defecate-plusplus 11.01.2014 13:28 # +11
а он-то знает!
bormand 11.01.2014 13:44 # 0
kegdan 11.01.2014 13:56 # +7
Ну вы поняли
guest 11.01.2014 16:48 # −7
guest 11.01.2014 16:48 # −7
guest 11.01.2014 16:49 # −6
guest 11.01.2014 16:52 # −7
guest 11.01.2014 16:52 # −6
guest 11.01.2014 16:52 # −6
Lure Of Chaos 12.01.2014 17:56 # +1
правда, в исключительных случаях, чтобы разобраться хорошенько, лучше написать свой велосипед ...но не забыть его сразу после этого утилизировать!
kegdan 12.01.2014 18:04 # 0
eth0 12.01.2014 21:46 # +1
guest 11.01.2014 16:50 # −9
Stertor 11.01.2014 19:05 # −1
eth0 12.01.2014 12:20 # +2
Stertor 12.01.2014 14:08 # 0
Упоротых гамадрилов как на форумах, тут нет.
Lowezar 13.01.2014 14:55 # +3
eth0 13.01.2014 18:29 # 0