PHP, <select> и выборка из MySQL
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- мл. сержант
- Сообщения: 115
- Зарегистрирован: 2007-10-26 0:36:22
- Откуда: .UA
- Контактная информация:
PHP, <select> и выборка из MySQL
Привет уважаемым гуру.
Помогите найти решение для выполнения такой задачи:
Есть некоторое количество книг разбитое на категории и жанры.
Например: категория:"Художественная литература"
жанры категории: роман, детектив, повесть, драма, etc.
Задача(упрощенно):Хочется грамотно сделать фильтр книг на странице.
Остановился на выводе двух select-ов.
То есть изначально при загрузке страницы я заполняю первый "select" нужными optionam-и списка категорий из базы. А дальше нужно чтобы при выборе пользователем како-нить категории следующий селект заполнить списком жанров выбраной категории.
Впал в ступор. Пробовал через GET на основе события onclick в первом селекте(onchange у меня вообще не срабатывает ни в одном браузере), но такое сработало только в Opera. В жава не силен совсем. Чуть могу покодить на пхп.
Реально ли такое сделать. Пните в нужном направлении. Чето порыскал по тырнету и понял что эта проблема существует.
Може кто знает какие-то другие удобные методы реализации такой задачи.
заранее спс всем. )
Помогите найти решение для выполнения такой задачи:
Есть некоторое количество книг разбитое на категории и жанры.
Например: категория:"Художественная литература"
жанры категории: роман, детектив, повесть, драма, etc.
Задача(упрощенно):Хочется грамотно сделать фильтр книг на странице.
Остановился на выводе двух select-ов.
То есть изначально при загрузке страницы я заполняю первый "select" нужными optionam-и списка категорий из базы. А дальше нужно чтобы при выборе пользователем како-нить категории следующий селект заполнить списком жанров выбраной категории.
Впал в ступор. Пробовал через GET на основе события onclick в первом селекте(onchange у меня вообще не срабатывает ни в одном браузере), но такое сработало только в Opera. В жава не силен совсем. Чуть могу покодить на пхп.
Реально ли такое сделать. Пните в нужном направлении. Чето порыскал по тырнету и понял что эта проблема существует.
Може кто знает какие-то другие удобные методы реализации такой задачи.
заранее спс всем. )
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: PHP, <select> и выборка из MySQL
гм.. какая проблема?INFected писал(а):Чето порыскал по тырнету и понял что эта проблема существует.
это делается через http-реквест на яваскрипте.INFected писал(а):То есть изначально при загрузке страницы я заполняю первый "select" нужными optionam-и списка категорий из базы. А дальше нужно чтобы при выборе пользователем како-нить категории следующий селект заполнить списком жанров выбраной категории.
-
- мл. сержант
- Сообщения: 115
- Зарегистрирован: 2007-10-26 0:36:22
- Откуда: .UA
- Контактная информация:
Re: PHP, <select> и выборка из MySQL
Проблема с реакцией браузеров на одно и то же событие. (onclick, onchange)zg писал(а): гм.. какая проблема?.
Получается что нужно подключать AJAX ?zg писал(а): это делается через http-реквест на яваскрипте.

-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: PHP, <select> и выборка из MySQL
ну... аякс-шмаякс это только надстройка над http-реквестом. Можно сделать проще - сгенерить массивы и обойтись без реквестовINFected писал(а):Получается что нужно подключать AJAX ?
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: PHP, <select> и выборка из MySQL
Примерно так
Код: Выделить всё
<select id="s1"><option value=""></option></select><br>
<select id="s2"></select>
<script type="text/javascript">
var a = [];
a[0] = 'Книги';
a[1] = 'Журналы';
var d = [];
d[0] = ['Буратина', 'Колобок'];
d[1] = ['Мурзилка', 'Чип'];
// Заполняем категории
for(var i in a) {
var item = new Option(a[i]);
item.value = i;
s1.options[s1.options.length] = item;
}
// Обработка выбора селекта
s1.onchange = function(e) {
var id = this.options[s1.selectedIndex].value;
// Обнуление списка
s2.options.length = 0;
if ( id != '' )
{
for(var i in d[id])
{
var item = new Option(d[id][i]);
item.value = id;
s2.options[s2.options.length] = item;
}
}
}
</script>
-
- мл. сержант
- Сообщения: 115
- Зарегистрирован: 2007-10-26 0:36:22
- Откуда: .UA
- Контактная информация:
Re: PHP, <select> и выборка из MySQL
Тогда скорее всего попробую почитать в сторону http-реквеста. Когда-то поробовал заморачиваться с ним, но остался горький осадок. Не смог разобаться с кодировками.zg писал(а): ну... аякс-шмаякс это только надстройка над http-реквестом. Можно сделать проще - сгенерить массивы и обойтись без реквестов

