|
|
|
|
<tr >
<td class="quick_td">Тип</td>
<td><select size="1" type="text" name="searchField[]" class="textfieldsel" style="width:165px;">
<option value="">выберите<option>
<option value="1" [{if $filter.searchField == "1"}]selected [{/if}]>номер</option>
<option value="2" [{if $filter.searchField == "2"}]selected [{/if}]>имя</option>
<option value="3" [{if $filter.searchField == "3"}]selected [{/if}]>место</option>
<option value="4" [{if $filter.searchField == "4"}]selected [{/if}]>адрес</option>
</select></td>
<td class="quick_td">сравнение</td>
<td><select size="1" type="text" name="searchCompare[]" class="textfieldsel" style="width:100px;" align = "center">
<option value="">выберите<option>
<option value="1" [{if $filter.searchCompare == "1"}]selected[{/if}]>=</option>
<option value="2" [{if $filter.searchCompare == "2"}]selected[{/if}]>></option>
<option value="3" [{if $filter.searchCompare == "3"}]selected[{/if}]><</option>
<option value="4" [{if $filter.searchCompare == "4"}]selected[{/if}]>>=</option>
<option value="5" [{if $filter.searchCompare == "5"}]selected[{/if}]><=</option>
</select></td>
<td class="quick_td">peзультат</td>
<td class="quick_td"><input type="text" name="searchValue[]" class="textfieldsel" style="width:165px;" value=[{if $filter.searchField == "1"}][{$filter.b_nr}][{/if}] ></td>
<td class="quick_td">сравнение 2</td>
<td><select size="1" type="text" name="searchAdd[]" class="textfieldsel" style="width:100px;" align = "center">
<option value="">выберите<option>
<option value="1" [{if $filter.searchAdd == "1"}]selected[{/if}]>and</option>
<option value="2" [{if $filter.searchAdd == "2"}]selected[{/if}]>or</option>
</select></td>
</tr>
|
<td align="right"><input class="submit" type="submit" name="filter" value="вывод" ></td>
Помогите сделать фильтр с тремя селектами, например, когда выберем Тип - Номер, Сравнение - =, вписывается результат , при наэатии кнопки submit, должен выводится результат. подскажите как? | |
|
|
|
|
|
|
|
для: kuzya13
(14.05.2008 в 15:24)
| | никто не может помочь??????? | |
|
|
|
|
|
|
|
для: kuzya13
(14.05.2008 в 15:24)
| | Ну во-первых, уберите в именах списков [] (как в прочем и у других элементов формы). Это нужно добавлять селекту тогда, когда селект с мультивыбором. Во-вторых - что вывести, значение всех выбранных селектов? Где вывести и в какой форме? | |
|
|
|
|
|
|
|
для: sim5
(14.05.2008 в 17:37)
| | он и есть мультивыборный | |
|
|
|
|
|
|
|
для: kuzya13
(14.05.2008 в 17:51)
| | вывести нужно в ввиде таблицы | |
|
|
|
|
|
|
|
для: kuzya13
(14.05.2008 в 17:55)
| | Список с мультивыбором должен иметь атрибут multiple, у вас это не наблюдается. Имя поля формы с добавлением [] оправдано тогда, когда таких полей с одинаковым именем в форме несколько (массив), этого у вас тоже нет. Зачем вы тогда добавляете? Вы выбранные значения списков хотите вывести в таблицу при выводе формы (у вас Смарти ведь работает) или динамически отображать выбор посредством JS?
PS. Мультивыбор списка, это когда можно выбрать несколько значений в списке, может вы немного путаете, имея ввиду выбор из нескольких списков? | |
|
|
|
|
|
|
|
для: sim5
(14.05.2008 в 18:02)
| | у меня имеется такая функция
function getFilterQuery()
{
global $_POST, $rs;
$query = "";
for ($i=0;$i<count($_POST['searchField']);$i++){
// vt_bo_id = 12345 AND
$query .= $_POST['searchField'][$i] ." ". $_POST['searchCompare'][$i] . " " . $_POST['searchValue'][$i] . " " . $_POST['searchAdd'] . " ";
$i++;
}
return $query;
}
в tpl тоже самое | |
|
|
|
|
|
|
|
для: kuzya13
(14.05.2008 в 18:06)
| | В tpl вообще-то будет не это, а другое, например, SECTION, коим вы и разложите переданный в Смарти массив. Ну бог с ним, коли у вас несколько инпутов с одинаковым именем, то значит и должно быть name[]. Но вот со списком - без указания <select name="as[]" multiple> имя списка указывайте как as, иначе будут проблемы.
Вы не ответили на вопрос - когда вы хотите вывести выбранные значения списков: при выводе этого шаблона, или непосредственно при выборе опшенов списков пользователем? | |
|
|
|
|
|
|
|
для: sim5
(14.05.2008 в 18:19)
| | непосредственно при выборе опшенов пользователем | |
|
|
|
|
|
|
|
для: kuzya13
(14.05.2008 в 18:22)
| | Тогда ваш вопрос не имеет отношения ни к Смарти, ни к РНР тем более. Вам в раздел JS, где описать задачу вывода значений выбранных опшенов списков (с мультивыбором), куда и в каком порядке. Получить значения списка просто, достаточно указать событию onchange списка функцию-обработчик. Но вам нужно еще создавать посредством JS таблицу для вывода значений списков... | |
|
|
|
|
|
|
|
для: sim5
(14.05.2008 в 18:32)
| | Помогите сделать фильтр с тремя селектами, например, когда выберем Тип - Номер, Сравнение - =, вписывается результат , при наэатии кнопки submit, должен выводится результат. подскажите как? | |
|
|
|
|
|
|
|
для: kuzya13
(14.05.2008 в 18:36)
| | При нажатии кнопки SUBMIT, это уже отправка формы на сервер, поэтому принимайте на сервере значения и делайте с ними что хотите. Вы не знаете как получить данные списка на сервере, или получаете данные, но не знаете как их вывести? | |
|
|
|
|
|
|
|
для: sim5
(14.05.2008 в 18:41)
| | мне не понятна сама логика, получить и передать данные не проблема.
получатеся если в первом селекте = 1, то выбираются поля с одного поля, затем сравнивается с селектом вторым при помощи логических оператор, вписывается результат стравнения, при нажатии на кнопку должен выводится результат. я не знаю как это все реализовать | |
|
|
|
|
|
|
|
для: kuzya13
(14.05.2008 в 18:51)
| | Так вы вопрос, видимо, не так задали. Я понимаю вас так - вам нужно отметить опшен (или опшены) последующего списка, в зависимости от выбранных значений предыдущего списка, при формировании списков? Либо просто сравнить значение опшена (опешенов, в этом случае могут быть неоднозначные ситуации) двух списков? | |
|
|
|
|
|
|
|
для: sim5
(14.05.2008 в 18:54)
| | да
вроде такой функции
if($_POST['searchField[]']=="1" ){
$sql = "SELECT имя поля FROM таблица ";
} | |
|
|
|
|
|
|
|
для: kuzya13
(14.05.2008 в 18:59)
| | или же с помощью switch($_POST["]){
case 0: $sql .= "";break; ??????????????? | |
|
|
|
|
|
|
|
для: kuzya13
(14.05.2008 в 18:59)
| | Еще раз повторяю - [] в имени означает, что это массив значений опшенов списка с мультивыбором, либо это несколько списков с одним именем (массив списков). И принимать его надо, в вашем случае, как $_POST['searchField'], без указания [], если только это не многомерный массив списков. Вы сперва разберитесь с этим, потому как вы будете получать два значения массива (или более), что никак вам не позволит четко определить в условии - что делать.
Вы по приему формы выведите в браузер весь получаемый вами массив POST, и посмотрите что вы получаете:
print_r($_POST);
Собственно по вашему примеру не видно - где тут сравнение о котором вы говорили?
PS. В общем вот вам домашнее задание. )) Создайте маленький файлик test.php и поместите в нем следующее:
<form action="" method="post">
<select name="as[]">
<option value="1">111</option>
<option value="2">222</option>
<option value="3">333</option>
</select>
<select name="as[]">
<option value="4">444</option>
<option value="5">555</option>
<option value="6">666</option>
</select>
<select name="as2[]" multiple>
<option value="1">111</option>
<option value="2">222</option>
<option value="3">333</option>
</select>
<input type="submit" value="Send">
</form>
<?php
print "<pre>";
print_r($_POST);
print "</pre>";
?>
|
В данном примере в форме три списка. Два первых объденены в массив as, а третий список, это список с мультивыбором. Запустите скрипт на исполнение, выбирайте значения списков и смотрите, что вы будете получить из формы. Уясните себе это. Мне кажется у вас проблемы как раз в этой плоскости. | |
|
|
|
|
|
|
|
для: sim5
(14.05.2008 в 20:15)
| | или вы не понимаете меня, или я не так объясняю
Я вам уже сказал, что мне просто нужно, один sql запрос написать, ваше дамошнее задание оставте для школьников | |
|
|
|
|
|
|
|
для: kuzya13
(15.05.2008 в 10:43)
| | Скорее всего не так объясняете, уж если на то пошло. А зря вы не захотели сделать простое и посмотреть, что вы получаете, ибо такого:
if($_POST['searchField[]']=="1" ) {....
вы би не писали тогда. Я от вас так и не узнал, что предстваляют ваши списки. Допустим, вы имеете два списка с одним именем (как в примере два первых), а вот что вы получите, если выбор будет в двух списках:
Array
(
[as] => Array
(
[0] => 2
[1] => 6
)
)
|
Как вы думаете, получите ли вы эти значения, если будете проверять так, как вы это делаете? Если говорить о примере, то чтобы узнать, что я получаю из первого списка, то надо проверять $_POST['as'][0], второго $_POST['as'][1]... Так что думать надо и если не можете объяснить или не понимаете, то не стоит брезговать простыми примерами. | |
|
|
|
|