Добрый день. Данная конструкция выводит значения в таблицу, которая сортирует их по алфавиту. Т.е. например при нажатии на ссылку А должны показываться только имена на букву А и т.д.
Код PHP:
<?php
include ('engine/api/api.class.php'); // подключаем api
$table = 'dle_post'; // название таблицы
$fields = 'xfields'; // нужные поля, * - все поля
$where = 'approve=1'; // условия выборки
$multirow = 1; // забирать ли один ряд или несколько
$start = 0; // начальное значение выборки
$limit = 0; // количество записей для выборки, 0 - выбрать все
$xfield = 'actor'; ///ИМЯ ДОП ПОЛЯ ДЛЯ ВЫВОДА
$time = '14000'; //время жизни кеша
$tr_new = 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); //добавляем в конец массива полученное значение
asort($stack); //сортировка
}
}
}
}
}
$stack = array_count_values($stack); //считаем повторы и избавляемся от повторных значений
foreach($stack as $key => $count){ //выводим окончательный вариант
if($tr_new === 0){ //Если значение равно нулю открывает новый TR
echo '<tr class="new">';
}
echo "<td class='blok'>"; //открываем td
echo "<a href=/" . $xfield . "/"; //открываем ссылку
echo $key; //подставляем значение для поиска
echo " target='_blank' rel='noopener'>";
echo $key; //имя ссылки
echo "</a>"; //закрываем ссылку
echo "<span>"; //открываем спан
echo "(" . $count . ")";//кол-во повторов
echo "</span>"; //закрываем спан
echo "</td>"; //закрываем td
$tr_new++; //Добавляем единицу
if($tr_new === 1){ //Прошло 1 значение, значит закрываем TR и обнуляем счетчик
echo '</tr>';
$tr_new = 0;
}
}
Теперь JQuery:
$(function () {
var _alphabets = $('.alphabet > a');
var _contentRows = $('#countries-table tbody tr');
_alphabets.click(function () {
var _letter = $(this), _text = $(this).text(), _count = 0;
_alphabets.removeClass("active");
_letter.addClass("active");
_contentRows.hide();
_contentRows.each(function (i) {
var _cellText = $(this).children('td').eq(0).text();
if (RegExp('^' + _text).test(_cellText)) {
_count += 1;
$(this).fadeIn(400);
}
});
});
});
Выводится на страницу так:
<div class="alphabet">
<a class="first" href="#">А</a>
<a href="#">Б</a>
<a href="#">В</a>
и т.д.
<a class="last" href="#">Я</a></div>
<div id="conutries">
<table id="countries-table">
<tbody>
{include file="/код.php"}
</tbody>
</table>
</div>
</div>
Все работает, однако столкнулся с такой проблемой - получается корректно вывести только одно значение в одну строку tr...
при попытке например вывести 4 значения в строку if($tr_new === 4
- они не сортируются по алфавиту, а просто выводятся вот так:
Как и что нужно подправить, чтобы все корректно работало? Заранее спасибо за помощь!
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Сюда обратился, потому что в гугле не нашел толкового ответаТам при запросе таймер js, черт ногу сломит! В общем, помогите найти или поделитесь...