2011-12-01 46 views
0

我正在爲我的網站在新聞存檔頁面上工作,在開始日期,結束日期和新聞類別上搜索歸檔,作爲搜索參數。表單值存儲在$ _SESSION var中,然後將它們作爲數組傳遞以用於分頁和其他目的。 我的問題是如何防止在主檔案搜索頁面上顯示搜索結果,如果用戶由於某種原因再次進行重新搜索。php session vars

這裏的代碼

<?php 
session_start(); 
if (isset($_POST['submit'])) { 
    //get data from the form 
    $archFld_1 = $_POST['archiveFld1']; 
    $archFld_2 = $_POST['archiveFld2']; 
    $archFld_3 = $_POST['archiveFld3']; 
    //just some check on fields 
    if (strlen($archFld_1) > 10) { $archFld_1 = ""; } 
    if (strlen($archFld_2) > 10) { $archFld_2 = ""; } 
    //save them as a array and store to session var 
    $_archValues = array($archFld_3, $archFld_1, $archFld_2); 
    $_SESSION['storeValues'] = $_archValues; 
} 
if (isset($_SESSION['storeValues'])) { 
    //check params for search 
    //set cat for query 
    if ($_SESSION['storeValues'][0] > 0) { $valCat = "AND newsCat=".  $_SESSION['storeValues'][0] ." "; } else { $valCat = ""; } 
    //set date for query 
    if(($_SESSION['storeValues'][1] != "") && ($_SESSION['storeValues'][2] == "")) { 
     $DateStart = $_SESSION['storeValues'][1]; 
     $valDate = " AND STR_TO_DATE(newsDate, '%d-%m-%Y') >= STR_TO_DATE('$DateStart', '%d-%m-%Y') "; 
    } 
    if(($_SESSION['storeValues'][2] != "") && ($_SESSION['storeValues'][1]=="")) { 
     $DateEnd = $_SESSION['storeValues'][2]; 
     $valDate = " AND STR_TO_DATE(newsDate, '%d-%m-%Y') <= STR_TO_DATE('$DateEnd', '%d-%m-%Y') "; 
    } 
    if(($_SESSION['storeValues'][1]!="") && ($_SESSION['storeValues'][2] != "")) { 
     $DateStart = $_SESSION['storeValues'][1]; 
     $DateEnd = $_SESSION['storeValues'][2]; 
     $valDate = " AND STR_TO_DATE(newsDate, '%d-%m-%Y') BETWEEN STR_TO_DATE('$DateStart', '%d-%m-%Y') AND STR_TO_DATE('$DateEnd', '%d-%m-%Y') "; 
    } 
    //query string and stire it to session 
    $archQuery_string = $valCat.$valDate; 
    $_SESSION['storeQuery'] = $archQuery_string; 
} 
//pagination start 
$page = $_GET['id']; 
$perPage = 10; 
$result = wbQuery("SELECT * FROM wb_news WHERE newsLang=1 ". $_SESSION["storeQuery"] ."ORDER BY newsId DESC"); 
$totalPages = mysql_num_rows($result); 
if(!$page) 
$page = 1; 
$start = ($page - 1)*$perPage; 
?> 
    <div id="sps_middle"> 
     <div class="sps_cnt"> 
      <div id="sps_middle_ly1"> 
       <div class="sps_cnt_small"> 
        <div class="sps_page_title"><h3><?php echo $wb_lng['txtArchiveTitle']; ?></h3></div> 
         <div class="sps_pages_cnt" style="padding-top: 10px; float: left; margin-bottom: 15px;"> 
          <div class="sps_middle_col01"> 
           <div style="float: left;"> 
           <p> 
            <?php echo $wb_lng['txtArchiveInfo']; ?> 
           </p> 
            <form action="<?php $PHP_SELF; ?>" method="post" name="archiveForm" class="archiveForm"> 
             <ul> 
              <li> 
               <input name="archiveFld1" type="text" id="archiveFld1" value="<?php echo $wb_lng['txtArhivaFld_01']; ?>" /> 
               <input name="archiveFld2" type="text" id="archiveFld2" value="<?php echo $wb_lng['txtArhivaFld_02']; ?>" /> 
               <select name="archiveFld3"> 
                <option value="0"><?php echo $wb_lng['txtArhivaFld_07']; ?></option> 
                <option value="0" ><?php echo $wb_lng['txtArhivaFld_06']; ?></option> 
                <option value="1"><?php echo $wb_lng['txtArhivaFld_03']; ?></option> 
                <option value="2"><?php echo $wb_lng['txtArhivaFld_04']; ?></option> 
                <option value="3"><?php echo $wb_lng['txtArhivaFld_05']; ?></option> 
               </select> 
              </li> 
              <li style="float: right;"> 
               <input name="reset" type="reset" class="sps_archiveform_btn" value="<?php echo $wb_lng['txtArchiveFormReset']; ?>"/> 
               <input name="submit" type="submit" class="sps_archiveform_btn" value="<?php echo $wb_lng['txtArchiveFormSend']; ?>"/> 
              </li> 
             </ul> 
            </form> 
           </div> 
           <hr /> 