З.Ы. Посмотрел код. Работает.

-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: PHP, <select> и выборка из MySQL
реквест работает только в UTF-8, и неважно в какой кодировке сайт, браузер перекодит.INFected писал(а):Не смог разобаться с кодировками. . На выходе получал кракозябры.
если категорий и книг порядка сотни, то генери массивы, быстрее будет работать, чем с реквестом, да и надёжнейINFected писал(а):Возможно остановлюсь на этом!

-
- мл. сержант
- Сообщения: 115
- Зарегистрирован: 2007-10-26 0:36:22
- Откуда: .UA
- Контактная информация:
Re: PHP, <select> и выборка из MySQL
Ну вот с этим я и не разобрался. Сдался.)zg писал(а):реквест работает только в UTF-8, и неважно в какой кодировке сайт, браузер перекодит.
Книг много. Около 20Гб в зипах. Категорий штук 5-7 и жанров в каждой порядка 3-5. А дальше кнопка сабмит отфильтрует все что нужно.zg писал(а): если категорий и книг порядка сотни, то генери массивы, быстрее будет работать, чем с реквестом, да и надёжней
Спасибо за помощь.

-
- мл. сержант
- Сообщения: 115
- Зарегистрирован: 2007-10-26 0:36:22
- Откуда: .UA
- Контактная информация:
Re: PHP, <select> и выборка из MySQL
с массивами все получилсось.
Но интересно все же узнать как получить на выходе кодировку win-1251 используя XMLHttp-Request.?
данные в mysql лежет в кодировке 1251, страница формируется тоже в
При использовании http-request на странице получаю квадратики.
Как побороть?
Частично проблемка решается при использовании метода overrideMimeType(), (тут нашел)но в этом случае все правильно отображается только в Mozilla и GoogleChrome. В Опера по прежнему квадратики. В ИЕ вообще не работает. В консоли ИЕ нашел сообщение
Строка 24 это и есть мой xmlHttp.overrideMimeType('text/plain; charset=windows-1251') Значит в ИЕ этот метод вобще не работает 
Но интересно все же узнать как получить на выходе кодировку win-1251 используя XMLHttp-Request.?
данные в mysql лежет в кодировке 1251, страница формируется тоже в
Код: Выделить всё
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

Частично проблемка решается при использовании метода overrideMimeType(), (тут нашел)но в этом случае все правильно отображается только в Mozilla и GoogleChrome. В Опера по прежнему квадратики. В ИЕ вообще не работает. В консоли ИЕ нашел сообщение
Код: Выделить всё
Сообщение: Object doesn't support this property or method
Строка: 24
Символ: 1
Код: 0
URI-код: http://10.10.10.10/lib/test.php

-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: PHP, <select> и выборка из MySQL
да всё банально просто - формируешь выходной XML в UTF-8. Если данные приходят из базы, то выставляешь кодировку на сединение UTF-8 и никаких проблем.INFected писал(а):Как побороть?
та не парься, сформировать XML в UTF-8 не так уж и сложно -)INFected писал(а):Значит в ИЕ этот метод вобще не работает
-
- мл. сержант
- Сообщения: 115
- Зарегистрирован: 2007-10-26 0:36:22
- Откуда: .UA
- Контактная информация:
Re: PHP, <select> и выборка из MySQL
При обращении к БД начинать нужно с этого?zg писал(а): ..... выставляешь кодировку на сединение UTF-8 и никаких проблем.
Код: Выделить всё
include('dbconf.php');
$dblink=mysql_connect($host,$user,$pass);
mysql_select_db($base,$dblink);
mysql_query ("set character_set_client='utf-8'");
mysql_query ("set character_set_results='utf-8'");
mysql_query ("set collation_connection='utf8_general_ci'");
$select = mysql_query("SELECT id, gnrname FROM gnrbook WHERE id='$ctg'");
echo "<select name='gnr' id='gnr'>";
while(list($id, $gnrname) = mysql_fetch_row($select))
{
// папытко выкрутиться: $srt=iconv('UTF-8', 'CP1251', $gnrname);
echo "echo <option value='$id'>$gnrname</option>";
}
echo"</select>";
mysql_close($dblink);
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: PHP, <select> и выборка из MySQL
в UTF-8 надо XML-файл формировать, сайт может и в 1251 быть.INFected писал(а):При обращении к БД начинать нужно с этого?
Суть такая:
1. Сайт (1251) посылает http-реквест на xml-файл
2. xml-файл должен быть в utf-8
3. браузер получает ответ в виде XML (UTF-8) и отдаёт его клиенту в нужной кодировке (1251)