2011-07-22 36 views
0

所以我是新來的PHP/MySQL。我正在測試一個非常小的數據庫(只有10個記錄的單表),因爲我只是想學習。如何編寫PHP代碼以逐個查看記錄?

我展示一個PHP頁面上的以下結果:其中城市=「亞特蘭大」

它的工作原理..結果顯示在我的網頁上選擇MYTABLE *。現在,我想知道,我怎麼能把這個記錄下的鏈接放在「顯示下一個結果」的位置,並點擊它,它只是拉起一個新的頁面,並在我的數據庫中的下一個結果?

這是否需要整個分頁腳本還是有一個簡單的方法?

謝謝!

+1

下一個結果是什麼意思?另一個城市(如「聖地亞哥」)或選定的所有「亞特蘭大」返回的下一個城市?如果是後者,你怎麼拉一個城市開始呢?你可以發佈你的PHP腳本和數據庫結構的更新嗎? – rockerest

回答

2

你在看什麼是在php中分頁。網上有這麼多的教程。 here是一個你可以看到的

1

我能想到的最簡單的方法是非手工(如果你不想使用一個全分頁腳本)是獲得你的行的ID(可能使用array_keys()),跟蹤當前活動的鍵(通過$ _GET)然後使用一些簡單的邏輯來確定id數組中的前一個值和下一個值,並在構建導航鏈接時使用它們。

5

最簡單的方法是將包括一個整數$_GET變量,它是行號+ 1

<a href="index.php?id=<?php echo ($id + 1) ?>" /> 

然後爲你的PHP腳本,你需要得到的值,或使用默認值(0 )如果沒有提供。

<?php 
    if(!isset($_GET['id'])) 
     $id = 0; 
    else 
     $id = $_GET['id']; 
?> 

不要忘記綁定你的整數,所以你不能得到無效的結果。在你的情況下,確保$id不低於0或高於9。簡單的東西就像

if($id < 0) $id = 0; 

    if($id > 9) $id = 9; 

應該工作。這會在前面的代碼示例之後立即執行。

然後爲您的查詢,根本就

$sql = "select * from mytable where city = 'atlanta' LIMIT {$id}, 1"; 

通知的LIMIT條款這裏有兩個參數。首先,您當前的$id號碼告訴查詢從哪裏開始查看結果集。第二個參數告訴它從開始應該採取多少結果。在這種情況下,我們總是需要一個,所以我們將它保留爲1

當然,你應該參數化這個查詢,但因爲它聽起來像你剛剛學習SQL,這不是一個大問題。如果這是一個公共網站,你需要。

你也可以使用mysql_num_rows或PDO等於拿到適用的行的總數,然後確定$id + 1是否高於行(這意味着你是最後一個記錄),如果是這樣,不顯示的總數越大到下一個記錄的鏈接。

完整代碼

<?php 
    if(!isset($_GET['id'])) 
     $id = 0; 
    else 
     $id = $_GET['id']; 

    if($id < 0) $id = 0; 

    if($id > 9) $id = 9; 

    $sql = "select * from mytable where city = 'atlanta' LIMIT {$id}, 1"; 

    $result = mysql_fetch_assoc($sql); 
?> 

Display your result here 

<?php if(($id + 1) < mysql_num_rows($result)) : 

<a href="index.php?id=<?php echo ($id + 1) ?>" /> 

<?php endif; ?> 
+2

'$ id =(int)$ _GET ['id'];'鑄造整數來自GEt是一件好事,特別是對於初學者來說 – regilero

+0

好的解決方案,但是我強烈建議使用PDO(我更喜歡)或mysqli來代替即將被棄用的mysql擴展。使用準備好的陳述是一個很好的做法 - 越早開始,越好(初學者問題)。 – middus

+0

不得不在我的測試中努力工作,但是..非常值得。我從中學到了一大堆。很棒!非常感謝這個偉大的例子和解釋! – Andi

3

一整個分頁腳本? :)不,只是這樣的事情

$items_per_page = 1; 
$page = max(1, (int) $_GET['page']); 
$offset = ($page-1) * $items_per_page; 
$limit = $items_per_page; 

$sql = "SELECT * FROM `table` LIMIT {$offset}, {$limit}" 

現在只需要調用使用

http://localhost/index.php?page=1 
http://localhost/index.php?page=2 
http://localhost/index.php?page=3 
etc 
+0

哇!你們很好! :) 非常感謝。我現在要玩所有的反應......因爲我的目標只是學習......而且我想了解你在這裏寫的是什麼。我會回來的。 再次感謝! – Andi

+1

這個人像冠軍一樣工作!哇!!非常感謝!!我現在要查看其他解決方案......但我不相信你完成了這麼多行。謝謝!!! – Andi

+0

如果它像冠軍一樣工作,則將其標記爲已解決或被接​​受回答 – DWolf

2

現在,我想知道你的腳本,我怎麼可以把一個鏈接這個紀錄,上面寫着「秀下下一個結果「並點擊它

您必須提供具有下一個數據庫條件鍵值的鏈接。

例如 你的網頁是:

從數據庫中選擇:亞特蘭大

鏈接=>下一個條目(在這裏,你必須提供一個條件你的實際情況是,其中城市=「亞特蘭大」等下次。你必須知道)

做到這一點,正確的方法是在這個例子中

$sql = "SELECT * FROM mytable WHERE id='<?=$_POST['id']?>'"; 

,並以這種方式創建SQL問題,你可以打印鏈接

<a href='?id=<?=db["id"]+1?>'>Next Entry</a> 
+0

謝謝!其他人讓我走了,這給了我需要的'下一個鏈接'信息。 – Andi