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 :: Вывод результата запроса
Подскажите, если запрос проходит через цикл, он будет работать пока не переберёт всю таблицу, а как мне сохранить все результаты, у меня сохраняется только последний, создать ещё одну глобал переменную, которая будет массивом, и будет принимать результат каждого прохода цикла как строку? Или можно сделать проще?
snikers987
Отправлено: 08 Февраля, 2012 - 15:14:14
Участник
Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011 Откуда: Крым
----- Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
Uchenik
Отправлено: 09 Февраля, 2012 - 05:46:14
Частый гость
Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011
Помог: 1 раз(а)
snikers987, спасибо, логику я понял. Не понятно только одно.
Почему Var_Dump выводит результат NULL. Это как? Т.е. результат не пустой, но и не несёт никаких данных. странно.
Может полная конструкция прояснит ситуацию:
Дальше идут сами функции, ну вот функция, которая делает выбор (sql_select)
она сейчас такая, как Вы предложили, а что может быть не так? Почему результат не работает, т.е. я не совсем понимаю как его вызвать этот результат.
Кстати на 4 строке функции, у вас синтаксическая ошибка. (Добавление)
Попробовал ещё вот так
----- Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
Uchenik
Отправлено: 09 Февраля, 2012 - 11:51:50
Частый гость
Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011
Помог: 1 раз(а)
Тогда я чуть-чуть в замешательстве. Получается что все функции, которые вызываются внутри функции передают значение только родительской функции?
Ну т.е. если sql_selector запустил для выполнения функцию sql_select, то результат работы sql_select передаётся только в sql_selector и не передаётся дальше? Т.е. чтобы получить разультат вне функций, нужно в sql_selector'е указывать что-то типа $result=$sql_select($res); так что-ли?
snikers987
Отправлено: 09 Февраля, 2012 - 12:43:55
Участник
Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011 Откуда: Крым
Помог: 25 раз(а)
Чесно говоря я Вас совершенно не понял..
Что куда должно передаваться?
sql_selector() возвращает результат работы одной и функций указаной в $type или NULL если тип не извесный.
----- Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
Uchenik
Отправлено: 09 Февраля, 2012 - 13:03:28
Частый гость
Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011
Помог: 1 раз(а)
=)
Суть вот в чем.
Пользователем через специальный интерфейс заполняются параметры запроса:
Type = тип запроса. Всего их 6
Field = какие поля нужно найти
Where=какую таблицу нужно просмотреть
Cycle=использовать ли цикл
Т.е. через этот конструктор строится запрос. Сначала все эти данные передаются в sql_selector
который в зависимости от типа переадресовывает все данные в нужную функцию. Всё прекрасно работает, кроме одного. Когда тип выбран 2 - SELECT
строится запрос "SELECT ".$Field." FROM "$Table" WHERE "$Where""
тоже ничего сложного. Но если был передан параметр Cycle=TRUE, т.е. запрос в цикле, начинается тупняк, потому-что возвращаемый функцией результат является строкой, в которой просто много раз написано слово Array.
Ну к примеру мне нужно построить такой запрос
{echo$myr[0];echo$myr[1];//и так далее все поля, которые нужны
}
и выведется своего рода таблица. А если мне не нужно выводить результат сразу, т.к. я вообще не использую echo и print, я просто сохраняю полученные результаты в переменную, которую позже вывожу через шаблон. (отделяю логику от представления)
В случае если запрос должен вывести 1 результат, вывод результата не составит труда, а что если имеется цикл? Т.е. у нас несколько разных результатов, правильно? Что нужно теперь сделать? Как их вывести? Самый логичный вариант это просто взять и добавить в конец цикла что-то типа
Вот так всё выводится почти как нужно, просто патом обработать через explode, убрать все лишнее. Но это слишком топорный вариант. Хочется чего-то более изящного
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Uchenik
Отправлено: 09 Февраля, 2012 - 13:23:23
Частый гость
Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011
Помог: 1 раз(а)
EuGen
Спасибо за заботу, но эта линка когда-то была моей домашней страницей, не думаю что там появилось что-то новое =)
А вообще код правильный, всё работает, только вот с выводом результата проблемка. точнее сказать слишком уж много обработок и преобразований получается.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.