2013-07-30 34 views
-3

乾草大家幫助一點幫助。電影不排序

在我的電影頁面我可以按4個事物電影,但只有1個在同一時間

ABC 
Date Added 
Imdb Ratings 
Year 

但我試圖做的是排序的電影由2個齊頭並進年和IMDB評分,但它不會工作。

能否請你檢查是什麼原因造成的錯誤

這裏是公共職能碼

public function getRealMovies($lang=null, $p=null, $l=null, $sortby=null){ 
    $movies = array(); 

    if (($p) && ($l)){ 
     $start = ($p-1)*$l; 
     $limit = " LIMIT $start,$l"; 
    } else { 
     $limit = ''; 
    } 

    if (!$sortby || $sortby=='abc'){ 
     $order = "ORDER BY title ASC"; 
    } elseif ($sortby=='date'){ 
     $order = "ORDER BY date_added DESC"; 
    } elseif ($sortby=='imdb_rating'){ 
     $order = "ORDER BY imdb_rating DESC"; 
    } elseif ($sortby=='year'){ 
     $order = "ORDER BY year DESC"; 
    } elseif ($sortby=='imdb_rating&year'){ 
     $order = "ORDER BY imdb_rating, year DESC";   
    } 

    $e = mysql_query("SELECT * FROM movies WHERE id IN (SELECT movie_id FROM movie_embeds) $order $limit") or die(mysql_error()); 
    if (mysql_num_rows($e)>0){ 

     $ids = array(); 

     while($s = mysql_fetch_array($e)){ 
      $movies[$s['id']] = $this->formatMovieData($s, $lang); 
      $ids[] = $s['id']; 
     } 

     if (count($ids)){ 

      $flags = $this->getFlags($ids); 

      if (count($flags)){ 
       foreach($movies as $movie_id => $val){ 
        if (array_key_exists($movie_id,$flags)){ 
         $movies[$movie_id]['languages'] = $flags[$movie_id]; 
        } else { 
         $movies[$movie_id]['languages'] = array(); 
        }  
       } 
      } 
     } 

    } 
    return $movies; 
} 

這裏是重寫角色

RewriteRule ^/?movies/(\d+)$ index.php?menu=movies&p=$1&sortby=abc&lang=en [L] 
RewriteRule ^/?movies/abc/(\d+)$ index.php?menu=movies&p=$1&sortby=abc&lang=en [L] 
RewriteRule ^/?movies/date/(\d+)$ index.php?menu=movies&p=$1&sortby=date&lang=en [L] 
RewriteRule ^/?movies/imdb_rating/(\d+)$ index.php?menu=movies&p=$1&sortby=imdb_rating&lang=en 
RewriteRule ^/?movies/year/(\d+)$ index.php?menu=movies&p=$1&sortby=year&lang=en 
RewriteRule ^/?movies/date index.php?menu=movies&sortby=date&lang=en 
RewriteRule ^/?movies/abc index.php?menu=movies&sortby=abc&lang=en 
RewriteRule ^/?movies/imdb_rating index.php?menu=movies&sortby=imdb_rating&lang=en 
RewriteRule ^/?movies/year index.php?menu=movies&sortby=year&lang=en 
RewriteRule ^/?movies/fav index.php?menu=movies&sortby=imdb_rating&year&lang=en 
RewriteRule ^/?movies index.php?menu=movies&lang=en [L] 
RewriteRule ^/?requests index.php?menu=requests&lang=en [L] 

這裏是bottons

    <li{if $sortby eq 'abc'} class="current"{/if}><a href="{$baseurl}/{$routes.movies}/abc">{$lang.sorting_abc}</a></li> 
       <li{if $sortby eq 'date'} class="current"{/if}><a href="{$baseurl}/{$routes.movies}/date">{$lang.sorting_newest}</a></li> 
       <li{if $sortby eq 'imdb_rating'} class="current"{/if}><a href="{$baseurl}/{$routes.movies}/imdb_rating">{$lang.sorting_imdb}</a></li> 
       <li{if $sortby eq 'year'} class="current"{/if}><a href="{$baseurl}/{$routes.movies}/year">{$lang.released}</a></li> 
       <li{if $sortby eq 'imdb_rating&year'} class="current"{/if}><a href="{$baseurl}/{$routes.movies}/imdb_rating&year">Fav</a></li> 
      {else} 
       <li{if $sortby eq 'abc'} class="current"{/if}><a href="{$baseurl}/index.php?menu=movies&sortby=abc">{$lang.sorting_abc}</a></li> 
       <li{if $sortby eq 'date'} class="current"{/if}><a href="{$baseurl}/index.php?menu=movies&sortby=date">{$lang.sorting_newest}</a></li> 
       <li{if $sortby eq 'imdb_rating'} class="current"{/if}><a href="{$baseurl}/index.php?menu=movies&sortby=imdb_rating">{$lang.sorting_imdb}</a></li> 
       <li{if $sortby eq 'year'} class="current"{/if}><a href="{$baseurl}/index.php?menu=movies&sortby=year">{$lang.released}</a></li> 
       <li{if $sortby eq 'imdb_rating&year'} class="current"{/if}><a href="{$baseurl}/index.php?menu=movies&sortby=imdb_rating&year">Fav</a></li> 

任何一個可以幫助請

謝謝:)

+1

你應該更新你的舊[問題](http://stackoverflow.com/questions/17920068/sorting-movies-by-2-things)。 –

+0

Switch case真的存在 –

+0

RewriteRule是一個重寫的ROLE,一個按鈕是botton,我只是說我笑了:)它甚至不是一個簡單的拼寫錯誤,它是重命名。當然,這個世界上有一些獨特的人:> –

回答

2

您正在使用條件elseif ($sortby=='imdb_rating&year')&year是在GET HTTP請求一個新的關鍵,換句話說$sortby只有在這種情況下,'imdb_rating'值。

您必須使用其他分隔,例如:

elseif ($sortby=='imdb_rating_and_year') 

而變化重寫規則:

RewriteRule ^/?movies/fav index.php?menu=movies&sortby=imdb_rating&year&lang=en 

這樣:

RewriteRule ^/?movies/fav index.php?menu=movies&sortby=imdb_rating_and_year&lang=en 

,並在相同的模板更改。