Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Rockman
17 / 17 / 4
Регистрация: 16.09.2010
Сообщений: 128

Логика запроса

01.12.2010, 19:46. Показов 1303. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня такой вопрос.
Допустим имеется форма с тремя полями для ввода: Название, Год, Время.
Есть база данных с тремя колонками: name, year, time.
Нужно отбирать данные в зависимости от того, что введено в форму.
Допустим если ввели только Название, то нужно отобрать все значения в базе где name = 'Название'
Если ввели и Название и Год, то нужно отобрать соответственно все значения где name = 'Название' AND year = 'Год'
В данном случае, с тремя полями это сделать вполне реально и не проблемно. Но у меня таких полей 14.
И соответственно различных вариантов отбора очень много и все их учесть очень тяжело.
Я думал сделать следующим образом. Просто делать запрос в базу, примерно следующим образом

SQL
1
SELECT * FROM TABLE WHERE name= '$name' AND YEAR = '$year' AND TIME = '$time'
Таким образом я надеялся получить нужный мне результат используя поля которые заполнены, а если что то не заполнено то переменные просто будут пустые, но такой вариант не сработал. Подскажите как реализовать подобный поиск, что бы не учитывать каждое условие.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2010, 19:46
Ответы с готовыми решениями:

Как результат запроса другого результата запроса запихнуть в массив?
Как результат запроса другого результата запроса запихнуть в массив? Здравствуйте, у меня такая вот небольшая головоломка, у меня есть...

Логика по выборке
Ребят подскажите пожалуйста как правильно сделать, в общем имею две таблицы user и controller. в таблице user поле id_controller...

Как сделать запрос наличия в форме поискового запроса запроса на поиск одноразовым?
Здравствуйте. У меня проблема. Я PHP изучаю всего несколько месяцев и делаю по совместительству себе свой сайт. Делаю новостную ленту для...

11
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
01.12.2010, 21:05
Rockman, не понятна логика такого запроса,
допустим все поля заполнены (14), тогда выведутся все записи из БД соответствующие этим полям, если не заполнены, тоже выведутся все поля.
нельзя ли просто все вывести без условий? просто логика такого условия, на мой взгляд, не совсем корректная что ли..
0
 Аватар для Rockman
17 / 17 / 4
Регистрация: 16.09.2010
Сообщений: 128
01.12.2010, 21:10  [ТС]
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
Rockman, не понятна логика такого запроса,
допустим все поля заполнены (14), тогда выведутся все записи из БД соответствующие этим полям, если не заполнены, тоже выведутся все поля.
нельзя ли просто все вывести без условий? просто логика такого условия, на мой взгляд, не совсем корректная что ли..
Я поэтому и спрашиваю как правильно составить запрос, что бы не учитывать все условия которые возможны при заполнении полей. Точнее говоря если не заполнено одно поле но заполнено два других, то искать в базе значения заполненых полей.

Добавлено через 46 секунд
Как эту логику реализовать средствами SQL запросов а не php
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
01.12.2010, 21:18
Цитата Сообщение от Rockman Посмотреть сообщение
то искать в базе значения заполненых полей
правильней понимать - то искать в базе по значениям заполненых полей?

может что то не доганяю, но думаю искать по какому то заданному (или заданным) значению (напр. по имени), если вдруг это значение не заполнено, то оно просто не будет выодиться

Добавлено через 3 минуты
Цитата Сообщение от Rockman Посмотреть сообщение
Как эту логику реализовать средствами SQL запросов а не php
да так же как ты написал, только не гоняясь за заполнением полей, вот у тя идет поиск по трем полям, если какой то из них не заполнен, то, как ты понимаешь, оно не выведется, а если делать как ты предлагаешь, то этот запрос будет похож на
SQL
1
SELECT * FROM TABLE
0
 Аватар для Rockman
