пусть есть БД из 2-ух таблиц, Города id Название Улицы id buf_id Название_улицы. Эти таблицы связаны 1 ко многим. Я запускаю сценарий и там лишь список(он ниже) с названием городов , и рубрикатор . Код (Text): <form action="index.php" method="get"> <table class=City_Select> <tr> <td width=150> <b>Выбирете город</b> </td> <td> <select name="Select_City" size=1> <option value=1 selected>Санкт-Петербург</option> <option value=2>Москва</option> </select> </td> </tr> </table> </form> Я выбираю из списка городов нужный мне, пусть Питер. И то что я выбрал из списка , должно где-то сохранится. Далее нажимаю на буквы рубрикатора и т.к. я выбрал Питер то по нажатии буквы, например 'A', на экран будут выписываться улицы(в соответствии с запрсом ) Питера на 'A'. Если я выбираю другой город, например Москва, то должен запуститься вновь сценарий в моем случае index.php и должно отобразиться лишь исходная информация, т.е рубрикатор и список городов, а значение вновь выбранного города должно где-то храниться.И теперь когда я буду нажимать на буквы рубрикатора будет идти уже запрос к улицам Москвы. К этому значению я могу добраться через массив Get В общем как реализуются подобные задачи, нужно ли перезапускать рекурсивно сценарий, а потом через массив GET брать значение, того что я выбрал в списке. Или такие вещи как-то по-другому делаются?
Можно сабмитить форму на select.onchange() и перерисовывать страницу с рубрикатором, сразу передавая массив улиц и по нажатию на букву формировать вывод яваскриптом. Можно сабмитить форму при нажатии буквы на рубрикаторе и передавать сразу и город и выбранную букву, с этими данными делать запрос в БД и выводить результат Можно не сабмитить форму вообще, а на onclick() букв рубрикатора формировать яваскриптом url с параметрами текущей опции из селекта и нажатой буквы и переходить по ней. Можно аяксом передавать в скрипт город (текущее значение select'a) и принимать улицы. Первый вариант имхо самый дурацкий, но я его уже не раз встречал в нете. Второй и третий мало отличаются по смыслу. Но второй работает при отключенном js и позволяет если надо передавать данные post'ом а не get-ом ну а аякс - он и есть аякс
Можно использовать куки, а можно сессии. http://php.net/set_cookie http://php.net/session_start Можно использовать AJAX.
а зачем использовать куки и сессии? при смене города все равно php скрипт придется дергать, все равно с формы передавать выбранный город в скрипт. А тогда можно и в простой переменной хранить. Или вообще не хранить, все равно при нажатии на рубрикатор город с формы никуда не девается.
Конечно, Ajax. Кстати, первый вариант можно и без перезагрузки страниц делать. Сразу загружать все в виде JS-массивов/JSON и потом уже работать с ними на стороне клиента (JS). Но это не рационально. Получается, надо выбирать все записи из обеих таблиц и долго загружаться будет.
Народ спс вам за многочисленные советы, но я только начинаю осваивать все это web программирование, поэтому не могли бы вы помочь кодом , а то я могу воплотить ваши идеи в код.
Короче есть список Код (Text): <form action="index.php" method="get"> <table class=City_Select> <tr> <td width=150> <b>Выбирете город</b> </td> <td> <select name="Select_City" size=1> <option value=1 selected>Санкт-Петербург</option> <option value=2>Москва</option> </select> </td> </tr> </table> А мне надо чтобы при выборе нового значения сработал сценарий index.php и вывел значение, которе я выбрал в списке, т.е. Код (Text): Index.php <?php $s=$_GET['Select_city']; echo $s; } ?>
Оно? HTML: <form action="index.php" method="get"> <table class="City_Select"> <tr> <td width=150><b>Выбирете город</b></td> <td><select name="Select_City" size=1 OnChange="location='index.php?Select_city='+this.options[selectedIndex].text"> <option value=1 selected>Санкт-Петербург</option> <option value=2>Москва</option> </select></td> </tr> </table> P.S. Ты только не забудь фильтровать данные которые принимает скрипт... Что-то вроде: PHP: <?php $city = isset($_GET['Select_city']) ? htmlspecialchars($_GET['Select_city']) : null; echo $city; ?>
Вроде бы да. Я заменил значения в файлах на то что ты мне написал. Запускаю файл со списком, меняю город и на экран выписывается скрипт файла index.php. Я упростил сценарий в надежде увидеть результат до такого Код (Text): <?php $city = $_GET['Select_city']; echo $city; ?> и тоже самое... выводится все что записано в файле index.php. Что тут не так.
Если переданные данные будут идти в БД, перед записью их надо обработать фунцией mysql_real_escape_string и никак иначе.
У других php-скриптов расширение какое? *.php? Если да то, файл index.php имеет другое расширение не *.php, и потому не выводится. Если у других скриптов расширение не *.php, а например *.phtml то переименуй файл index.php в index.phtml.
А настройка эта называется AddType application/x-httpd-php .php у сервера apache, в конфиге, httpd.conf
AddType application/x-httpd-php .php у сервера apache, в конфиге, httpd.conf у меня в файле раскоменчена. Содержание файла index.php Код (Text): <?php $city = $_GET['Select_city']; echo $city; echo "asfasfasf"; ?> Я его отдельно запускаю и вижу результат работы скрипта-asfasfasf. Файл со списком Sel.html Код (Text): <form action="index.php" method="get"> <table class="City_Select"> <tr> <td width=150><b>Выбирете город</b></td> <td><select name="Select_City" size=1 OnChange="location='index.php?Select_city='+this.options[selectedIndex].text"> <option value=1 selected>Санкт-Петербург</option> <option value=2>Москва</option> </select></td> </tr> </table> А когда я меняю значение в списке, то результата работы скрипта я не вижу, а вижу все то что написано в файле index/php. Что у меня такое как с этим бороться?