Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557

Не выполняется запрос, где переменная вида "число/число" (2013/2014)

13.05.2014, 17:47. Показов 912. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. В общем из выпадающего списка GET запросом передаю переменную (2011/2012 или 2012/2013 или 2013/2014 ну и т.п.). И собственно говоря почему то не происходит выборка...

Передача переменной из выпадающего списка:
PHP
1
2
3
4
5
6
7
8
9
10
11
echo "<form name='form1' method='GET' action='index.php' method='GET'>";
echo "<br><br>";
 $sql55 = "SELECT * FROM `years` ORDER BY `year`";
 $result_select55 = mysql_query($sql55);
 echo "<select name = 'year' onChange='form1.submit()'>";
 echo "<option selected disabled>Можно выбрать период обучения...";
 while($object = mysql_fetch_object($result_select55)){
 echo "<option value = '$object->year'>$object->year</option>";
 }
 echo "</select><br><br>";
 echo "</form>";
Запрос на выборку:
PHP
1
2
3
4
if (isset($_GET['year']))
{ echo "Фильтр <br> Дата: ".$_GET['year'];
 $resource= mysql_query('SELECT * FROM `files`, `users` WHERE `users`.`type_users` = "Студент" AND `files`.`year` LIKE "%'.$_GET['year'].'%" AND `files`.`poluchatel_file` = `users`.`id` ORDER by `users`.`group`',$db);
}
При этом echo "Фильтр <br> Дата: ".$_GET['year']; дает нужный результат (Дата: 2012/2013, если выбрал соответствующее значение).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2014, 17:47
Ответы с готовыми решениями:

Не выполняется запрос, где переменная вида "а/б"
Доброго времени суток. В общем из выпадающего списка GET запросом передаю переменную (2011/2012 или 2012/2013 или 2013/2014 ну и т.п.). И...

Найти наименьшее число n, для которого выполняется условие 2 n / n!<e , где e – заданное положительное число, меньшее 1
Найти наименьшее число n, для которого выполняется условие 2 n / n!&lt;e , где e – заданное положительное число, меньшее 1 c++ ...

Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д.
Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д. ...

19
11 / 11 / 6
Регистрация: 26.08.2013
Сообщений: 39
13.05.2014, 18:51
Попробуй экранировать, т.е. поставить \ перед /. 2012\/2013
0
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557
13.05.2014, 18:53  [ТС]
Цитата Сообщение от deadly_anton Посмотреть сообщение
поставить \ перед /. 2012\/2013
2012/2013 - это одна переменная, т.е. $_GET['year']="2012/2013"
0
11 / 11 / 6
Регистрация: 26.08.2013
Сообщений: 39
13.05.2014, 18:55
ну, у тебя и будет запрос типа LIKE "%2012\/2013%"
0
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557
13.05.2014, 19:04  [ТС]
Цитата Сообщение от deadly_anton Посмотреть сообщение
ну, у тебя и будет запрос типа LIKE "%2012\/2013%"
А как? К примеру:
PHP
1
 $resource= mysql_query('SELECT * FROM `files`, `users` WHERE `users`.`type_users` = "Студент" AND `files`.`predmet` = "%'.$_GET['predmet'].'%" AND `files`.`poluchatel_file`=`users`.`id`',$db);
Как экранировать то? Если сравнивается с GET запросом

Добавлено через 7 минут
Да и почему-то не работает вообще никакая выборка, если год установлен.
Т.е.
PHP
1
if (isset($_GET['year']))
вот это работает:
PHP
1
echo "Фильтр <br> Дата: ".$_GET['year'];
а вот это уже нет:
PHP
1
 $resource= mysql_query('SELECT * FROM `files`, `users` WHERE `users`.`type_users` = "Студент" AND `files`.`year` LIKE "%'.$_GET['year'].'%" AND `files`.`poluchatel_file` = `users`.`id` ORDER by `users`.`group`',$db);
0
11 / 11 / 6
Регистрация: 26.08.2013
Сообщений: 39
13.05.2014, 19:10
тогда проверяй условия, мб просто поле не может найти
можешь еше вот так сделать:
PHP
1
    $resource= mysql_query('SELECT * FROM `files`, `users` WHERE `users`.`type_users` = "Студент" AND `files`.`year` LIKE "%'.$_GET['year'].'%" AND `files`.`poluchatel_file` = `users`.`id` ORDER by `users`.`group`',$db) || die(mysql_error());
