nixp.ru v3.0

24 октября 2017,
вторник,
06:46:39 MSK

DevOps с компанией «Флант»
Anarchist написал 30 октября 2008 года в 10:12 (626 просмотров) Ведет себя как мужчина; открыл 258 тем в форуме, оставил 4097 комментариев на сайте.

Disclaimer: я не являюсь php-программером. Моих знаний хватает лишь на настучать по голове пых-пых (ш)кодеру, когда он пишет откровенную ахинею.

Ситуация: есть СУБД. В ней — таблица со списком атрибутов.

И список объектов, одним из полей описания которых являются значения из вышеупомянутого списка.

Есть форма с двумя полями типа «подстановка из списка значений».

Первое — тот самый список атрибутов.

Второе — список объектов.

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

Мнения нашего пых-пх (ш)кодера варьируются от долго/сложно до невозможно.

Мне же почему-то кажется, что всё не так сложно…

Не подскажете?

myst

Это надо на JavaScript делать. Потому что когда страница выплюнута, PHP уже отработал. Как вариант: можно сделать с sumbit, но лучше на JavaScript.

Anarchist
myst
Это надо на JavaScript делать. Потому что когда страница выплюнута, PHP уже отработал. Как вариант: можно сделать с sumbit, но лучше на JavaScript.

Можешь предложить решение?

myst

Насколько я понимаю, без AJAX тут особо не сделаешь. Потому что, ясное дело, что JS не видит PHP-шных объектов. А сам PHP уже отработал. Надо помурыжить кого-нибудь из web-кодеров, сам я в вебне не рублю.

P.S. Народ советует использовать <font color=«blue»>jQuery</font>.

Curu3MyHg
Anarchist
Можешь предложить решение?

Javascript обалденно хорош тем, что всегда доступны исходники.

Тебе всего навсего надо было поискать в нете страничку с похожим функционалом.

Простейший вариант, на вытаскивание которого из сорца странички у меня ушло двадцать минут (я совершенно не знаю javascript):

<html>
<body>

<script language=«javascript» type=«text/javascript»>
</script>

function Display(which) {

var RegArray = new Array();

RegArray["one"]=«Раз»;

RegArray["two"]=«Два»;

for (k in RegArray) {

if (which==RegArray[k]) {

document.getElementById(k).style.display=«block»;

} else {

document.getElementById(k).style.display=«none»;

}

}

}

</script>

</head>

Choose one or two</h2>


<form action="» method=«post»>

<select name=«num» onchange=«Display(this.value)»>
<option value=«Раз»>Разз</option></option>
<option value=«Два»>Дваа</option></option>
<option value=«1_aaa»>1_aaa</option></option>
<option value=«1_bbb»>1_bbb</option></option>
<option value=«1_bbb»>1_ccc</option></option>
<option value=«2_aaa»>2_aaa</option></option>
<option value=«2_bbb»>2_bbb</option></option>
<option value=«2_bbb»>2_ccc</option></option>
</select>
</form>
</body>
</html>

myst

Ну если без AJAX, то страница будет огроменная. Это же надо будет запихать в неё на этапе генерации всё то добро из БД, о котором говорилось в первом посте. Не говоря уже о том, что PHP-объекты (тоже упоминались) из JS не будут видны.

Curu3MyHg
myst
Ну если без AJAX, то страница будет огроменная. Это же надо будет запихать в неё на этапе генерации всё то добро из БД, о котором говорилось в первом посте. Не говоря уже о том, что PHP-объекты (тоже упоминались) из JS не будут видны.

Да, но, если я правильно понял вопрошающего, сейчас и так «всё то добро из БД» в страницу пихается, значит, не такая уж и большая страница.

myst

Если объёмы позволяют запихать всё в страницу, тогда, ясное дело, никаких AJAX’ов не нужно, да.

Anarchist
myst
Если объёмы позволяют запихать всё в страницу, тогда, ясное дело, никаких AJAX’ов не нужно, да.

Поподробнее про объёмы/ограничения можно.

В моём случае ожидается список из ~300 +-50 строк.

myst

А что тут подробнее? Запихай в страницу, посмотри, какого размера она получилась, и решай сам — устраивает тебя страница такого размера или нет. А ограничений никаких нет, это же HTML.