2016-03-22 17 views
1

私は、さまざまなソートシステムのページ設定を行うコードを開発中です。 が好きで、が正しく出力されますが、タグのソーティングシステムでは機能しません。ページ区切りのPHPコードが機能しないのはなぜですか?

$sorting = $_GET["sorting"]; 

$per_page = 10; 
$pages = $count_total->num_rows; 
$total_pages = ceil($pages/$per_page); 

if($sorting == "likes") { 
     $count_total = $db2->query("SELECT * FROM likes WHERE user='$user'"); 
    } 

if($sorting == "tag") { 
    $tag_name = $_GET["tag_name"]; 
    $count_total = $db2->query("SELECT * FROM movie_tags WHERE tag_id='$tag_name'"); 
    } 

$pages = $count_total->num_rows; 
    $total_pages = ceil($pages/$per_page); 

$start = (($page - 1) * $per_page); 



for($number=1;$number<=$total_pages;$number++) { 
      if($page == $number) { 
      echo '<div class="complete_page">'.$number.'</div>'; 
      } else { 
      $sorting = $_GET["sorting"]; 
      echo '<a href="?page='.$number.'&sorting='.$sorting.'"> <div class="number_page">'.$number.'</div></a>'; 

      } 
     } 
     } 

これは、私がページネーションを使用している方法の例です:

$movie = $db2->query("SELECT * FROM movies ORDER BY likes DESC LIMIT $start, $per_page"); 

注:私は$pagesをエコーすると、両方の仕分けシステムが値を生成します。実際には、タグの値は11です。この値がページネーションシステムを作成しないのはなぜですか。 のソートシステムのために働いているので、これはページネーションシステムの問題ではないことは分かっています。

$movie = $db2->query("SELECT * 
         FROM movies 
         ORDER BY likes DESC 
         LIMIT $per_page 
         OFFSET $start"); 

これは開始$から始まっPER_PAGE $に行の量を設定する必要があります。

+0

[ちょうど '/?page = somesqlinjectionhere'を訪問することは非常に不幸になることを知っておくべきだと思っていました。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in -php) – Marty

+0

真。 SQLインジェクションなどのセキュリティは、チームの開発者が最終的に行う予定です。私は今このプロジェクトのソロ開発者です... –

+0

最後まで明白で重大なセキュリティ問題を残すことはお勧めしません。 – Marty

答えて

1

はあなたに照会変更してみてください。

+0

動作しませんでした。私のページネーションの例は無視してください。これは単なる例であり、私の問題には直接関係しません。 –

+0

$ start =(($ page-1)* $ per_page); これは$ pageではなく$ pageであることを意味しますか?私は目が見えないかもしれませんが、$ページが初期化されている場所が見つかりません。 –

+0

これはこういう意味です。あなたは私が$ pageをスキップしたことは間違いありません。 $ pageは単にURLのページ部分を取得します:movies.php?page = 1 –

1

SQLクエリで$ tag_nameを囲む2つの単一引用符を削除してください。 私は意味:

$count_total = $db2->query("SELECT * FROM movie_tags WHERE tag_id=".$tag_name); 

自分のタグ値が11であるので、私はTAG_IDという名前のデータベース列が整数であると信じています。これらの2つのシングルクォートでは、文字列/ varchar '11'と比較しています。

関連する問題