17 / 17 / 4
Регистрация: 16.09.2010
Сообщений: 128
01.12.2010, 21:33  [ТС]
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
правильней понимать - то искать в базе по значениям заполненых полей?
Да именно так.

может что то не доганяю, но думаю искать по какому то заданному (или заданным) значению (напр. по имени), если вдруг это значение не заполнено, то оно просто не будет выодиться
Постараюсь поточнее объяснить.
По нажатию на Submit в форме, пост запросом посылаются данные. Скрипт обработчик получает эти данные:

Например такие (но в моем скрипте их 14)

PHP
1
2
3
4
$number = $_POST['number'];
$month = $_POST['month'];
$year = $_POST['year'];
$time = $_POST['time'];
И далее мне нужно сделать запрос который ищет в базе данных строки, где имеются данные значения.
Но пользователи может искать запись например только по времени $time и при этом не введет все остальные, поэтому переменные будут пустые. Есть вариант просто составить условие в скрипте обработчике на каждый возможный вариант, когда заполнено одно поле но не заполнено другое и т.д. Это легко сделать на 4 переменных, но у меня их 14. Поэтому вопрос как составить запрос, что бы если переменная была пуста она бы не учитывалась как значение в запросе.

Добавлено через 10 минут
как я себе представляю это.

SQL
1
SELECT * FROM TABLE WHERE  IF(!empty($number)) { echo "number = '$number'"} AND IF(!empty($year)) { echo "year = '$year'"} и тд
но я не знаю можно ли такое вообще реализовать и как правильно это сделать.
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
01.12.2010, 22:14
блин, щас подумал сделать массив полей и делать выборку по индексу что ли, не получается записать

Добавлено через 27 минут
типа так
PHP
1
$fields = array(тут все 14 поля);
SQL
1
SELECT * FROM TABLE имя таблицы WHERE isset($fields)
1
 Аватар для Rockman
17 / 17 / 4
Регистрация: 16.09.2010
Сообщений: 128
01.12.2010, 22:40  [ТС]
Вот да тоже до этого дошел ) Спасибо !
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
01.12.2010, 22:51
Rockman, заработало хоть??

Добавлено через 1 минуту

Не по теме:

просто не могу правильно мысль эту записать

0
 Аватар для Rockman
17 / 17 / 4
Регистрация: 16.09.2010
Сообщений: 128
01.12.2010, 22:57  [ТС]
Я сделал немного подругому.
Сделал массив и цикл который проверяет на пустоту каждую переменную. И взависимости от результата составляется строка запроса. Вот над составлением пока еще думаю там же нужно добавлять AND или не добавлять
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
01.12.2010, 23:09
да я тоже думал по циклу пустить, но как то не скумекал. покажи как у тя получилось
0
 Аватар для Rockman
17 / 17 / 4
Регистрация: 16.09.2010
Сообщений: 128
01.12.2010, 23:35  [ТС]
Пока еще не додумался как определить нужно добавлять AND или нет при составлении строки
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
01.12.2010, 23:39
если добавлять энд, то уже не надо замарачиваться с массивом, а втупую перечислять все поля, и не через энд, а or думаю, ... но все равно не получится так..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2010, 23:39
Помогаю со студенческими работами здесь

Логика и код
Делаю свою браузерную онлайн игру. И дошёл до момента создания инвентаря. Прошу помочь. Имеющая такая логика. есть 2 таблице. Во...

Логика и шаблоны
Здравствуйте, ув пользователи! Прежде чем задам свой вопрос, хочу сказать, если Я написал не в тот раздел, уж извините, зарегался...

Логика кода
извините за название,просто не мог сформулировать вопрос -------------------------------------------------------------- У меня код не...

логика запроса
Здравствуйте! Заранее извиняюсь за может быть глупый вопрос, но интересует логика построения запроса в данном случае. А случай такой: ...

Логика формирования запроса
function openTask(id, type) { var opentask = $('#FlagWinOpen').val(); if (opentask) { return false; } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru