Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Можно ли упростить?
 
 автор: MIchail1982   (29.11.2006 в 17:52)   письмо автору
 
 

Есть форма, из которой я получаю данные методом POST с чекбоксов (С1-4) и текстовых полей (S1-4)
и формирую из них строчку запроса к БД

<?php
$num
=0;
if (
$num==and $C1=='ON') {$num=1$q1="T=$S1";};
if (
$num==and $C2=='ON') {$num=1$q2="U=$S2";}
   elseif (
$C2=='ON')$q2=" and U=$S2";
   else {
$q2='';};
if (
$num==and $C3=='ON') {$num=1$q3="V=$S3";}
   elseif (
$C3=='ON')$q3=" and V=$S3";
   else {
$q3='';};
if (
$num==and $C4=='ON') {$num=1$q4="W=$S4";}
   elseif (
$C4=='ON')$q4=" and W=$S4";
   else {
$q4='';};
   
echo 
$q1$q2$q3$q4;
?>


можно ли эту махину каким то образом уменьшить?

   
 
 автор: Trianon   (29.11.2006 в 18:00)   письмо автору
 
   для: MIchail1982   (29.11.2006 в 17:52)
 

Можно. Но проще будет переделать форму.
<br/><input type=checkbox name="C[]" value=T ><input name=T >
<br/><input type=checkbox name="C[]" value=U ><input name=U >
<br/><input type=checkbox name="C[]" value=V ><input name=V >
<br/><input type=checkbox name="C[]" value=W ><input name=W >


foreach($_POST['C'] as $cb) $list[] = "$cb=".$_POST[$cb];
$expr = implode(' and ', $list);
echo $expr;


Это если без проверки входных данных.

   
 
 автор: MIchail1982   (13.12.2006 в 00:48)   письмо автору
 
   для: Trianon   (29.11.2006 в 18:00)
 

неполучится, запрос будет выглядеть так
and T like ... and W like...
а надо так
T like ... and W like...

тоесть про первом попадании на включенный чекбокс and не должен ставится

   
 
 автор: Trianon   (13.12.2006 в 10:15)   письмо автору
 
   для: MIchail1982   (13.12.2006 в 00:48)
 

Вы сперва подумайте, потом попробуйте, а потом уж пишите, получилось или нет.

   
 
 автор: cheops   (13.12.2006 в 13:37)   письмо автору
 
   для: MIchail1982   (13.12.2006 в 00:48)
 

Функция implode() помещает первый аргумент между элементами массива из второго аргумента, поэтому ведущего and в WHERE-условии не будет, Trianon предложил рабочее решение - попробуйте его использовать.

   
 
 автор: Michail1982   (14.12.2006 в 18:40)   письмо автору
 
   для: cheops   (13.12.2006 в 13:37)
 

Да, получилось, извените
возникла другая проблема
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=28577&page=1
там последний код

решил разделить скрипт на части
приверка+ первый запрос к БД / запрос с лимитом + вывод

и переменная , получившаяся после порверки выглядит так T like '123' and U like 'qwe'

при передаче её другому скрипту её значение "обрезается" первым символом ' тоесть "T like "
можно конечно до последнего скрипта передавать 8 переменных, но зачем??
подскажите, как это исправить

   
 
 автор: Trianon   (14.12.2006 в 19:15)   письмо автору
 
   для: Michail1982   (14.12.2006 в 18:40)
 

значения полей атрибутов тегов следует htmlspecialchar'ить и брать в кавычки.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования