Войти

Показать полную графическую версию : [решено] Флажок+выпадающий список


cibin
12-05-2012, 22:14
Идея токая нужно поставить форму флажок так что бы было условие: если поставили галочку то применяется выпадающий список для скрипта применяемый формой. Дело в том что выподающих списокв будет несколько и надо создать условие выбора клиента, он может выбрать все а может только несколько! Пока вот что получается


<input name="viborka" type="checkbox" value="1"/>
<strong>статус договора</strong></td>
<td><select name="status_id" id="status_id">

<?php
require_once "zashita.php";
require_once "bdconnect.php";
mysql_query("SET NAMES cp1251");
$sSQL_tar="SELECT * FROM status ORDER by id_status ASC";
$result_tar=mysql_query($sSQL_tar, $link);

if (mysql_num_rows($result_tar) == 0) echo"Результат запроса : 0";else
if (mysql_num_rows($result_tar) > 0)
while ( $row_tar = mysql_fetch_array($result_tar) ):
?>
<option value="<?php echo $status_id=$row_tar["id_status"];?>"><?php echo $row_tar["status_name"];?></option>
<?php endwhile ;


?>

</select>


Мне нужно как то впихнуть сюда условие установки фложка, я понимаю что это будет выглядеть типа так:

<input name="viborka" type="checkbox" value="1"/>
<?php
if (viporka=1)
{

?>
<strong>статус договора</strong></td>
<td><select name="status_id" id="status_id">

<?php
require_once "zashita.php";
require_once "bdconnect.php";
mysql_query("SET NAMES cp1251");
$sSQL_tar="SELECT * FROM status ORDER by id_status ASC";
$result_tar=mysql_query($sSQL_tar, $link);

if (mysql_num_rows($result_tar) == 0) echo"Результат запроса : 0";else
if (mysql_num_rows($result_tar) > 0)
while ( $row_tar = mysql_fetch_array($result_tar) ):
?>
<option value="<?php echo $status_id=$row_tar["id_status"];?>"><?php echo $row_tar["status_name"];?></option>
<?php endwhile ;


?>

</select>
<?php
}
?>


Я понимаю что это не правильно дело вот в чём как в флажке указать истинно и ложно, так что бы применить в условии. У меня есть ощущение что я не правильно написал условие!

Sham
13-05-2012, 06:25
Если флажок не стоит, то viborka не шлётся (переменная будет не определена).

cibin
13-05-2012, 08:55
Это был вопрос? да вы правильно меня поняли!

cibin
13-05-2012, 09:29
Т.е. мне как то надо определить что галочка это 1, а отсутствие это 0! Но вот как!?

cibin
13-05-2012, 13:49
суть в том что если галочку не ставит значит переменная $status_id не шлётся!

Sham
13-05-2012, 21:47
Зачем флажок, сделайте <option value="">не выбрано</option> для каждого селекта. Тогда будет пустая переменная. Читайте про empty(), isset() на php.net.

cibin
08-06-2012, 17:41
Надо мне как то дотукать как лучше сделать так что бы клиент мог выбирать по нескольким типам выборки выпадающего списка с учётом того что может выбрать любой из форм выпадающего списка и при этом из 7 форм ему нужно не все а только несколько и нам не известно что он выберет!?
Если учитывать что каждый выпадающий список это отдельная таблица можно ли сделать без возможности выбора в виде галочек или что ли бо подобное, если нет то как лучше реализовать, так что бы было максимально удобно!




P.S. Надо было начинать изучать Delphi, теперь уже поздно!

Та же проблема обстоит и здесь http://forum.oszone.net/thread-234428.html

cibin
11-06-2012, 09:19
Читайте про empty(), isset() на php.net. »

Я как то попытался использовать isset() в случаи с универсальным поиском http://forum.oszone.net/thread-234428.html но не получилось.

Теоретически я так понял что нужно сделать типа так

if (isset($_GET[status_id])) {$status_id = $_GET['status_id'];}

Т.е. это строка я так понял проверяет пустое ли значение $status_id.
По идеи дальше должно быть так что если не пустое то например переменная $t определяем текстом "and dogovor.status_id='$status_id'" дальше в селекте пишем: SELECT * FROM `dogovor`WHERE $t

1) Я правильно понимаю?
2) Я ни как не могу вспомнить как определить переменную как определённый текст?! стыдно но забыл!

