Ajax+php+mysql

Тема в разделе "PHP программирование", создана пользователем DiG, 1 май 2006.

Статус темы:
Закрыта.
  1. DiG

    DiG Гость

    Я думаю, все понимают, что время WEB 2.0. уже пришло. Поэтому нижеприведенная инфа будет интересна многим.

    У меня есть таблица в БД, допустим speciality. (специализация). В ней 3 поля: первое quantity (auto_increment), второе speciality, третье surname. В столбце speciality допустим идут значения сантехник, киповец, программер, строитель, мануальный терапевт и так далее. В столбце surnames – фамилии специалистов. Из базы извлекаются все значения столбца speciality и преобразовываются в массив special[]. Результат передаётся в функцию show_listbox

    Код (Text):
    <?
    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 тоже с переводом и примерами.

    Ещё один вопрос: а целесообразно ли вообще использовать АЯКС в таких конструкциях?
    Может на самом деле будет быстрее перезагрузить страницу? Итак, Ваши соображения господа программеры!
     
  2. s10

    s10 Гость

    а можно уточнить что находится в таблице speciality.
    если там чисто фамилии и специализации ,и они там не уникальные ,то на выходе, в массиве special[], получится полный бред :
    special[1] - программист
    special[2] - программист
    special[3] - терапевт
    special[4] - сиделка
    ...
    special[n] - терапевт

    и что делать ты будещь с таким массивом? в нем даже ид из базы записей нет?
    это первое.

    второе :
    <!--QuoteBegin-DiG+1:05:2006, 10:10 -->
    <span class="vbquote">(DiG @ 1:05:2006, 10:10 )</span><!--QuoteEBegin-->Мне нужно, чтобы при выборе специальности появлялся второй листбокс, в котором было бы предложено выбрать фамилию специалиста, из существующего списка.
    [snapback]34661" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    из существующего списка? какого списка? с фамилиями? откуда он взялся?

    ты хочешь что бы при выборе из одного списка с профессиями открывался второй список со всеми челами , у которых эта профессия? или как?
     
  3. Gisma

    Gisma Гость

    да именно так он и хочет
    Вообще по AJAX и не работающим функциям смотри сам где допустил ошибку, потому что из переданной тобой информации я (лично) не могу судить откуда у проблемы ростут рога. Вряд ли это из-за AJAX библиотеки, т.к. :
    1. о такой проблеме слышу впервые;
    2 если бы (!!!) эта библиотека убивал MySQL функции, то ее бы сам разработчик утопил бы :unsure:
    По использованию AJAX в таких приложениях. Принципиально это и есть одна из задача аякса, вот такие маааленькие фентифлюшки их использование делает страницу удобной, это тоже самое как тостер и сковородка и там и там сделаешь тост, но в первом варианте приятней выходит. Так что думай сам, если это место стоит того чтобы туда вставить AJAX то делай, если заказчику этот момент пофигу а время поджимает, то ессно не делай тогда лишних вставок кода.
     
  4. DiG

    DiG Гость

    2 s10 при выборке из базы достаточно использовать использовать distinct и в листбоксе у меня будут только уникальные. Уже сделано и проверено.
    2 Gisma
    C AJAX'ом тоже разобрался. Просто проинклудил функцию соединения с базой в самой библиотеке, а не там, где она мне была нужна. Всё работатет.
    З.Ы. А ты откуда? (город)
     
Статус темы:
Закрыта.

Поделиться этой страницей