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

Как сохранить разные выборки в кэш?


     28.12.2022    Общие вопросы по PHP, Модули    110

вопрос
Доброго дня!
Есть модуль по выводу значений из доп полей, который сохраняет эти значения в кэш.
Но у меня идёт сортировка еще и по id-категории новости, а кэш сохраняется один, т.е. какой первый файл был загружен, тот кэш и сохранился.
Как заставить их сохранять для себя разный кэш?

Первый файл модуля
<?php
include ('engine/api/api.class.php'); // подключаем api
$table = 'dle_post';  // название таблицы
$fields  = 'xfields'; // нужные поля, * - все поля
$where = 'approve="1" AND category IN (10)'; // условия выборки
$multirow = 1; // забирать ли один ряд или несколько
$start = 0; // начальное значение выборки
$limit = 0; // количество записей для выборки, 0 - выбрать все
$xfield = 'info'; ///ИМЯ ДОП ПОЛЯ ДЛЯ ВЫВОДА
$time = '0'; //время жизни кеша

$xfields = $dle_api->load_from_cache ($fields, $time, $xfields); //берем наш кеш, если есть конечно ))
if( !$xfields ) { //проверяем взяли ли мы кеш и если не взяли, то делаем запрос
    $xfields = $dle_api->load_table ($table,$fields,$where,$multirow,$start,$limit); //делаем запрос к бд
    $dle_api->save_to_cache ( xfields, $xfields); //сохраняем в кеш
    }

$stack = array(); //создаем пустой массив
foreach($xfields as $value){  // перебор значений массива
    if($value[xfields]){ //проверяем есть ли элемент в массиве
   
        $row = xfieldsdataload($value[xfields]); //получаем нужное нам доп поле
        if($row[$xfield]){ //проверяем есть ли значение
           
            $rowdata = explode( ",", $row[$xfield]); //разбиваем наше значение на массив
            foreach($rowdata as $value){    //перебираем значения массива
                if($value){                    //проверяем есть ли значение
                    $value = trim($value);    //убираем пробелы
                    array_push($stack, $value); //добавляем в конец массива полученное значение
                    }
                }
            }
        }
    }
//$stack = array_unique($stack); //убираем повторы
asort($stack);
//foreach($stack as $value){  //выводим окончательный вариант
//rsort($stack);
$stack = array_count_values($stack); //считаем повторы и избавляемся от повторных значений

foreach($stack as $key => $count){  //выводим окончательный вариант
//$keyurl = translit($key);
echo "<option value=\"$key\">$key</option>";  //открываем ссылку
    }
?>


Второй файл модуля
<?php
include ('engine/api/api.class.php'); // подключаем api
$table = 'dle_post';  // название таблицы
$fields  = 'xfields'; // нужные поля, * - все поля
$where = 'approve="1" AND category IN (11)'; // условия выборки
$multirow = 1; // забирать ли один ряд или несколько
$start = 0; // начальное значение выборки
$limit = 0; // количество записей для выборки, 0 - выбрать все
$xfield = 'info'; ///ИМЯ ДОП ПОЛЯ ДЛЯ ВЫВОДА
$time = '0'; //время жизни кеша

$xfields = $dle_api->load_from_cache ($fields, $time, $xfields); //берем наш кеш, если есть конечно ))
if( !$xfields ) { //проверяем взяли ли мы кеш и если не взяли, то делаем запрос
    $xfields = $dle_api->load_table ($table,$fields,$where,$multirow,$start,$limit); //делаем запрос к бд
    $dle_api->save_to_cache ( xfields, $xfields); //сохраняем в кеш
    }

$stack = array(); //создаем пустой массив
foreach($xfields as $value){  // перебор значений массива
    if($value[xfields]){ //проверяем есть ли элемент в массиве
   
        $row = xfieldsdataload($value[xfields]); //получаем нужное нам доп поле
        if($row[$xfield]){ //проверяем есть ли значение
           
            $rowdata = explode( ",", $row[$xfield]); //разбиваем наше значение на массив
            foreach($rowdata as $value){    //перебираем значения массива
                if($value){                    //проверяем есть ли значение
                    $value = trim($value);    //убираем пробелы
                    array_push($stack, $value); //добавляем в конец массива полученное значение
                    }
                }
            }
        }
    }
//$stack = array_unique($stack); //убираем повторы
asort($stack);
//foreach($stack as $value){  //выводим окончательный вариант
//rsort($stack);
$stack = array_count_values($stack); //считаем повторы и избавляемся от повторных значений

foreach($stack as $key => $count){  //выводим окончательный вариант
//$keyurl = translit($key);
echo "<option value=\"$key\">$key</option>";  //открываем ссылку
    }
?>


Разница у них только в строчке
$where = 'approve="1" AND category IN (11)'; // условия выборки

Ответа пока нет


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

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

наверх