Использую этот код HTML: <?php $lastChar = "А"; ?> <?php foreach ($conndb->query($sql) as $row): ?> <?php if ($lastChar !== ($currentChar = mb_convert_case(mb_substr($row['category_name'], 0, 1), CASE_UPPER))): ?> <?php $lastChar = $currentChar; ?> [html]<h1 class="bukva" id="bukva_<?= mb_convert_case($lastChar, CASE_LOWER); ?>"><?= $lastChar; ?> </h1> <?php endif; ?> <a href="http://localhost/menu_general/masters_page/masters/masters.php"> <div class="kategoriya"> <div class="kolichestvo">0</div> <?php echo $row['category_name'] . "\t"; ?> </div> </a> <?php endforeach; ?>[/html] для сортировки записей из базы данных по алфавиту В базе два поля id , category_name В category_name название категорий: алмазная резка автоматика водопровод архитектура гиодезия барельеф бетонные работы вентиляция витражи бурение скважин и т.д. так чтобы если в базе есть запись начинающаяся на букву "З"(или любую другую букву) то в коде HTML: <h1 class="bukva" id="bukva_<?= mb_convert_case($lastChar, CASE_LOWER); ?>"><?= $lastChar; ?></h1> должна вставиться эта буква и так по всем записям Но у меня вместо буквы, выходит на весь список только один вопросительны знак в ромбе посоветовали включить модуль [mbstring] вроде включил но не помогает Подскажите как решить эту задачу
решил задачу надо включить модуль mbstring с английскими буквами работает корректно без включения модуля mbstring
Для сортировки записей из базы данных по алфавиту, указывайте базе данных, что результат запроса надо вернуть отсортированными по алфавиту...
код выше рабочий только с русскими символами без включения модуля mbstring не работает --- Добавлено --- не могу найти в openserver`е файл php.ini
Бро, а при чем тут вообще сортировка, когда у тебя задача - первую букву вывести большую? Все смешалось, люди, кони.
не могу найти в openserver`е файл как сделать так чтобы первая буква была большой? --- Добавлено --- В этом коде походу много чего надо изменить 1 Чтобы буква в коде HTML: <h1 class="bukva" id="bukva_<?= mb_convert_case($lastChar, CASE_LOWER); ?>"><?= $lastChar; ?></h1> была заглавной 2 Чтобы в id теге <h1> ставилась английская буква маленькая --- Добавлено --- HTML: <h1 class="bukva" id="bukva_<?= $lastChar; ?>"><?= mb_convert_case($lastChar, CASE_LOWER); ?></h1> решил проблему с заглавными буквами просто переставил местами --- Добавлено --- еще один вопрос Как сделать так чтобы в id вставилась английская буква маленькая А между тегами <h1></h1> вставилась русская буква большая id используется как якорь HTML: <a href="#bukva_a" class="yakor_a"><h1 class="yakor_h1">А</h1></a> <a href="#bukva_b" class="yakor_a"><h1 class="yakor_h1">Б</h1></a> <a href="#bukva_v" class="yakor_a"><h1 class="yakor_h1">В</h1></a> <a href="#bukva_g" class="yakor_a"><h1 class="yakor_h1">Г</h1></a> <a href="#bukva_d" class="yakor_a"><h1 class="yakor_h1">Д</h1></a> <a href="#bukva_e" class="yakor_a"><h1 class="yakor_h1">Е</h1></a> <a href="#bukva_j" class="yakor_a"><h1 class="yakor_h1">Ж</h1></a> <a href="#bukva_z" class="yakor_a"><h1 class="yakor_h1">З</h1></a> <a href="#bukva_i" class="yakor_a"><h1 class="yakor_h1">И</h1></a> <a href="#bukva_k" class="yakor_a"><h1 class="yakor_h1">К</h1></a> <a href="#bukva_l" class="yakor_a"><h1 class="yakor_h1">Л</h1></a> <a href="#bukva_m" class="yakor_a"><h1 class="yakor_h1">М</h1></a> <a href="#bukva_n" class="yakor_a"><h1 class="yakor_h1">Н</h1></a> <a href="#bukva_o" class="yakor_a"><h1 class="yakor_h1">О</h1></a> <a href="#bukva_p" class="yakor_a"><h1 class="yakor_h1">П</h1></a> <a href="#bukva_r" class="yakor_a"><h1 class="yakor_h1">Р</h1></a> <a href="#bukva_s" class="yakor_a"><h1 class="yakor_h1">С</h1></a> <a href="#bukva_t" class="yakor_a"><h1 class="yakor_h1">Т</h1></a> <a href="#bukva_u" class="yakor_a"><h1 class="yakor_h1">У</h1></a> <a href="#bukva_f" class="yakor_a"><h1 class="yakor_h1">Ф</h1></a> <a href="#bukva_h" class="yakor_a"><h1 class="yakor_h1">Х</h1></a> <a href="#bukva_c" class="yakor_a"><h1 class="yakor_h1">Ц</h1></a> <a href="#bukva_ch" class="yakor_a"><h1 class="yakor_h1">Ч</h1></a> <a href="#bukva_sh" class="yakor_a"><h1 class="yakor_h1">Ш</h1></a> <a href="#bukva_uh" class="yakor_a"><h1 class="yakor_h1">Э</h1></a> <a href="#bukva_yu" class="yakor_a"><h1 class="yakor_h1">Ю</h1></a> <a href="#bukva_ya" class="yakor_a"><h1 class="yakor_h1">Я</h1></a>
У тебя щас, бомбанёт. Если тебе первый символ в кириллице нужно вывести, то да mbstring тебе нужно включить. Но ты его включишь, но тебе нужно будет задействовать: - Конкатенацию - mb_substr от 0 до 1 - mb_strtoupper - mb_strtolower Либо это дело в функцию завернуть, ну либо нет
Ну я пока писал, ты уже там сообщение наизменял )) Если конкретно к этой фразе, что бы первая буква была большой, то да надо конкатенацию, если же нужно чтобы одна единственная буква была большой, то хватит mb_strtoupper да и то лишнее, проще на фронте сделать её большой через css.
@villiwalla тут дело в том что русские буквы в теге <h1> надо заменить на английские в id Например HTML: <h1 class="bukva" id="bukva_uh">Э</h1>
PHP: function replaceSymbolRuToLat($symbol) { $symbolsRu = [ 'a' => 'a', 'з' => 'z', ...... ]; $symbol = mb_strtolower($symbol); return $symbolsRu[$symbol]; } HTML: <h1 class="bukva" id="<?= replaceSymbolRuToLat('Э') ?>">Э</h1>
@villiwalla ее можно объединить с предыдущем кодом HTML: <h1 class="bukva" id="bukva_<?= $lastChar; ?>"><?= mb_convert_case($lastChar, CASE_LOWER); ?></h1>
@Dimon2x если была половина проекта можно было и дизайн сделать который я нарисовал а там дальше уже со временем можно и специалистов подключить. Те файлы которые вы загрузили я их скопировал
@Ruslanpro А потом на главной появляется "25 подразделений и 25 компонентов гугл карт, и js-script, который меняет z-index чтобы была видна карта тыкнутого подразделения", это я к тому, что торопиться в нашем деле не стоит, надо четко понимать задачу и далеко не всегда первое решение будет правильным. А если честно-то изобретаешь какой-то многоколесный велосипед, тут всяко проще решить через CSS и классы, если ситуация такая как на image-7-png. Ты что хочешь в итоге получить?
@MRSgiba мне нужна страница со списком категорий разделенный буквами Например под буквой А все названия категорий начинающиеся на А и так по алфавиту. Название категорий будут добавляться через форму. Заходит зарегистрированный мастер на страницу со списком категорий (или в своем профиле где он может выставить свой профиль под нужную ему категорию) не находит подходящую под его специальность категорию может отправить через форму название категории чтобы добавили в список после одобрения модератором запись добавляется в базу-->выводится в списке категорий
@Ruslanpro Ну так и делай как ты написал: Так ты хочешь? https://codepen.io/anon/pen/bQXrxq Ну в твоем случае ЦСС немного надо поправить, вдруг на какие-то буквЫ не будет категорий, ну там сам разберешься ты же ПРО P.S. уже подправил
@Ruslanpro можно и на php решить. Дабы старожилы не закидали шапками по поводу ключей - русских букв. Создай ассоциативный массив из букв вида ['0'=>['А'], .. , '32'=>['Я']] получив результат из базы добавляй в этот массив все категории потом печатай.