|
|||||||||
Автор: Вадим Веденин Хочу описать о последовательности операций, которую я применяю для постраничного вывода результатов запроса к БД. Алгоритм обращения к странице у меня обычно такой:
В данной задаче две проблемы :
Если страница получила данные методом POST, то пользователь нажал на кнопку выполнения запроса, и нужно сгененерировать запрос на основе переданных параметров. Параметр curpage текущей страницы при этом устанавливатеся в 1. Если страница получила данные методом GET то тут возможны два варианта: или пользователь первый раз загрузил страницу, или же пользователь нажал на ссылку перехода на одну из страниц запроса. В первом случае в строке адреса не будет находиться параметра curpage ( проверка на то, является ли он числом, даст false), во втором номер текущей страницы в выборке из БД будет числом, и параметру curpage надо его и происвоить. Код, описывающий все эти действия , привожу ниже if (String(Request.ServerVariables("Request_Method")).indexOf("POST")!=-1) { // получить параметры запроса type_sql=Request.Form("type_sql "); // текущая старница в выборке - 1 curpage=1; } else { // получить прааметры запроса type_sql =Request.QueryString("type_sql "); // isNaN(parseInt(String(Request.QueryString("curpage"))) // возвращает true если curpage не является числом, // то есть загрузились в первый раз curpage=(isNaN(parseInt(String(Request.QueryString("curpage"))))) ?1:parseInt(String(Request.QueryString("curpage"))); }подключение к БД осуществляется следующим образом: var conn1 = Server.CreateObject('ADODB.Connection'); conn1.Provider="sqloledb"; conn1.Open("Data Source=server_name;Initial Catalog=my_kat;",login,pass); var rsTel= Server.CreateObject('ADODB.Recordset'); var sqlstr="select * from my_kat "; rsTel.CursorType=1; rsTel.CursorLocation=3; rsTel.Open(sqlstr,conn1,3,3,1);Вывод последовательности ссылок, осуществляющих переход между страницами выборки из БД <% rsTel.MoveFirst(); //rsTel.PageSize=20; - устанавливаем если нужно rsTel.AbsolutePage=curpage; // текущая страница var i; for(i=1;i<=rsTel.PageCount;i++) { %> <a href="search.asp?curpage=<%=i%>"><%=i%></a> <% } i=1; %> и вывод самой базы for(;i<=rsTel.PageSize;i++) { if(rsTel.EOF) break ; // тут выводим поля базы rsTel.MoveNext(); } rsTel.Close() rsTel=null; conn1.Close(); conn1=null;Все гениальное просто. Автор: Вадим Веденин
|
|||||||||
![]() |
![]() |