<?php 
if (#HERE GOES SOME CODE TO PERFORM THE CHECK!!!#) { 
    //perform db query 
    $result = wbQuery("SELECT * FROM wb_news WHERE newsLang=1 ". $_SESSION['storeQuery'] ."ORDER BY newsId DESC LIMIT $start, $perPage"); 
    //count rows 
    $totalnews = mysql_num_rows($result); 
    $count = 1; 
    if($totalnews == 0) { 
     //no results, say to the user 
     echo "\t\t\t<div class=\"cil_news_text_big\">\n\t\t\t\t".$wb_lng['txtArchiveNoEntries']."\n\t\t\t</div>\n"; 
    } else { 
     //we have results, yeeeeeeeeey 
     while($ROWnews = mysql_fetch_object($result)){ 
      //set link extensions by the news cat 
      switch ($ROWnews->newsCat) { 
       case 1: 
        $newsCat_link = "news"; 
        break; 
       case 2: 
        $newsCat_link = "statements"; 
        break; 
       case 3: 
        $newsCat_link = "events"; 
        break; 
      } 
      //text summary 
      if (strlen($ROWnews->newsShort) > 0) {$newsShortTxt = strip_tags($ROWnews->newsShort); 
       if ($lang_id==2) { $newsShortTxt = wbTranslit($newsShortTxt); } 
      } else { 
       $newsShortTxt = strip_tags($ROWnews->newsFull); 
       if ($lang_id==2) { $newsShortTxt = wbTranslit($newsShortTxt); } 
      } 
      $newsShortTxt = wbShorTxt($newsShortTxt, 210, "... <a title=\"".$wb_lng['txtShowMore']."\" href=\"http://".$_SERVER['HTTP_HOST']."/".$lang_link."/".$newsCat_link."/".$ROWnews->newsId."/full/\">".$wb_lng['txtShowMore']."...</a>"); 
      //show news 
      echo "\t\t<div class=\"sps_news_list\">\n"; 
      echo "\t\t<div class=\"sps_news_l\">\n"; 
      echo "\t\t\t<img alt=\"\" src=\"http://".$_SERVER['HTTP_HOST']."/content/images/news/_thumb/".$ROWnews->newsImageThumb."\" />\n"; 
      echo "\t\t</div>"; 
      echo "\t\t<div class=\"sps_news_r\">\n"; 
      //transliterate title 
      if ($lang_id==2) { $newsTitle = wbTranslit($ROWnews->newsTitle); } else { $newsTitle = $ROWnews->newsTitle; } 
      echo "\t\t\t<div class=\"sps_news_title\">\n\t\t\t\t<a title=\"".$newsTitle."\" href=\"http://".$_SERVER['HTTP_HOST']."/".$lang_link."/".$newsCat_link."/".$ROWnews->newsId."/full/\">".$newsTitle."</a>\n\t\t\t</div>\n"; 
      echo "\t\t\t<div class=\"sps_news_date\">\n\t\t\t\t".$ROWnews->newsDate."\n\t\t\t</div>\n"; 
      echo "\t\t\t<div class=\"sps_news_text_sh\">\n\t\t\t\t".$newsShortTxt."\n\t\t\t</div>\n"; 
      echo "\t\t</div>"; 
      echo "\t\t</div>"; 
      //show <hr /> based on $count 
      if($totalnews != $count) { echo "\t\t\t<hr />\n"; } 
      $count++; 
     } 
    } 
//pagination check 
if($totalPages>$perPage) { 
?> 
           <hr /> 
           <div class="sps_pagginate"> 
            <?PHP wbPageTurnFront($PHP_SELF."/".$lang_link."/archive/", $totalPages, $page, $perPage); ?> 
           </div> 
<?php 
    } 
} 
?> 

任何想法? TNX :)

回答

0

如果用戶進入,使之成爲新的搜索,那麼你可以在那個時候清除會話。

 
unset($_SESSION['storeValues']); 
+0

不是禁用分頁? –

+0

問題出在用戶轉到起始頁面時顯示搜索結果。 –