Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > присвоение значения переменной в цикле


Автор: Slo_nik 8.5.2009, 16:00
Здравствуйте.
подскажите начинающему как правильно сделать.
проблема в следующем.
есть форма для подачи объявления, в ней две пары выпадающих списков, списки формируются из данных с базы.
при выводе первого списка мне надо переменной присвоить значение, что бы использовать её в запросе для второго списка.
первый список формируется без проблем, смотрел исходный текст в браузере, переменные создаются, но во второй список нужная переменная не попдает.
в первом случае для получения данных я использовал while, а во втором do... while, во втором списке всё работает.
как мне решить эту проблему?
прикрепляю файл с формой и ссылку на форму.
http://roganov.kharkov.ua/test/d3/form.php

Автор: enof 8.5.2009, 16:14
И сразу все кинулись курить исходник smile  Какая переменная, где?

Автор: Slo_nik 8.5.2009, 16:22
Цитата(enof @ 8.5.2009,  16:14)
И сразу все кинулись курить исходник smile  Какая переменная, где?

виноват,
в первом запросе мне надо присвоить значение $id_region

Автор: bars80080 8.5.2009, 16:25
товарищ, это вам

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

в данном конкретном случае это решение ajax

короче читать, читать и читать

Автор: enof 8.5.2009, 16:27
Пока боролся с 504, барс уже ответил smile
Можно обойтись и без аякса, просто сразу все подгружать и потом менять подкатегории взависимости от выбора.

Автор: bars80080 8.5.2009, 16:36
Цитата(enof @  8.5.2009,  16:27 Найти цитируемый пост)
просто сразу все подгружать и потом менять подкатегории взависимости от выбора. 

т.е. javascript, но не php

Автор: Slo_nik 8.5.2009, 16:42
bars80080, Вы совершенно правы, это моя вина, что я не полностью всё описал.
мне надо чтоб при выборе из первого списка подгружался второй.
я нашёл пример без использования базы данных, он работает, но мне надо что бы данные брались из базы, я попробовал переделать пример под свои нужды, для этого мне надо всё вынимать из базы, вот и пытаюсь это сделать.
с ajax и javascript я не знаком, если Вы можете мне помочь, то, пожалуйста, подскажите, как правильно сделать?

Автор: bars80080 8.5.2009, 17:43
значит самое время познакомиться. т.е. идти в соотв. разделы и читать предлагаемую там литературу

общий механизм выглядит примерно так:

для первого селекта пишется событие по изменению:

Код

<select id="region" onchange="getCity();">

в функции пишем вызов массива городов. как это сделать - надо читать, ибо объяснять слишком долго
если данные необходимо забирать с сервера (что естественно для таких больших списков), то формируем аякс-запрос, самый простой пример: http://forum.vingrad.ru/index.php?showtopic=234446&view=findpost&p=1685574
затем формируем список второго селекта. если же есть готовый массив городов, то сразу строим второй селект

как-то так:

Код

var mCity = new Array();
mCity[0] = [2, 'city1'];
mCity[1] = [15, 'city2'];
mCity[2] = [8, 'city3'];
...
mCity[n] = [23, 'cityn'];

var sel = document.getElementById('cities'); // где <select id="cities">
sel.length = 0;
cityL = mCity.length;
for(var i = 0; i < cityL; i++) {
    sel.options[i] = new Option(mCity[i][1], mCity[i][0]);
}


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

Автор: Slo_nik 8.5.2009, 18:49
начинаю знакомиться...
но проблемма в том, что надо сейчас это сделать...
не знаю что и делать. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)