не понял это новый файлик создать нужно чтоль? у меня запрос <form name="form1" method="post" action="/null/seriya_null.php">
PHP: <form action="1.php" method="post">img<input name="img" type="text"></form> <?php$q = "SELECT `name`, `path` FROM `".$_POST['table_db']."` WHERE `active` = 1 AND "; if (isset($_POST['img'])) { $q = $q."`".$_POST['img']."` = '' OR";} echo $q.' \n';echo $_POST['img'];?> PHP: $q = "SELECT `name`, `path` FROM `".$_POST['table_db']."` WHERE `active` = 1 AND "; if (!empty($_POST['img'])) { $q = $q."`".$_POST['img']."` = '' OR";} echo $q.' \n';echo $_POST['img']; Все работает! ввел 445 ниже что вышло SELECT `name`, `path` FROM `` WHERE `active` = 1 AND `445` = '' OR \n445 можно посмотреть поля базы --- добавлено: 7 фев 2013 в 17:32 --- вот так пойдет PHP: <form action="1.php" method="post">table_db<input name="table_db" type="text">pict<input name="pict" type="text">img<input name="img" type="text">pict_alt<input name="pict_alt" type="text">img_alt<input name="img_alt" type="text">rus_tpl<input name="rus_tpl" type="text">eng_tpl<input name="eng_tpl" type="text">text1<input name="text1" type="text">text2<input name="text2" type="text"><input name="" type="submit"></form> <?php$q = "SELECT `name`, `path` FROM `".$_POST['table_db']."` WHERE `active` = 1 AND ";if (!empty($_POST['pict'])) { $q = $q."`".$_POST['pict']."` = '' ";}if (!empty($_POST['img'])) { $q = $q."OR `".$_POST['img']."` = '' ";}if (!empty($_POST['pict_alt'])) { $q = $q."OR `".$_POST['pict_alt']."` = '' ";}if (!empty($_POST['img_alt'])) { $q = $q."OR `".$_POST['img_alt']."` = '' ";}if (!empty($_POST['rus_tpl'])) { $q = $q."OR `".$_POST['rus_tpl']."` = '' ";} if (!empty($_POST['eng_tpl'])) { $q = $q."OR `".$_POST['eng_tpl']."` = '' ";} if (!empty($_POST['text1'])) { $q = $q."OR `desc` < `".$_POST['text1']."` ";} if (!empty($_POST['text2'])) { $q = $q."OR `tech` < `".$_POST['text2']."`";}echo $q;?>
Смотри по запросу, сейчас я из POST все данные вынимаю и вставляю запрос если нужен `active` обязательно пиши так: PHP: foreach ($_POST as $key=>$item){$where .= ($where ? " " : " OR ") . $key . "='" . $item . "'"}$q = "SELECT `name`, `path` FROM `seriya` WHERE `active` = 1 AND (" . $where . ")";
вытяни $_POST['table_db'] раньше , к примеру $table_db = $_POST['table_db']; затем удали из стека unset($_POST['table_db']); а потом вставиш $q = "SELECT `name`, `path` FROM $table_db WHERE `active` = 1 AND ($where)";
PHP: <form action="1.php" method="post">table_db<input name="table_db" type="text">pict<input name="pict" type="text">img<input name="img" type="text">pict_alt<input name="pict_alt" type="text">img_alt<input name="img_alt" type="text">rus_tpl<input name="rus_tpl" type="text">eng_tpl<input name="eng_tpl" type="text">text1<input name="text1" type="text">text2<input name="text2" type="text"><input name="" type="submit"></form> <?phpif (!empty($_POST['table_db'])) {$q = "SELECT `name`, `path` FROM `".$_POST['table_db']."` WHERE `active` = 1 AND ";$_POST['table_db'] = null; <----------------------------- или unset($_POST['table_db']) одно и тоже foreach ($_POST as $key=>$item){$q .= ($where ? " " : " OR ") . $key . "='" . $item . "'";} echo $q." \n"; } else { echo 'no';} так правильней
вывело SELECT `name`, `path` FROM `444` WHERE `active` = 1 AND OR table_db='' OR pict='333' OR img='' OR pict_alt='' OR img_alt='' OR rus_tpl='' OR eng_tpl='' OR text1='' OR text2='' я заполнил 2 поля table_db и pict /// лишнее OR table_db='' OR должно быть так: <input type="text" name="text1" value="50"> - текстовое поле, заполнено 50, в запрос должно попасть `desc` < '50' ну и 2рое поле <input type="text" name="text2" value="50"> - попасть в запрос `tech` < '50' далее 6 чекбоксов: <input type="checkbox" name="pict" value="pict"> - попадает `pict` = '' Большая картинка<br> <input type="checkbox" name="img" value="img"> - попадает `img` = '' Маленькая картинка <input type="checkbox" name="pict_alt" value="pict_alt"> - попадает `pict_alt` = '' ALT для большой картинки<br> <input type="checkbox" name="img_alt" value="img_alt"> - попадает `img_alt` = '' ALT для маленькой картинки <input type="checkbox" name="rus_tpl" value="rus_tpl"> - попадает`rus_tpl` = '' {1} - RUS шаблон метаинформации<br> <input type="checkbox" name="eng_tpl" value="eng_tpl"> - попадает `eng_tpl` = '' ENG между всеми нужно OR самый важный момент - в запрос должны попадать только те параметры, в которых есть галочки --- добавлено: 7 фев 2013 в 19:35 --- если ставить unset($_POST['table_db']) то лишним появляется только OR (`active` = 1 AND OR text1='50') --- добавлено: 7 фев 2013 в 19:42 --- я так понимаю нужно это вывести во 2й запрос , так как в первом запросе значение поля должно быть пустым , а в этом оно должно быть цифиркой т.е. введено
LOMANI, попробуй так вывести PHP: $table_db = $_POST['table_db']; unset($_POST['table_db']); foreach ($_POST as $key=>$item){ if($key == 'text1'){$r="<";}elseif($key == 'text2'){$r=">";}else{$r="=";} $where .= ( $where ? " OR " : "" ) . $key . " $r '$item'";} $q = "SELECT `name`, `path` FROM `$table_db` WHERE `active` = 1 AND ($where)";
saxum2010, вывело SELECT `name`, `path` FROM `seriya` WHERE `active` = 1 AND text1 < '50' OR text2 < '50' OR pict = 'pict' OR img = 'img' изменил знак text2 < (не в ту сторону был) .... ну и значения pict \ img не пусты, а сами себя туда вписали --- добавлено: 8 фев 2013 в 05:34 --- а ещё в запросе должен быть не text1 \ text2 , а desc \ tech --- добавлено: 8 фев 2013 в 05:38 --- если тут $key . " $r '$item'"; убрать item то pict \ img будут пустыми как и нужно ..... но desc \ tech то же будут пустыми, а должны быть значения всё ещё можно обойтись без разделения скрипта? з.ы. пытался через $key as $keys сделать ... чет не получилось з.ы. запускаю прямо в рабочую БД, а не в воздух
PHP: $table_db = $_POST['table_db']; unset($_POST['table_db']); foreach ($_POST as $key=>$item) { if($key == 'desc'){$r="<";}elseif($key == 'tech'){$r="<";}else{$r="="; $item = '';} $where .= ( $where ? " OR " : "" ) . $key . " $r '$item'"; } $q = "SELECT `name`, `path` FROM `$table_db` WHERE `active` = 1 AND ($where)";
saxum2010, почти то что нужно, заменил в форме text1\text2 и получил SELECT `name`, `path` FROM `seriya` WHERE `active` = 1 AND (desc < '50' OR tech < '50' OR pict = '' OR img = '') ... супер не пойму зачем скобки AND ($where)"; но в базу так и не улетело, пробовал сделать так, вообще ничего не вывело кроме echo которые рисуют табличку PHP: $q = mysql_query ("SELECT `name`, `path` FROM `$table_db` WHERE `active` = 1 AND $where");
alxndr52, блин, точно, 3й раз я на эти ковычки напарываюсь в ЭТОМ скрипте, всё никак запомнить не могу --- добавлено: 8 фев 2013 в 09:57 --- аммм... а как это сделать? =)) так $key == '`desc`' и так <input type="text" name="`desc`" value="50"> не работает
оооо алилуля конечный результат PHP: $table_db = $_POST['table_db'];unset($_POST['table_db']);foreach ($_POST as $key=>$item){if($key == 'desc'){$r="<";}elseif($key == 'tech'){$r="<";}else{$r="="; $item = '';}$where .= ( $where ? " OR " : "" ) . '`'.$key.'`' . " $r '$item'";}$q = mysql_query ("SELECT `name`, `path` FROM `$table_db` WHERE `active` = 1 AND $where"); --- добавлено: 8 фев 2013 в 10:29 --- ещё такой вопрос как можно отключать \ включать тактовые поля т.е. по чек бокс (галочка) активирует текстовое поле куда вписывается значение, если не активировано то значение и параметр поля не отсылается вообще так как при значении 0 всё= выводятся те поля которые не хотелось бы выводить по эти параметрам
такой вариант: если On то работает нормально и нормально уходит в базу... если Off то запрос в базу не уходит PHP: <p><input type="radio" name="activ_desc" onClick="form1.desc.disabled=false;">On<input type="radio" name="activ_desc" onClick="form1.desc.disabled=true;" radio>Off<br/><span>Количество (минимум) знаков в описании: </span><input type="text" name="desc" disabled="disabled"></p><p><input type="radio" name="activ_tech" onClick="form1.tech.disabled=false;">On<input type="radio" name="activ_tech" onClick="form1.tech.disabled=true;" radio="radio">Off<br/><span>Количество (минимум) знаков в техническом описании: </span><input type="text" name="tech" disabled="disabled"></p>
Ну конечно не по теме, но вы хоть бы экранировали post. PHP: function clear($str) { $str = trim($str); $str = stripslashes($str); $str = htmlspecialchars($str); return $str; }