Автор Тема: несколько форм,как быть?  (Прочитано 6851 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Aleksis

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
несколько форм,как быть?
« : 04 Февраля 2004, 19:53:01 »
имеем 4 формы (поиск по фамилиям,отделам и так т.д), данные передаются на поиск
"select * from table where fam like \'$fam%\' order by fam,name"

то есть поиск по фамилиям работает,теперь хотим сделать поиск по отделам,получаем переменную из формы,а вот как и столбец поменять,чтоб в select where не fam был, а otdel?

Надо: "select * from table where fam like \'$fam%\' order by fam,name"
"select * from table where otdel l \'$otdel\' order by fam,name"
..................................
"select * from table where tel \'$tel\' order by fam,name"
объединить в один select.

Предложения---"select * from table where $pole \'$fam\' order by fam,name",где $vxod будет определяться в php при передаче из формы,в зависимости от выбранного поля.
 $pole=array();
if(isset($_GET[\'fam\']))$pole[]="fam=\'{$_GET[\'fam\']}\'";
if(isset($_GET[\'otdel\']))$pole[]="otdel=\'{$_GET[\'otdel\']}\'";

$query = "select * from sot where ".implode(",",$pole) ;

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #1 : 04 Февраля 2004, 20:13:43 »
ты совершенно верно все сам придумал!

только писать строки надо не так развесисто, и имплодить надо, конечно, через оператор AND

вообще, у тебя не 4 формы, а два вопроса:
какой нужен запрос
и как его составить
:-)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #2 : 04 Февраля 2004, 20:16:44 »
и isset тут не подходит - поле придет, хоть и пустое
да и не нужен он. првоерить, что форма проишла один раз - достаточно.

if($fam=trim($_GET[\'fam\']))$pole[]="fam=\'$fam\'";
$query = "select * from sot where ".implode(" AND ",$pole) ;

и не забудь прочитать http://faq.phpclub.net/
там, кроме защиты, есть специальный абзац про поиск.

Оффлайн Aleksis

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #3 : 04 Февраля 2004, 20:26:21 »
как же его правильно составить(не развесисто),не работает мой запрос,
работу функции разъясните implode плиз
.implode(",",$pole)          ","-ставит что? $pole-понятно --значение от массива array

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #4 : 04 Февраля 2004, 20:35:24 »
так, во-первых.
тебе нужно не 4 формы, а одну.
во-вторых, если запрос не работает, то его надо вывести на экран и поимотреть, как он выглядит и что неправильно.
если не понял сам - скопируй в форум.
я же не могу на расстоянии угадать, правда?

implode делает из массива строку, склеивая его элементы строкой, которая указана в первом параметре.
еще можно попробовать почитать в документации.

запрос в результате мы хотим получить такой
select * from sot where fam=\'пупкин\' AND otdel=\'секретуткин\';
если по двум полям ищем.
или просто
select * from sot where fam=\'пупкин\'
если по одному

выводи, в общем, запрос на экран

если ты собираешься искать только по одному из полей, то никакого имплода и массива не нужно.
ты этот код где-то взял?

Оффлайн Aleksis

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #5 : 04 Февраля 2004, 20:52:22 »
да взял,искать надо только по одному из полей, (or в selecte не подходит)
поиск по фамилиям


 

поиск по отделам


 

поиск по номерам


 
 
ht.php
надо чтоб когда идет поиск по фамилиям был такой select:
$query = "select * from sot where fam like \'$fam%\' \'";
когда идет поиск по отделам надо
$query = "select * from sot where otdel like \'$otdel\' \'";
и по телефонам
$query = "select * from sot where tel like \'$tel\'";
Запрос
($query = "select * from sot where fam like \'$fam%\' or otdel=\'$otdel\'";) не подходит

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #6 : 04 Февраля 2004, 21:17:10 »
и так трудно догадаться?
ПРИ ЧЕМ ЗДЕСЬ or???????
откуда ты его достал?
если надо по одному - то и делай по одному.

Цитировать
Aleksis:
надо чтоб когда идет поиск по фамилиям был такой select:
$query = "select * from sot where fam like \'$fam%\' \'";
когда идет поиск по отделам надо
$query = "select * from sot where otdel like \'$otdel\' \'";
и по телефонам
$query = "select * from sot where tel like \'$tel\'";
Запрос
($query = "select * from sot where fam like \'$fam%\' or otdel=\'$otdel\'" не подходит

вот и переведи это на пхп.
не мудрствуя лукаво.
безо всяких оров, массивов и так далее.
ты смысл if isset понимаешь хотя бы?
этого тебе за глаза достаточно

Оффлайн Aleksis

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #7 : 04 Февраля 2004, 21:56:49 »
$_GET[\'\'] как присвоить $ то что в скобках

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #8 : 04 Февраля 2004, 22:21:33 »
этого делать не надо.
пиши целиеком запрос и не парься.
на каждый случай по запросу

Оффлайн Aleksis

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #9 : 05 Февраля 2004, 08:20:54 »
я хочу все в одном файлу,с одним selectom, все же должен же быть выход.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #10 : 05 Февраля 2004, 11:33:52 »
господи.
не нельзя же быть до такой степени!
откуда у тебя разные файлы взялись, чудик?
и программа-то у него написана уже
только взять и связать одно с другим

if(isset($_GET[\'fam\'])) $query = "select * from sot where fam like \'$fam%\' \'";
if(isset($_GET[\'otdel\'])) $query = "select * from sot where otdel like \'$otdel\' \'";

У тебя ассоциативного мышления хватит дальше этот ряд продолжить?Я уже что-то сомневаюсь.
больше ничего писать не надо - тольеко запрос выполнить!

Оффлайн Aleksis

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #11 : 05 Февраля 2004, 12:04:39 »
Нельзя ли без эмоций,сам ты чудик,помогай другим без всяких слов,если взялся за это дело

Оффлайн Aleksis

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #12 : 07 Февраля 2004, 17:54:51 »
if(isset($_GET[\'fam\'])) $query = "select * from sot where fam like \'$fam%\' \'";
if(isset($_GET[\'otdel\'])) $query = "select * from sot where otdel like \'$otdel\' \'";
if(isset($_GET[\'tel\'])) $query = "select * from sot where tel like \'$tel\' \'";
не работает должным образом,
запрос на php  приходит в таком виде: fam=&otdel=&tel=значение
(поиск по телефонам задал),но такой порядок if не работает так как вместе c tel=значение поступает  и otdel=(пустое значение),происходит запрос select *from sot where otdel=""(ищется пустое значение)
происходит вывод таблицы с номерами и с отделом у который незаполненые поля(where otdel="")

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #13 : 07 Февраля 2004, 18:24:56 »
isset  было для случая, когда каждый запрос в своей форме
вместо isset напиши trim

Оффлайн Aleksis

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
несколько форм,как быть?
« Ответ #14 : 07 Февраля 2004, 18:34:17 »
Блин неделю бился,поменял на trim все заработало как надо,теперь буду делать добавление из базы в форму и запись в базу.(мои первые начинания в php)

p.s. а у меня и так каждый запрос в своей форме,(коротко чем trim от isset отличается?)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28