各位好,如何得知某筆資料是在資料庫中第幾筆資料呢?
<?php $photoId = $_GET['photoId']; // 照片id $albumId = $_GET['albumid']; // 相簿id $page = 12; // 每頁張數 mysql_select_db($db); $sql = sptintf("SELECT ph.* FROM album al INNER JOIN photos ph ON ph.albumId = al.al_id AND al.al_id = %s ORDER BY ph.ph_id ASC", $albumId); $result = mysql_query($sql) or die(mysql_error()); $row = mysql_fetch_row($result); $num = mysql_num_rows($result); // 將所有id寫入陣列 do { $arrId[] = $row['ph_id']; } while($row = mysql_fetch_row($result)); // 查出該照片在陣列的位置 $position = array_search($photoId, $arrId)+1; // 若為末張修正正確頁數 if ($position%$page == 0) { $pages = (int)($position/$page)-1; } else { $pages = (int)($position/$page); } return '<a href="album.php?pages=' . $pages . '&albumId=' . $albumId . '">回上層</a>'; mysql_free_result($result); ?>
提供一個想法:這要看你怎麼排序,如果你分頁也是用依賴上頁的ph.ph_id,而這是一個遞增的int(例如auto_increment),那你可以用count計算ph.ph_id小於等於目前照片id的筆數。
你不用把所有ph_id找出來用程式比對啦(討論中的那樣),用sql就可以解決了(依照你的邏輯)。
請問在什麼場合下會需要得知某筆資料是在資料庫中第幾筆資料?
在SQL資料庫庫裡,似乎不太需要知道資料是在資料庫中第幾筆,反正SQL會找到它,也不用關心它怎麼做到的、、、
但是如果是隨機檔或循序檔,那麼你要找到這筆資料,倒不見得要知道是第幾筆,但程序沒有第幾筆的旗標或記錄,那麼你將無法找到你要的記錄、、、
古早的DBF、DBC確實有這樣的東西....
在Visual FoxPro裡頭,可以用RECNO()取得目前資料指標的位置....
只是...這個對於目前大多數的資料庫....意義並不大