Изкарване на категория от база данни

Vladislaw

Registered
Здравейте,
имам система за новини и използвам следния код за изкарване на резултати от базата данни:

Код:
<?php 
     if (isset($_GET['pageno'])) {
            $pageno = $_GET['pageno'];
        } else {
            $pageno = 1;
        }
        $no_of_records_per_page = 6;
        $offset = ($pageno-1) * $no_of_records_per_page;


        $total_pages_sql = "SELECT COUNT(*) FROM posts";
        $result = mysqli_query($con,$total_pages_sql);
        $total_rows = mysqli_fetch_array($result)[0];
        $total_pages = ceil($total_rows / $no_of_records_per_page);


$query=mysqli_query($con,"select tblposts.id as pid,tblcategory.CategoryName as category,tblcategory.id as cid,tblsubcategory.Subcategory as subcategory,tblposts.PostUrl as url from tblposts left join tblcategory on tblcategory.id=tblposts.CategoryId left join  tblsubcategory on  tblsubcategory.SubCategoryId=tblposts.SubCategoryId where tblposts.Is_Active=1 order by tblposts.id desc  LIMIT $offset, $no_of_records_per_page");
while ($row=mysqli_fetch_array($query)) {
?>
Изкарвам резултати с този код: <?php echo htmlentities($row['posttitle']);?>

Въпроса ми е:
Системата разполага с категории, като на всяка новина има CategoryId (всяко ID е на определена категория).
Искам да изкарам резултатите от категория id=10 в началната страница. Как трябва да бъде направен кода?
 
Променяш грешната заявка.

Първо, в първата заявка, където броиш, използваш грешната таблица или в една от двете заявки използваш грешната, гледай го както искаш, но ще приема, че във втората заявка долу, таблиците са правилните.

Първата заявка.
Код:
$total_pages_sql = "SELECT COUNT(*) FROM tblposts WHERE CategoryId = 10";

И после долу:

Код:
select tblposts.id as pid,tblcategory.CategoryName as category,tblcategory.id as cid,tblsubcategory.Subcategory as subcategory,tblposts.PostUrl as url from tblposts left join tblcategory on tblcategory.id=tblposts.CategoryId left join  tblsubcategory on  tblsubcategory.SubCategoryId=tblposts.SubCategoryId where tblposts.CategoryId = 10 and tblposts.Is_Active=1 order by tblposts.id desc  LIMIT $offset, $no_of_records_per_page

или форматирана заявката изглежда така:

Код:
select tblposts.id                as pid,
       tblcategory.CategoryName   as category,
       tblcategory.id             as cid,
       tblsubcategory.Subcategory as subcategory,
       tblposts.PostUrl           as url
from tblposts
    left join tblcategory on tblcategory.id = tblposts.CategoryId
    left join tblsubcategory on tblsubcategory.SubCategoryId = tblposts.SubCategoryId
where 
    tblposts.CategoryId = 10
    and tblposts.Is_Active = 1
order by tblposts.id desc
limit $offset, $no_of_records_per_page

Естествено, категорията си я подавай по някакъв начин, като и на двете места трябва да е еднакво.
 
Revelation каза:
Променяш грешната заявка.

Първо, в първата заявка, където броиш, използваш грешната таблица или в една от двете заявки използваш грешната, гледай го както искаш, но ще приема, че във втората заявка долу, таблиците са правилните.

Първата заявка.
Код:
$total_pages_sql = "SELECT COUNT(*) FROM tblposts WHERE CategoryId = 10";

И после долу:

Код:
select tblposts.id as pid,tblcategory.CategoryName as category,tblcategory.id as cid,tblsubcategory.Subcategory as subcategory,tblposts.PostUrl as url from tblposts left join tblcategory on tblcategory.id=tblposts.CategoryId left join  tblsubcategory on  tblsubcategory.SubCategoryId=tblposts.SubCategoryId where tblposts.CategoryId = 10 and tblposts.Is_Active=1 order by tblposts.id desc  LIMIT $offset, $no_of_records_per_page

или форматирана заявката изглежда така:

Код:
select tblposts.id                as pid,
       tblcategory.CategoryName   as category,
       tblcategory.id             as cid,
       tblsubcategory.Subcategory as subcategory,
       tblposts.PostUrl           as url
from tblposts
    left join tblcategory on tblcategory.id = tblposts.CategoryId
    left join tblsubcategory on tblsubcategory.SubCategoryId = tblposts.SubCategoryId
where 
    tblposts.CategoryId = 10
    and tblposts.Is_Active = 1
order by tblposts.id desc
limit $offset, $no_of_records_per_page

Естествено, категорията си я подавай по някакъв начин, като и на двете места трябва да е еднакво.

Стана, като промених и долния ред. Благодаря!
 

Горе