PHP+Jquery - проблема с выводом значений в таблицу

254
08 июля 2017, 11:09

Добрый день. Данная конструкция выводит значения в таблицу, которая сортирует их по алфавиту. Т.е. например при нажатии на ссылку А должны показываться только имена на букву А и т.д.

Код 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 - они не сортируются по алфавиту, а просто выводятся вот так:

Как и что нужно подправить, чтобы все корректно работало? Заранее спасибо за помощь!

READ ALSO
Нужен таймер обратного отсчета на js

Нужен таймер обратного отсчета на js

Сюда обратился, потому что в гугле не нашел толкового ответаТам при запросе таймер js, черт ногу сломит! В общем, помогите найти или поделитесь...

340
отправка формы без перезагрузки validator

отправка формы без перезагрузки validator

на сайте использую такой код js:

294
fputcsv как сделать табы?

fputcsv как сделать табы?

Есть массив $arr с текстовыми объектами по типу: "target:value"

225