и попробуй в mysql просто сделать небольшой запрос
SQL
1
SELECT * FROM `files` WHERE `files`.`year` LIKE "%2013/2014%"
если работает, то услловия виноваты Ваши
0
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557
13.05.2014, 19:12  [ТС]
Цитата Сообщение от deadly_anton Посмотреть сообщение
в mysql просто сделать небольшой запрос
Проверял в phpMyAdmin там все нормально
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
13.05.2014, 19:14
TheRealKos, что возвращают строки
PHP
1
2
print_r($resource);
echo mysql_error();
, вставленные после строки с mysql_query() до фигурной скобки.
0
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557
13.05.2014, 19:19  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
Плохо знаком с синтаксисом SQL, но разве там используется точка?
Название_таблицы.Название_столбца

Цитата Сообщение от pav1uxa Посмотреть сообщение
Что возвращает print_r($result)
$resource. Ни чего не возвращает.
|| die(mysql_error()) добавил, ничего.

Цитата Сообщение от pav1uxa Посмотреть сообщение
echo mysql
Не понимаю как сделать здесь...

Почему-то не работает вообще никакая выборка, если год установлен
Т.е.
PHP
1
if (isset($_GET['year']))
вот это работает:
PHP
1
echo "Фильтр <br> Дата: ".$_GET['year'];
а вот это уже нет:
PHP
1
$resource= mysql_query('SELECT * FROM `files`, `users` WHERE `users`.`type_users` = "Студент" AND `files`.`year` LIKE "%'.$_GET['year'].'%" AND `files`.`poluchatel_file` = `users`.`id` ORDER by `users`.`group`',$db) || die(mysql_error());
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
13.05.2014, 19:22
Цитата Сообщение от TheRealKos Посмотреть сообщение
Не понимаю как сделать здесь...
Я там исправил сообщение.

print_r($resource) не может ничего не возвращать. Покажите новый код целиком с учетом 2х строчек о которых я написал.
0
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557
13.05.2014, 19:24  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
print_r($resource) не может ничего не возвращать
Ничего... и echo mysql_error(); тоже ничего...

Говорю, как будто выборка вообще не делается...
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
13.05.2014, 19:25
Цитата Сообщение от TheRealKos Посмотреть сообщение
Ничего... и echo mysql_error(); тоже ничего...
Говорю, как будто выборка вообще не делается...
ну а как же на счет
Цитата Сообщение от pav1uxa Посмотреть сообщение
Покажите новый код целиком с учетом 2х строчек о которых я написал.
0
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557
13.05.2014, 19:26  [ТС]
pav1uxa,
Ошибочка...print_r вернуло 1

Вот код (он в самом начале есть)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
echo "<form name='form1' method='GET' action='index.php' method='GET'>";
echo "<br><br>";
 $sql55 = "SELECT * FROM `years` ORDER BY `year`";
 $result_select55 = mysql_query($sql55);
 echo "<select name = 'year' onChange='form1.submit()'>";
 echo "<option selected disabled>Можно выбрать период обучения...";
 while($object = mysql_fetch_object($result_select55)){
 echo "<option value = '$object->year'>$object->year</option>";
 }
 echo "</select><br><br>";
 echo "</form>";
 
 
if (isset($_GET['year']))
{ echo "Фильтр <br> Период обучения: ".$_GET['year'];
  $resource= mysql_query('SELECT * FROM `files`, `users` WHERE `users`.`type_users` = "Студент" AND `files`.`year` LIKE "%'.$_GET['year'].'%" AND `files`.`poluchatel_file` = `users`.`id` ORDER by `users`.`group`',$db) || die(mysql_error());
  echo "<br>PRINT_R: "; print_r($resource);
  echo "<br>MYSQL_ERROR: "; echo mysql_error();
}
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
13.05.2014, 19:33
Цитата Сообщение от TheRealKos Посмотреть сообщение
Вот код (он в самом начале есть)
там нету этих 2х строчек
Цитата Сообщение от TheRealKos Посмотреть сообщение
Ошибочка...print_r вернуло 1
Ну вот видите, поэтому и просил код по новой. Вероятно SQL запрос составлен верно, но данных записей в таблице нет. Либо они имеют немного другой формат записи.
0
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557
13.05.2014, 19:40  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
Вероятно SQL запрос составлен верно, но данных записей в таблице нет.
Во вкладке открыта таблица. И там записи есть

Добавлено через 4 минуты
И разве он не должен останавливаться и не выводить ни чего. А тут он все возможные записи выводит

Добавлено через 1 минуту
Есть идея как еще с ними поступить, но она пока бессмысленна. Т.к. даже самая элементарная выборка не работает, если установлен $_GET['year'])...
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
13.05.2014, 19:43
Цитата Сообщение от TheRealKos Посмотреть сообщение
Во вкладке открыта таблица. И там записи есть
Ну попробуйте вручную вместо $_GET['year'] вставить какой то год в SQL запрос. Если по прежнему вернет 1, значит дело все таки в запросе. Возможно что то напутали с полями\таблицами, возможно в редакторе, котором Вы это пишете, другая кодировка, и слово "Студент" в запросе воспринимается неверно...
0
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557
13.05.2014, 19:46  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
Возможно что то напутали с полями\таблицами, возможно в редакторе, котором Вы это пишете, другая кодировка, и слово "Студент" в запросе воспринимается неверно...
Другие подобные запросы выполняются как нужно (он у них значения передаются не через выпадающий список).

