[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод данных по столбцам
Страницы: 1, 2
Astin
Добрый день всем.

Вот такая вот задачка, собираюсь вывести список слов по алфавиту но не в строку а в столбцы

То есть чтобы было не так 1 2 3 4 5 6 7 8

А вот так
1 5
2 6
3 7
4 8

Как это реализовать? Натолкните на мысль
Kusss
а какие вводные ?
- количество столбцов
- слов в столбце
- ещё что
Astin
Короче, есть сонник, в нем есть слова. Хочу вывести слова по алфавиту но не в строку ипа
а б в г д е
ж з и л к

А в столбцы
а д
б е
в ж
г з

Входных нет, просто вывод списка слов по алфавиту. Слов 18000 примерно, но выводится будут те где есть описание. Ну к примеру в одном соннике 18000 слов, но есть описание только для 900 слов, вот эти 900 и будут выводится

Сама реализация по столбцам интересует, не важно 3 будет столбца или 5, просто сама реализация а там уже будем посмотреть сколько применить столбцов. Хочется конечно еще сделать адаптив, но пока его прикручивать к этой реализации не будем. Сначала хочу понять как сделать а потом уже остальное.
Столбцов думаю 4. Думал как то что ли с операром Limit делать, но подумав решил что это будет трубейный велосипед
Astin
То есть выводим не построчно слева направо как обычно
А выводим столбцами сверху вниз в 4 столбца
Astin
думаю как то так, получаем все слова, далее получаем общее кол-во слов на вывод, делим это кол-во на 4, то есть будет 4 блока, и теперь не знаю как сделать так чтобы к примеру при достижении первого кол-ва начать выводить второе кол-во слов во второй блок, потом при достижении лимита во втором блоке начать выводить третью часть слов в третьем блоке

Ну это я пока логически думаю, так или нет, сообразить не могу как вот так вот сделать
Kusss
глянь array_chunk
Astin
Вот к примеру здесь http://www.neolove.ru/son/type/miller/
если смотреть вывод по букве А то вывод идет по алфавиту по второй букве и по столбцам. Реализовано в табличном варианте, на дескопе смотрится нормально как надо, но в мобильной версии уже столбец идет не по алфавиту.

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

Но все же очень хочется понять как же нормально реализовать по столбцам
Kusss
в верстке есть деление по блокам ? Может бутстрап
Astin
Да да Kusss, я и буду использовать бутстрап

Собственно решение, взял я список городов казахстана

Делаю запрос

$stmt = $pdo->query('SELECT * FROM city');
$stmt->execute();

$res = $stmt->fetchAll();

$rv = array();

foreach($res as $row) {

$rv[] = $row['cit'];
}

Почему не выбрал чисто один столбец, да потому что мне нужно будет в боевом примере
еще получить данные из таблицы.
Ну короче мы список получили теперь его нужно разобрать
Я быстренько функцию написал

// $new_rv[$blok] это вложенный массив, то есть если мы расделили на
// 4 части то будут 4 вложенных массива и каждый можно вывести по отдельности


function set_veiw( $array, $blok = 0, $colum = 4 ) {

sort($array); // Сортируем массив

$count = count($array); // получаем общее кол-во данных в массиве

$split = $count / $colum; // делим на кол-во столбцов

if( is_int($split) ) { // если получ кол-во целое число оставл как есть

$number = $split;
} else {
$number = round($split); // иначе округляем
}

$new_rv = array_chunk($array, $number); // делим массив на части

$htm = '<div class="col-xs-12 col-sm-6 col-md-3">';

foreach( $new_rv[$blok] as $key => $val ) {

$htm .= $val;
$htm .= '<br>';
}
$htm .= '</div>';

echo $htm; // выводим
}


Прокоментил думаю все понятно

Ну и собственно вывод

set_veiw( $rv, $blok = 0 );

set_veiw( $rv, $blok = 1 );

set_veiw( $rv, $blok = 2 );

set_veiw( $rv, $blok = 3 );

Отлично вышло, то что надо, все по алфовиту как в десткопе так и в мобильной версии
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.