логическая ошибка в последней посещенной странице (COOKIE) и текущей поисковой странице в php - PullRequest
1 голос
/ 04 января 2011


У меня есть страница (index.php), где я отображаю последние события, извлеченные из базы данных, и окно поиска в верхней части страницы. Если кто-то ищет какое-либо событие, тогда все события, относящиеся к поиску, отображаются с именем и ссылкой на странице.,теперь, что мне нужно

  1. , если мы найдем какое-то событие, перейдем на страницу этого события и вернемся (index.php), тогда должен отображаться последний результат поиска ... прямо сейчас, если я вернусь, то отобразитьпоследнее событие.
  2. если мы перейдем к определенному событию и закроем браузер в это время (или вернемся и закроемся), и если снова откроем этот сайт, мне нужно отобразить ссылку на страницу последнего посещенного события на index.php
  3. если мы впервые заходим на страницу (или после истечения срока действия cookie), то должны отображаться все последние события (сейчас только 4 последних события).
  4. , если мы ищем, а это не найдено, то отображаем«Событие не найдено» и запрос на повторный поиск.

    в настоящее время пункт 2 и пункт 4 успешно выполнены, но пункт 3 не выполнен, пожалуйста, правильно предложите мои логические условия, а также предложите, что мне делатьпункт 1

ниже, если основной код моей страницы

index.php

<form action="<?=$_SERVER['PHP_SELF'];?>" method="get" accept-charset="utf-8">              
    <input type="text"  name="keyword" id="keyword"  placeholder="Search for Event" value="">           
    <input type="submit" name="submit" id="submit" value="Search" >     
</form>

if(empty($_GET['keyword']) && !isset($_SERVER['HTTP_REFERER'])) {
   if(!empty($_COOKIE['LAST_EVENT_ID'])) { ?>
       <div class="module list">
        <ul id="people">
            <li>
            <a href="eventinfo.php?evt_id=<?=$_COOKIE['LAST_EVENT_ID'];?>&evt_name=<?=$_COOKIE['LAST_VISITED_EVENT'];?>">           
            <h2><?=$_COOKIE['LAST_VISITED_EVENT']?></h2>                    
                </a>
            </li>
         </ul>
       </div>
<?php } } 
// Note count($eventItems)==4 ( by default latest events)       
    else if(count($eventItems) == 0) { ?>       
       <h2>No Events found, please Search again</h2>
<?php } 
      else { 
 ?> 
     <div class="module list">
     <ul id="people">
<?php    foreach($eventItems as $value) { ?>
         <li>
            <a href="eventinfo.php?evt_id=<?=$value->event_id?>&evt_name=<?=$value->name?>">            
            <h2><?=$value->name?></h2>                  
            </a>
         </li>          
 <?php      } ?> 
   </ul>
  </div>

eventinfo.php

<?php ob_start();
$evt_id=$_GET['evt_id'];
$evt_name=$_GET['evt_name'];
define('SITE_PATH','http://localhost/hello_world/');    
define('EVENT_ID',$evt_id);
/* first remove old cookie value */
//setcookie("LAST_EVENT_ID",EVENT_ID, time()-3600*24*7);
//setcookie("LAST_VISITED_EVENT", $evt_name, time()-3600*24*7);

setcookie("LAST_EVENT_ID", EVENT_ID, time()+3600*24*7);
setcookie("LAST_VISITED_EVENT", $evt_name, time()+3600*24*7);

if (is_dir($evt_name)){
    header("location:".EVENT_PATH);
}
else{
    header("location:event_detail.php");
}


?>

скажите, пожалуйста, как мне изменить мой if?еще условие для выполнения всех вышеперечисленных пунктов

Спасибо

ОБНОВЛЕНИЕ

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

1 Ответ

0 голосов
/ 04 января 2011

Изменить

<li>
    <a href="eventinfo.php?evt_id=<?=$_COOKIE['LAST_EVENT_ID'];?>&evt_name=<?=$lastEventDetail['name'];?>">         
        <h2><?=$lastEventDetail['name']?></h2>                  
    </a>
</li>

на

<li>
    <a href="eventinfo.php?evt_id=<?=$_COOKIE['LAST_EVENT_ID'];?>&evt_name=<?=$_COOKIE['LAST_VISITED_EVENT'];?>">         
        <h2><?=$_COOKIE['LAST_VISITED_EVENT']; ?></h2>                  
    </a>
</li>

Они не имеют значения для $ lastEventDetail ['name'] .. последнее имя события находится в файле cookie

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...