IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Помогите упростить систему обращения к базе данных (https://www.imho.ws/showthread.php?t=90240)

ac2on 01.08.2005 16:53

Помогите упростить систему обращения к базе данных
 
Вобщем проблема такая.
Я еще только разбираюсь в языке но проблемы уже есть.
Имеется база данных, достаточно большая, написанная на Access.
Она постоянно пополняется и нужен доступ к ней с сайте.
Т.к. там 8 различных разделов, и у каждого раздела свои критерии отбора данных из базы и свои запросы получилось достаточно много файлов, по 2 на каждый раздел.
Соответсвенно это не совсем удобно и потом будет сложно навести порядок.
Все написано на PHP, доступ к базе данных осуществляется с помощью ODBC.
Есть ли какой-нибудь способ объединить все в один скрипт, который бы генерировал формы для формирования запросов и выводил результаты поиска по всем разделам, на основе выбранного раздела?
В том виде, в котором сделано все работает идеально, как задумывалось. Но хочется теперь привести все к порядку.
Все работает под 2003 server, apache из пакета Денвер.

EvroStandart 02.08.2005 13:50

Не понял суть проблемы. Много каких файлов? .php?
Надо было сразу делать меню и оттуда переходить на соответствующие скрипты.
:cool:

ac2on 02.08.2005 16:04

Вложений: 1
Цитата:

Сообщение от EvroStandart
Не понял суть проблемы. Много каких файлов? .php?
Надо было сразу делать меню и оттуда переходить на соответствующие скрипты.
:cool:

Ну это я сделал. Есть меню, есть скрипт, который это меню вызывает... Но хочется что бы вместо 38 фалов, был один, который бы все делал.
В архиве сами коды.

trancerr 02.08.2005 16:28

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

в меню ссылки в формате http://host/file.php?action=action1&param2=xxx

в файле file.php (в самом начале) проверяется значение переменных $action и param1 (и др. - это зависит от потребностей...)
в зависимости от значений переменных - выполняются разные действия....

примерно так :)

EvroStandart 02.08.2005 17:45

Цитата:

ac2on:
Но хочется что бы вместо 38 фалов, был один, который бы все делал.
Так в принципе не делается. Если у тебя будет файл на пять тысяч строк и нужно будет что-то изменить - замучаешся разбираться что к чему.
Можно выделить в разные файлы запросы к базе и выписку для пользователя. Но это особо сильно ничего не изменит.

А если так уж сильно хочется, можно всё запихать в один файл через if () или switch ()

Sensey 03.08.2005 19:28

ac2on
Не надо все пихать в один файл... ножно распределять код по файлам в зависимости от использование этого самого кода...

Все таки легче подключить маленькие но используемы файлы... чем грузить один файл в память... и только часть этого файла использовать...

ac2on 15.08.2005 09:56

Цитата:

Сообщение от Sensey
ac2on
Все таки легче подключить маленькие но используемы файлы... чем грузить один файл в память... и только часть этого файла использовать...

Ну это и так понятно.... Теперь стоит другая задача. Как организовать разделение результатов поиска в базе данных на страницы.
У меня в файл, в котором происходит вывод, данные для организации запроса передаются через POST. Как сохранить эти данные при повторной загрузки страницы?
Пробывал делать глобальную переменную - что то не получается :(
Передача самого сформированного запроса в качестве входной переменной тоже успехов не дала... Толи запрос слишком длинный, толи руки кривые...
Посоветуйте как лучше сделать... А то как то 900 записей прокручивать тоже не хорошо....
Пример работы можно посмотреть на _http:\\84.54.203.234\base
Ну или ткните носом, где почитать...

Hubbitus 15.08.2005 10:17

Цитата:

ac2on:
Теперь стоит другая задача. Как организовать разделение результатов поиска в базе данных на страницы.
параметр limit запроса, если речь идет о MySQL

Цитата:

ac2on:
Как сохранить эти данные при повторной загрузки страницы?
Например в сессии.

ac2on 15.08.2005 14:50

Цитата:

Сообщение от Hubbitus
параметр limit запроса, если речь идет о MySQL

Ну у меня база MS Access рабоает через ODBC. Я попробывал привязать limit к запросу. Но мне сразу выдали ошибку запроса...

Цитата:

Например в сессии.
А вот с этого места по подробнее.
Просто я только начинаю осваивать PHP поэтому многие вещи не совсем понятны и не знакомы.

EvroStandart 15.08.2005 16:18

Как говорится, RTFM!
http://www.php.net/manual/en/function.session-start.php
http://php.spb.ru/php/session.html
:cool:

Hubbitus 16.08.2005 10:20

Цитата:

ac2on:
Ну у меня база MS Access рабоает через ODBC. Я попробывал привязать limit к запросу. Но мне сразу выдали ошибку запроса...
C Access сложнее, там геморно это реализовано, также как в MSSQ Server, нету как таковых инструкций чтобы получить с какой-то по какую-то записи, есть только TOP, чтобы получить сколько-то конкретно. Какраз недавно с этим разбирался, вот тут есть несколько вариантов решения данной задачи. Я лично выбрал 4 как наиболее универсальный и быстрый (правда в нем есть и малюсенькое неудобство, которое мне так и не удалось решить, кстати буду очень благодарен если кто подскажет как - читайте там верхний комментарий), незнаю точно как в Access, но я оформил это в виде хранимой процедуры, и теперь всегда ей пользуюсь в подобных случаях.

Ну а по сессиям уже подсказали ссылки - читайте МАН.
И неплохая ссылочка в догонку с разъяснениями http://php.spb.ru/php/session.html

ac2on 16.08.2005 15:21

Спасибо за RTFM. С сесиями разобрался, теперь другой вопрос... Как получить ссылку, с которой пришел пользователь.
А то получается, что сесия создается, а если пользователь пытается сформировать новый запрос, то используется старая сесия, и возращаются результаты первоначального запроса.
Я решил этот вопрос передачей дополнительной переменной.
Вот такой код:
if ($_GET['act']==$_GET['page']){
session_unregister('zapr');
}
После этого переменная $act передается вместе с номерами страниц, но не равная тому значению, с которым была первый раз передана.

Но хотелось бы решить этот вопрос определением того, от куда пришел пользователь: если со страницы формирования запроса, то создается новая сесия. Если пришел по ссылке на новую страницу, то использовалась существующая сесия.
И как сделать так, что бы когда человек уходил со страницы, не закрывая окна, то автоматический закрывалась сесия.

Hubbitus 17.08.2005 09:56

Цитата:

ac2on:
А то получается, что сесия создается, а если пользователь пытается сформировать новый запрос, то используется старая сесия, и возращаются результаты первоначального запроса.
Почему так? Как только сформировали новый запрос, и кладите новый в сессию вместо старого - никаких проблем.

Цитата:

ac2on:
И как сделать так, что бы когда человек уходил со страницы, не закрывая окна, то автоматический закрывалась сесия.
session.cookie_lifetime = 0 (а также session.gc_maxlifetime и session.gc_probability)

ac2on 22.08.2005 14:29

Все, всем большое спасибо... Все получилось как и хотелось.
Большое спасибо за советы и помошь. Но что то кажется мне что это только начало :)


Часовой пояс GMT +4, время: 01:23.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.