|
|
|
| Доброго времени суток всем!
Суть: нужно сделать систему управления каталогом электронной библиотеки. Конкретно алфавитный указхатель и вывод книг по определенной букве алфавита.
Мое решение:
1. В таблице БД "books" есть 3 поля (ID, name, desc) вот...
2. в скрипте имеется меню в виде ссылок что-то вроде
<a href='index.php?letter=A'>A</a>
|
3. Если послана переменная $_GET["letter"], то скрипт начинает циклическую проферку данных из БД:
$letter = $_GET["letter"]; // Присваиваем значение (БУКВУ на которую нужно искать книгу)
$query = "SELECT * FROM books"; // Создаем запрос Выбираем из базы все книги
$result = mysql_query($query); // выполняем запрос
$books = mysql_fetch_array($result); // помещаем результат запроса в массив
do { // Начинаем циклическую обработку полученных данных
$booksplit = str_split($books['name']);
if($booksplit[0] == $letter) {
echo $books['name']."<br />"; // Если первая буква названия книги совпадает с искомой буквой, то выводим название
}
}
while($books = mysql_fetch_array($result));
|
Вот тут и возникает проблема !!! Если название в латинице, то все нормально, ну а если в кириллице, то скрипт ненаходит нужные книги... вот такая вот ерунда.. Кодировки скрипта, БД, таблиц, и отображения в браузере совпадают (utf-8). Кто может помочь...??? | |
|
|
|
|
|
|
|
для: FireParanoia
(26.02.2010 в 08:44)
| | str_split не работает с многобайтовыми кодировками.
Применяйте preg_match("/^([\S])/u",...) | |
|
|
|
|
|
|
|
для: Trianon
(26.02.2010 в 09:14)
| | А подробнее можно, а то я с регулярками не дружу.. ) | |
|
|
|
|
|
|
|
для: FireParanoia
(26.02.2010 в 09:23)
| | А я регулярку Вам уже нарисовал. | |
|
|
|
|
|
|
|
для: TrianoN
(26.02.2010 в 09:59)
| | Ну тоды, спасибо, буду изучать функцию прегматч, дабы понять как ее заюзать... | |
|
|
|
|
|
|
|
для: FireParanoia
(26.02.2010 в 08:44)
| | ну вот так то точно различит латиницу с кириллицей
<?php
if (isset($_GET['letter'])) $letter = addslashes($_GET['letter']); // Присваиваем значение
else $letter='';
//Создаем запрос выбираем из базы книги начинающие с искомой буквой
//и сортируем по возростанию
//если $letter пусто, выводит все книги
$query = "SELECT * FROM books WHERE name LIKE '".$letter."%' ORDER BY books";
$result = mysql_query($query); // запрос
$books = mysql_fetch_array($result);
do {
echo $books['name']."<br />"; // вывод списка
}
while($books = mysql_fetch_array($result));
?>
|
| |
|
|
|
|
|
|
|
для: bab-nike
(26.02.2010 в 13:19)
| | - | |
|
|
|
|
|
|
|
для: FireParanoia
(26.02.2010 в 08:44)
| | поправка
ORDER BY name | |
|
|
|
|
|
|
|
для: FireParanoia
(26.02.2010 в 08:44)
| | Очень советую выкинуть этот код.
В нем преизрядно ошибок разных уровней помимо нестыковки с utf. | |
|
|
|