2016-03-22 18 views
1

Farklı sıralama sistemleri için sayfa numaralandırma yapan bir kod parçası üzerinde çalışıyorum. gibi çalışır ve doğru şekilde çıktılar, ancak etiketinin sıralama sistemi için çalışmaz.Neden sayfalama PHP kodum çalışmıyor?

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

NOT: Ben $pages yankı, her iki sıralama sistemleri oluşturmak değerler

$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>'; 

      } 
     } 
     } 

Bu ben sayfalama kullanıyorum nasıl bir örnektir. Aslında, etiketi etiketi 11 değerine sahiptir. Bu değer neden sayfalandırma sistemini oluşturmuyor? Bunun, sayfalandırma sistemi ile ilgili bir sorun olmadığını biliyorum, çünkü beğeni sıralama sistemi için çalışıyor.

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

Bu başlangıç ​​$ dan başlayan per_page $ satır miktarını ayarlamak gerekir:

+0

[Sadece şunu bilmelisiniz ki '/? Page = somesqlinjectionhere' ziyareti çok talihsiz olabilir.] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in -php) – Marty

+0

Doğru. Düşüncem, en sonunda SQL Injection'ı ve diğer güvenliği geliştiricilerinden oluşan bir ekiple yapacağım. Şu anda bu projede yalnız bir geliştiriciyim ... –

+0

Sonuna kadar bariz ve ciddi güvenlik sorunlarını bırakmanızı tavsiye etmiyorum. – Marty

cevap

1

size sorgu değiştirmeyi deneyin.

+0

Çalışmadı. Lütfen sayfalama örneğimi dikkate almayın. Bu sadece bir örnek ve doğrudan benim sorunumla ilgili değil. –

+0

$ başlangıç ​​= (($ sayfa - 1) * $ per_page); Bu, $ sayfa yerine $ sayfalar anlamına geliyordu. Kör olabilirdim ama $ sayfasının başlatıldığı yeri bulamıyorum. –

+0

Bu, böyle olması gerektiği anlamına gelir. Haklısın, $ sayfasını atladım. $ sayfa basitçe URL'nin sayfa bölümünü alsın: movies.php? page = 1 –

1

SQL sorgunuzda 2 adet tek tırnaktaki $ tag_name öğesini kaldırmayı denemelisiniz. Yani: En etiket değeri 11 olduğu için

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

, ben senin veritabanı sütun TAG_ID adında inanıyoruz bir tam sayıdır. Ve bu 2 tek tırnak ile, bir string/varchar '11' ile karşılaştırıyorsunuz.