Поиск и результаты ASP на одной странице

У меня есть одна классическая страница ASP, на которой я хочу отобразить форму поиска и связанные с ней результаты.

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

Мне было интересно, возможно ли это/практично в пределах одной страницы, и если да, то есть ли у кого-нибудь какие-либо намеки на то, как мне лучше всего этого добиться?

Это мой предварительный код такой страницы; http://gist.github.com/188770

Еще раз, в настоящее время мне приходится исправлять существующий сайт ASP, пока я не смогу переработать его во что-то более современное, например PHP.

Спасибо за любую предложенную помощь.

Нил.


person user173952    schedule 17.09.2009    source источник


Ответы (2)


Это, безусловно, очень возможно и практично. Обычно решение состоит в том, чтобы выполнить обратную передачу самому себе и иметь код на странице, который определяет, пришли ли вы туда из сообщения или получения. Получить означает показать 10 последних свойств, опубликовать означает, что вы выполняете поиск и показываете результаты.

if (Request.ServerVariables("REQUEST_METHOD") = "POST") then

   ' arrived via post, get form values and do search
else

   ' arrived via get, show last 10 results

end if
person Keith Adler    schedule 17.09.2009
comment
Привет, спасибо за быстрый ответ. Я обновил свой «основной» код, указав, как я понимаю ваше решение; gist.github.com/188770 Это выглядит правильно? :) - person user173952; 18.09.2009
comment
Вам также необходимо предложение ORDER BY в запросе TOP 10. - person AnthonyWJones; 18.09.2009

Вы, вероятно, хотите отобразить то, что искал пользователь в форме, когда вы показываете результат:

<label>Street: <input type="text" name="searchStreet" value="<%=Server.HtmlEncode(Request("searchStreet") & "") %>" /></label>

Добавление пустой строки предназначено для приведения к строке, чтобы не выдавать ошибку, когда ключ не найден, например. при первом посещении.

Если вы хотите, вы можете сделать цикл красивее:

do until myRecordSet.EOF
%>
<div class='result'>")
  <dl><%=myRecordSet("ContentTitle")%><dl>
  <dt><%=myRecordSet("ContentStreet")%><dt>
  <dt><%=myRecordSet("ContentTown")%><dt>
  <dt><%=myRecordSet("ContentPostcode")%><dt>
</div><%
myRecordSet.MoveNext
loop

Вероятно, вы также захотите использовать Server.HtmlEncode...

(ps ASP на самом деле на год моложе, чем PHP... если вы хотите что-то современное, вы можете посмотреть на python, ruby ​​или asp.net mvc до PHP, так как на PHP проще написать плохой код, чем на любом из них. д)

person svinto    schedule 18.09.2009
comment
Хороший P.S. :) Нет ничего плохого в старом добром ASP, если он хорошо написан. - person Pete Duncanson; 18.09.2009