2012-10-07 14 views
2
保持一個和前一個分頁

我的數據庫有2代表「類別」和「文章」,如何使用ID的排序按類別

Category 

id | Category 
--------------------- 
1 Mobiles 
2 Computers 
-------------------- 
Article 


id | Category | title |article 
------------------------------------- 
1 2  title  article desc 
2 1  title  article desc 
3 1  title  article desc 
4 1  title  article desc 
5 2  title  article desc 


-------------------------------------- 

我的文章頁面生成的URL爲這種格式。

URL/ID/TITLE 

我想在當前文章頁面中顯示下一篇和之前的文章標題。

所以我用下面的代碼來顯示下一個和前一個標題的鏈接。

上一篇文章

$getid = $_GET['id']; 
$previous = $getid - 1; 
$previousdata = $db->getRow("select * from article WHERE news_id='$previous'"); 

下一篇文章

$getid = $_GET['id']; 
$next = $getid + 1; 
$nextdata = $db->getRow("select * from article WHERE news_id='$next'"); 

和PHP代碼像

<a href="http://www.domain.com/article-<?php echo ($previousdata['news_id']); ?>/<?php echo friendlyURL($previousdata['title']); ?>"> <?php echo friendlyURL($previousdata['title']); ?></a> 

這工作得很好,它顯示了一個和上一個環節的手機和電腦的帖子使用編號爲

如果我在移動設備類別中發佈了2篇文章,例如生成的ID爲12和13,接下來如果我在計算機類別中發佈文章,則生成的ID爲14.當用戶閱讀移動文章的ID爲13時,底部顯示以前的文章標題爲ID 12,下一篇文章標題爲ID 14。顯然前一篇文章是移動的,接下來是計算機類。

,但我想只顯示與「手機」類只下一個和以前的分頁,

所以我儘量分配類別

$getid = $_GET['id']; 
$next = $getid + 1; 
$nextdata = $db->getRow("select * from article WHERE Category=1 AND id='$next'"); 

這並不只過濾移動..

回答

1

您可以直接從查詢得到它,如下

$getid = $_GET['id']; 
$nextdata = $db->getRow("select * from article WHERE Category=1 AND news_id > ".$getid." order by news_id ASC LIMIT 0,1"); 

$previousdata = $db->getRow("select * from article WHERE Category=1 AND news_id < ".$getid." order by news_id DESC LIMIT 0,1"); 
+0

@YogeshSuthar他編輯了他的問題..以前,他把文字值寫成類別..查看編輯歷史 – GBD

+0

NIce,但是當一些文章被打開時,下一個和前一個顯示相同 – ADHI

+0

好的。現在檢查我編輯的答案 – GBD

1

如果我明白你想獲得再下一個/前面的文章ID在同一類別:

下一篇文章:

$nextdata = $db->getRow(" 
    select * 
    from article 
    where Category = 1 and id > $current_article_id 
    order by id 
    limit 1 
"); 

上一篇文章:

$previousdata = $db->getRow(" 
    select * 
    from article 
    where Category = 1 and id < $current_article_id 
    order by id desc 
    limit 1 
");