|
|
|
AJAX+PHP+MySQL
|
|||
|---|---|---|---|
|
#18+
Я думаю, все понимают, что время WEB 2.0. уже пришло. Поэтому нижеприведенная инфа будет интересна многим. У меня есть таблица в БД, допустим speciality. (специализация). В ней 3 поля: первое quantity (auto_increment), второе speciality, третье surname. В столбце speciality допустим идут значения сантехник, киповец, программер, строитель, мануальный терапевт и так далее. В столбце surnames – фамилии специалистов. Из базы извлекаются все значения столбца speciality и преобразовываются в массив special[]. Результат передаётся в функцию show_listbox <? include 'sql.php'; //тут подключаемся к БД $result = mysql_query("SELECT speciality FROM specialities"); while ($row = mysql_fetch_array($result, MYSQL_NUM)) { $special[]="$row[0]"; $num = mysql_num_rows($result); } mysql_free_result($result); function show_listbox($i, $num, $special){ echo '<SELECT NAME="names">'; while ($i < $num){ echo '<OPTION VALUE=" '; echo $special[$i]; echo ' ">'; echo $special[$i]; echo '</OPTION>'; $i++; } echo "</select>"; } show_listbox(0, $num, $special); ?> На выходе имеем листбокс, в котором на выбор предлагаются все специализации, начиная с выбранной точки отсчёта ($i). Мне нужно, чтобы при выборе специальности появлялся второй листбокс, в котором было бы предложено выбрать фамилию специалиста, из существующего списка. Конечно желательно модифицировать существующую функцию, а не писать ещё одну. Естественно было бы очень приятно, чтобы второй листбокс появлялся без перезагрузки страницы, т.е. используя технологию AJAX. В JS я абсолютный дуб/нуб, поэтому использую готовую библиотеку KA AJAX. Там достаточно зарегистрировать PHP функцию, и повесить её на JS обработчик. Но МySQL функции напрочь отказываются работать. Тут есть вышеупомянутая библиотека с комментариями разработчика и примером использования и статья Криса Хэдлока, о MySQL и AJAX’e тоже с переводом и примерами. Исчо адин вапрос: а целесообразно ли вообще использовать АЯКС в таких конструкциях? Может на самом деле будет быстрее перезагрузить страницу? Итак, Ваши соображения господа программеры! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2006, 11:52:42 |
|
||
|
AJAX+PHP+MySQL
|
|||
|---|---|---|---|
|
#18+
авторЕстественно было бы очень приятно, чтобы второй листбокс появлялся без перезагрузки страницы, т.е. используя технологию AJAX. В JS я абсолютный дуб/нуб, поэтому использую готовую библиотеку KA AJAX. Там достаточно зарегистрировать PHP функцию, и повесить её на JS обработчик. Но МySQL функции напрочь отказываются работать. Должно быть Вами не указан include 'sql.php'; //тут подключаемся к БД в вызываемой функции... ИМХО, время Веб2 уже пришло, поэтому вебпрограмист должен уверенно обладать jscript, хотя бы потому чтобы самому написать собственную ajax библиотеку, заточенную под свои нужды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2006, 13:46:41 |
|
||
|
AJAX+PHP+MySQL
|
|||
|---|---|---|---|
|
#18+
Не большой вопросец по Вашему коду: неужели при проходе по набору записей функция mysql_num_rows() возврящает разные значения? Ещё не понятно зачем вообще таскать с собой $num (в качестве размера массива $special), ведь размер массива можно узнать в любое время? И уже совсем маленькая заметка вместо mysql_fetch_array($result, MYSQL_NUM) может стоит использовать mysql_fetch_row($result)? Ведь результат не меняется, а работает чуточку быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2006, 14:00:02 |
|
||
|
AJAX+PHP+MySQL
|
|||
|---|---|---|---|
|
#18+
А выводить первый список можно и без явного перебора массива: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2006, 14:07:51 |
|
||
|
AJAX+PHP+MySQL
|
|||
|---|---|---|---|
|
#18+
Robert Tappan MorisА выводить первый список можно и без явного перебора массива: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Ну и какой результат: 2 функции, вместо одной, сущность которой есть вывод контрола. Тем более array_walk() как раз и выполняет перебор массива. При чтении постов автора возникает ощущение, что он вместо конструктивных ответов на вопросы, постит свои собственные варианты исполнения кода, с целью накручивания счетчика постов. Даже не обращаю внимания на первоначальный вопрос нити форума ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2006, 14:34:37 |
|
||
|
AJAX+PHP+MySQL
|
|||
|---|---|---|---|
|
#18+
2 def1983 я наверно Вас разочарую, но выше приведёные мои посты всего-лишь мысли по повуду кода тредстартера. Ваше мнение - Ваше право. 2 NEDI решение вашей проблемы, на мой взгляд, можно найти вынеся содержимое таблицы в виде массива в JS и генерации кода (HTML) для отображения соответствующих контролов. А как продолжение этого варнианта можно при выборе пункта первого списка подгрузить (<script src="..."></script>) требуемые данные и выполнить JS код для отображения/обновления 2-го списка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2006, 14:58:29 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=33700147&tid=1476253]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
3ms |
| others: | 208ms |
| total: | 376ms |

| 0 / 0 |