Habetdin
11-06-2012, 09:58
cibin, isset - проверяет, задана ли переменная, а empty - пустая ли она.
SELECT***FROM*`dogovor`WHERE*and dogovor.status_id='$status_id'»
Не забудьте профильтровать $status_id, если это - цифра, то intval(), если текст - mysql_real_escape_string() (не забыв про замечания, указанные на php.net), итп :)
if (isset($_GET[status_id]))
$status_id = intval($_GET['status_id']);
else
$status_id = 0;

как определить переменную как определённый текст? »
Если вам нужно определить переменную как строку, то:
settype($var, "string");

cibin
12-06-2012, 21:51
Зачем флажок, сделайте <option value="">не выбрано</option> для каждого селекта. Тогда будет пустая переменная. Читайте про empty(), isset() на php.net. »

Очень умно придумано, самое смешное не сразу понял что вы придумали. По идеи получается что выбрав вариант "не выбрано" в sql запрос должен пойти пустое значение поиска. Там вступает проверка
if (isset($_GET[status_id]))
$status_id = intval($_GET['status_id']);

Дальше вступает скрипт запроса, т.е. выборка по типу id_status = ' '

Я правильно понял?

Если до попробовав то что посоветовали не сработало!

Моя идея заключалась в том что обозначить какую ни будь переменную (например $tt) как текст типа "and dogovor.status_id='$status_id'" в результате у нас получиться токая картина, что
1) вписываем данную переменную в sql скрипт выборки после WHERE
2) с перва идёт проверка на пустое значение, если пустое то скрипт запроса выполняет без данного значение поиска и он в результате должен выдать всю таблицу, в противном случаи он подставляет строку "and dogovor.status_id='$status_id'" с значение в место $status_id то значение которое выбрали!

Разве нельзя подобное в php создать? Вся загвоздка в том что
1) я не знаю как правильно вписать в sql скрипт переменную $tt
2) не знаю как в php сказать что $tt = "and dogovor.status_id='$status_id'"

Мне эту идею подкинул программист Си, вот и подумали почему так нельзя и если можно то как синтаксически правильно написать так что бы он работал???? Если здесь разберусь то думаю смогу понять как сделать так что бы заработал и универсальный поиск http://forum.oszone.net/thread-234428.html

Если кто сможет помочь буду оооооочень сильно благодарен!

cibin
21-06-2012, 17:18
Я скоро лопну или с ума сойду, может кто ни будь подсказать как заставить работать эти 2 файла (смотрите вложение)?? Не ужели это не возможно??

Если убрать условие проверки
if (isset($_GET[status_id])) $status_id = intval($_GET['status_id']); else $status_id = 0;
if (isset($_GET[vid_oplati_id])) $vid_oplati_id = intval($_GET['vid_oplati_id']); else $vid_oplati_id = 0;
if (isset($_GET[vid_billinga_id])) $vid_billinga_id = intval($_GET['vid_billinga_id']); else $vid_billinga_id = 0;
if (isset($_GET[sposob_peredachi_id])) $sposob_peredachi_id = intval($_GET['sposob_peredachi_id']); else $sposob_peredachi_id = 0;
if (isset($_GET[periodichnost_id])) $periodichnost_id = intval($_GET['periodichnost_id']); else $periodichnost_id = 0;
if (isset($_GET[sposob_oplati_id])) $sposob_oplati_id = intval($_GET['sposob_oplati_id']); else $sposob_oplati_id = 0;
if (isset($_GET[bank_id])) $bank_id = intval($_GET['bank_id']); else $bank_id = 0;

И в выпадающем список выбрать по всем 7 пунктам те по которым я знаю будет результат, он показывает запись. В случаи когда выбираешь пустые отказывается. При присутсвии в скрипте условие проверки он ни как не находит!

cibin
21-06-2012, 17:18
И то я подозреваю что я не правильно написал условие проверки!

Сам алгаритм у меня в голове крутить, но как это грамотно в скрипте отразить!?

Sham
22-06-2012, 01:39
$_GET[status_id] »
$_GET['status_id'] »
читайте на php.net про константы и строки.

cibin
22-06-2012, 09:20
Ладно хотя бы конкретную ссылку можете дать которая мне точно поможет!?




© OSzone.net 2001-2012