Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Передача нескольких параметров в TSQL-запрос
Покинул форум
Сообщений всего: 19
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Здравствуйте уважаемые.
Уже несколько дней бьюсь головой об стенку не помогает , проблема заключается в том что пишу типа отчетную страничку и надо бы в TSQL - запросе передать несколько параметров и иногда некоторые параметры могу отсутствовать, как сделать так чтобы при запросе данных и отсутствии одного из параметров запроса заменить значением по умолчанию?
Например запрос:
SELECT Name, FName, WorkPlace FROM Users WHERE Name=".$User." AND FName=".FName."
и скажем попадется пользователь у которого нет фамилии а у меня в запросе стоит параметр FName=".FName." и соответственно выдаст мне ошибку,
Заранее благодарен за помощь.
С уважением.
Мелкий
Отправлено: 06 Сентября, 2011 - 20:29:00
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
if(!empty($where))$sql.=" where ".join(' and ',$where);
Спасибо огромное за ответ, узнал про empty и isset.
Но у меня проблема немного иного характера, например есть два параметра после WHERE Name=".$Name." AND FName=".$FName." если пользователь зашел на старичку и нажал кнопку ОТЧЕТ то запрос должен быть типа WHERE Name=".$Name." а если выбрал пункт FName из ComboBox то запрос будет типа WHERE Name=".$Name." AND FName=".$FName."
Спасибо за ответ
Мелкий
Отправлено: 07 Сентября, 2011 - 09:48:05
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Нет, я вас понял верно. По крайней мере второй раз - одинаково.
У вас может быть много if (/**/) $where[] = '`имя столбца`="'.$значение.'"'; потому и используется массив.
----- PostgreSQL DBA
komiller
Отправлено: 07 Сентября, 2011 - 10:40:53
Новичок
Покинул форум
Сообщений всего: 19
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Мелкий пишет:
Нет, я вас понял верно. По крайней мере второй раз - одинаково.
У вас может быть много if (/**/) $where[] = '`имя столбца`="'.$значение.'"'; потому и используется массив.
Прошу прошения за назойливость ) но тут возникла другая задача, пользователь заходит и просто нажимает кнопку ОТЧЕТ и формируется запрос такого рода:
SELECT Name, FName FROM Users WHERE Name=".$user."
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
option есть, значит выше - есть select. У select'а есть имя и оно передаётся крипту при отправке формы.
Вот и смотрите в обработчике - пришёл селект с формы, и если да, и не является служебным пунктом типа "выбери меня, выбери меня!", то вставляете условие в запрос..
----- PostgreSQL DBA
komiller
Отправлено: 07 Сентября, 2011 - 12:22:08
Новичок
Покинул форум
Сообщений всего: 19
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Мелкий пишет:
option есть, значит выше - есть select. У select'а есть имя и оно передаётся крипту при отправке формы.
Вот и смотрите в обработчике - пришёл селект с формы, и если да, и не является служебным пунктом типа "выбери меня, выбери меня!", то вставляете условие в запрос..
В запрос поставить параметр не проблема, только иногда пользователь может не выбрать этот пунк и запросить просто с WHERE UserId=".$user."
Мелкий
Отправлено: 07 Сентября, 2011 - 13:12:55
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Так о том и речь, ставить не только значение параметра, а весь кусок сравнения.
Например, чуть менее аккуратно по коду, но, наверное, более наглядно:
Когда просто нажимаю кнопку ОТЧЕТ показывает но мне еще нужно чтобы если выбрать параметр из комбобокс тоже показывало но уже с измененным параметром receipts.SourceId=".$agent."Отредактировано модератором: Мелкий, 07 Сентября, 2011 - 14:13:17 не обязательно цитировать всё сообщение. и обрамляйте код тегами php, code, в зависимости от кода.
Мелкий
Отправлено: 07 Сентября, 2011 - 14:20:42
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
komiller пишет:
Значениев КомбоБокс-е выбирается из вот этого:
В option комбо-боксов быть не может, или я совершенно ничего не понимаю в вебе. Это должно идти описание select'а.
А что происходит вашем коде я вообще не понимаю. Какие-то странные манипуляции над неизвестно откуда взявшимися данными. И, чувствуется мне, идти надо туда: http://php.su/phphttp/forms/
----- PostgreSQL DBA
komiller
Отправлено: 07 Сентября, 2011 - 14:39:36
Новичок
Покинул форум
Сообщений всего: 19
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
[quote=Мелкий]
komiller пишет:
Значениев КомбоБокс-е выбирается из вот этого:
В option комбо-боксов быть не может, или я совершенно ничего не понимаю в вебе. Это должно идти описание select'а.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.