Поменял в запросе $_GET['year'] на 2013, вернуло 1...

Вот пример другого условия:
PHP
1
2
3
4
if (isset($_GET['semestr']))
{ echo "Фильтр <br> Семестр: ".$_GET['semestr'];
 $resource= mysql_query('SELECT * FROM `users` WHERE `type_users` = "Студент" AND `group` LIKE "'.$_GET['semestr'].'%" ORDER by `group`',$db);
}
Еще есть так же с выборкой из двух таблиц, и там тоже все как нужно...
0
11 / 11 / 6
Регистрация: 26.08.2013
Сообщений: 39
13.05.2014, 19:52
Случайно нету пробела в $_GET['year']?
?year=2013/2014%20&semestr=trololo
если же есть, то уже по Like не найдет если в бд без пробела
0
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557
13.05.2014, 21:01  [ТС]
Цитата Сообщение от deadly_anton Посмотреть сообщение
если же есть, то уже по Like не найдет если в бд без пробела
Вот в таком виде передается year=2012%2F2013
Точнее это в строке браузера так.

И это так если через выпадающий список. Если же через текстовую ссылку передавать, то будет в виде year=2012/2013

Добавлено через 1 час 8 минут
Вот уже что-то...Добавил не много
Было:
PHP
1
2
if (!isset($_GET['semestr']) && !isset($_GET['predmet']) && !isset($_GET['group']))
{ $resource= mysql_query('SELECT * FROM `users` WHERE `type_users` = "Студент" ORDER by `group`',$db); }
Стало:
PHP
1
2
if (!isset($_GET['semestr']) && !isset($_GET['predmet']) && !isset($_GET['group']) && !isset($_GET['year']))
{ $resource= mysql_query('SELECT * FROM `users` WHERE `type_users` = "Студент" ORDER by `group`',$db); }
И теперь если установлен GET['year'] то выдает ошибку Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

PHP
1
2
3
4
5
6
7
8
9
10
if (isset($_GET['year']))
{ echo "Фильтр <br> Период обучения: ".$_GET['year'];
  $year = $_GET["year"];
  $year = mysql_escape_string($year); echo "<br>ТУТ УЕАР ".$year;
  $resource= mysql_query('SELECT * FROM `files`, `users` WHERE `users`.`type_users` = "Студент" AND `files`.`year` LIKE "%'.$year.'%" AND `files`.`poluchatel_file`=`users`.`id` ORDER by `users`.`group`',$db) || die(mysql_error());
 echo "<BR>VAR_DUMP: "; var_dump($resource); echo "<BR>";
  
  echo"<br>PRINT_R: "; print_r($resource);
  echo "<br>MYSQL_ERROR: "; echo mysql_error();
}
Сделал вар_дамп, выводит: bool(true)
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
13.05.2014, 22:19
Цитата Сообщение от TheRealKos Посмотреть сообщение
Вот уже что-то...Добавил не много
Да ничего нового, все то же самое. Функция mysql_query возвращает Вам true (или единицу), а должна возвращать массив с данными. Все на том же месте. Вы пробовали этот запрос исполнить без php? Например с помощью phpMyAdmin, или чем Вы там базу MySQL редактируете. Подставив свои значения в этот запрос.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2014, 22:19
Помогаю со студенческими работами здесь

Вывести строку-описание вида «отрицательное четное число», «нулевое число», «положительное нечетное число» и т. д.
Составьте метод, который принимает в качестве параметра целое число. Вывести его строку-описание вида «отрицательное четное число»,...

Дано целое число. Вывести его строку-описание вида «отрицательное четное число», «нулевое число »,« положительное нечетн
Дано целое число. Вывести его строку-описание вида «отрицательное четное число», «нулевое число »,« положительное нечетное число »и т. д.

Вычисление сумм слагаемых вида x+i, где x данное число, а i определяется от 1 до n
Пожалуйста напишите программу вычисления сумм слагаемых вида x+i, где x данное число, а i определяется от 1 до n.

Найти сумму сорока слагаемых вида n-i,где i=1,2,3.... а n-любое данное число
Найти сумму сорока слагаемых вида n-i,где i=1,2,3.... а n-любое данное число.

Определить, сколько раз нужно к числу 61 ПРИСТАВИТЬ число 61, чтобы полученное число делилось на 2013
Всем привет, помогите составить программу для решения следующей задачи: сколько раз нужно к числу 61 ПРИСТАВИТЬ число 61, чтобы...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru