2009-11-06 3 views
0

Я начинаю и стараюсь генерировать как можно больше моего собственного кода, не просто постоянно прося других написать его мне, поэтому в отношении этого вопроса, который я ищу для подсказок в правильном направлении, а не для прямых рабочих примеров. Вы, люди, очень талантливы, но я лучше всего учусь, если сам рассужу. Должен ли я ударить по кирпичной стене, я обязательно спрошу специфику. :-)подсказки по кодированию динамической формы для запроса mysql

Я хочу создать форму для MySQL-запроса, у которой есть довольно много опций флажка, не все из которых будут интересоваться большинством пользователей за один раз для одного поиска. Вместо того, чтобы представлять массивную форму, мне бы хотелось, чтобы первые несколько параметров определяли, сколько из следующих вариантов доступно для выбора, не переходя на новую страницу (если это возможно).

Гипотетический пример: база данных субъектов кино, в которой включена национальность каждого актера, и, выбирая ассортимент участников, запрос формы возвращает все фильмы, которые они отображают вместе.

ACTOR NATIONALITY 
[] Any 
[] German 
[] Russian 
[] British 
[] American 
[] Japanese 
[] Chinese 

сперва никакая дополнительная информация не отображается. Если проверка пользователя [] Any тогда полная форма раскрывается:

German Russian British American Japanese Chinese 
[]GER1 []RUS1 []BRIT1 []AMER1 []JPN1  []CHN1 
[]GER2 []RUS2 []BRIT2 []AMER2 []JPN2  []CHN2 
[]GER3 []RUS3 []BRIT3 []AMER3 []JPN3  []CHN3 
etc. 

но если пользователь заинтересован только, скажем, немецкие & японские актеры, он проверит эти две коробки и следующее затем появится ниже:

German Japanese 
[]GER1 []JPN1 
[]GER2 []JPN2 
[]GER3 []JPN3 

Я понимаю смысл?

Мои знания в области кодирования в этой точке ограничены PHP/MySQL, поэтому решение, которое включает только PHP, было бы идеальным, но если требуется JavaScript, пожалуйста, укажите мне в правильном направлении, и я постараюсь добавить необходимые знания!

Спасибо!

EDIT - да, вся информация чекбокс тянет из базы данных

+0

Вы хотите решение на одной странице или более чем на один шаг? – RageZ

+0

Я бы предпочел, чтобы все это происходило «на лету» на одной странице, с точки зрения пользователя. Я уверен, что уже знаю, как это сделать, используя только PHP и несколько страниц, но это создает медленный и громоздкий пользовательский интерфейс. – Drew

ответ

1

Я согласился с Сабином; javascript - это путь, но я бы использовал методы ajax, а не скрывал другие элементы формы ...

Вы можете использовать js для «прослушивания» событий, происходящих с первой группой флажков (например, onclick, onmouseover, что бы то ни было), и при внесении изменений вы можете использовать методы ajax для отправки данных формы на небольшой скрипт php , Затем этот скрипт определяет, какие подменю строятся, и возвращает соответствующий html-фрагмент в вызывающий php-скрипт. Js принимает этот ответ и манипулирует DOM, чтобы добавить новую группу флажков на страницу, без необходимости полной перезагрузки страницы.

Если вы новичок в мире js/ajax, то я могу порекомендовать jQuery. Другие ароматы js-рамки (с верхней части моей головы) включают Prototype, MooTools, Dojo.

Надеюсь, что это слишком расплывчато, вы сказали, что хотите толчок в правильном направлении, а не конкретные примеры! :)

EDIT. Я должен упомянуть, что я предположил, что данные, которые управляют этими флажками, поступают из db. Если нет, то метод Сабина проще реализовать и наносит гораздо меньшие накладные расходы.

+0

Это очень информативный ответ, спасибо. Существуют ли какие-либо важные термины или ключевые слова, связанные с тем, что я пытаюсь сделать, что я должен знать? Знание правильной терминологии всегда упрощает поиск информации. – Drew

+0

ajax и dom манипуляции большие. Вы не можете ошибиться, если исследуете одну из фреймворков js с этими двумя соображениями. – Mathew

+0

FYI - AJAX (асинхронный Javascript и XML) и DOM (Document Object Model) – Mathew

2

Я думаю, идти с JavaScript.

Я бы, вероятно, поставил подвыборы в TDs или DIVs и скрыл их со стилем = «display: none» и при флажке onclick event, если этот флажок установлен, я бы установил, что конкретный TD станет видимым. вы также можете добавить еще несколько javascript-кода, чтобы убедиться, что флажки в скрытых TD или DIVs не отмечены. а также повторить проверку на конец PHP. Если ANY отмечен, функция ur отображает все TD или DIV.

Подробнее:

Это потребует минимальных JavaScript от того, что я вижу. и PHP тоже должен быть довольно прямым, так как вы просто вытаскиваете все и эхо на странице и только скрываете DIV от пользователя, чтобы видеть, если он действительно не хочет его видеть. Использование PHP увеличило бы загрузку страницы, если вы не зайдете с AJAX, что может быть чрезмерным.

Таким образом, вы будете в основном иметь дело с свойством отображения атрибута style из javascript, должно быть простым.

+0

Спасибо, Sabeen! – Drew

+0

Я рад, что это имело смысл :) –

Смежные вопросы