2012-01-17 1 views
0

Я новичок в публикации/переадресации/получении. Я кодирую первый реальный сайт, который заставил меня обнаружить необходимость в PRG. Так что я написал и получил рабочий код, который сделал следующее:post/redirect/получить и сохранить запрос базы данных в СЕССИИ

1) user enters a search string 

2) we search the database and find their desired search results 

3) if we found their search results successfully, we alter the database -- 
    a 'frequency of lookups' -- to indicate the user searched and found what 
    he was looking for 

4) then display the results he searched on 

Что я нашел было обновить страницу в браузере в результате пользователь снова увидит его же результаты поиска, но мы увеличившая «частоту поиска» - пользователь ограничен в частоте поиска в базе данных, поэтому, если пользователь слишком много раз обновлял страницу, они просматривали их по часовому рациону поиска базы данных. Именно тогда я обнаружил Post/Redirect/Get несколько дней назад.

Теперь я просматриваю сайт и изменяю все страницы, которые изменяют базу данных и отображают результаты и переходят на PRG. Вот новый процесс:

1) user enters a search string 

2) we search the database and find their desired search results 

3) if we found their search results successfully, we alter the database -- 
    a 'frequency of lookups' -- to indicate the user searched and found 
    what he was looking for 

4) PRG to a 'results' page 

5) then display the results he searched on 

И у меня возникла проблема. Мне нужно как-то «передать» результаты поиска с шага (2) выше на новую страницу «Результаты» в шаге (5), которую я создал для реализации PRG.

Итак, мой вопрос - есть ли «самый распространенный» способ сделать это? При чтении я видел «сохранить результаты в файле .CSV», а также «сохранить результаты поиска в базе данных на СЕССИИ».

Я хочу сохранить результаты поиска на СЕЗОНЕ, а затем на моей странице «GET», которую я добавил для PRG для отображения результата, я прочитаю результаты поиска из переменной сеанса и покажу их.

Под этим я подразумеваю, что я хочу сделать это:

$result = mysql_query($query, $theDbServer); 
$_SESSION['theSearchResults'] = $result. 

Затем на странице «Дисплей», считаны результаты поиска от $ _SESSION [ «theSearchResults»] и отобразить их с помощью:

$result = $_SESSION['theSearchResults']; 
$row = mysql_fetch_row($result); 

Это нормальный подход? И я подозреваю, что не могу сохранить исходный результат в переменной сеанса, как указано выше, но я также не уверен, как поместить результат $ result в $ _SESSION - как это обычно делается?

ответ

2

Предполагая, что вы не хотите, чтобы конечная целевая страница выполняла запрос (без уменьшения их квоты, конечно), вам понадобится использовать сеанс.

Сохранение в CSV не является стандартным и не будет масштабироваться очень хорошо. Я бы проанализировал результаты запроса в более удобной для пользователя форме (простой класс или список или все, что вам нужно). Затем я сохранил класс, а не читатель, в сеанс. Вероятно, вы захотите очистить эту часть сеанса, когда они покинут страницу результатов (особенно, если это огромный объем данных).

Предполагается, что вы используете raw php. Существует множество фреймворков с функциями для этого точного случая (вы хотите перенести часть данных с одной страницы на другую).

+0

Спасибо +1, да, мое чувство кисти относительно файла .CSV было правильным, и будет легко прочитать запрос и сохранить его, я думаю, как массив в сеансе - спасибо человеку. – wantTheBest