2011-09-01 84 views
0

這是我在用戶點擊聯盟時在我的網站上進行分頁的腳本。
聯盟然後回到屏幕上,如果聯盟超過3排,那麼它會將它分成幾頁。
我在做什麼取決於用戶在聯盟中的位置(SQL查詢使用ORDER BY表中的總積分列),例如,如果用戶在聯賽表的第一頁上,然後讓它顯示該頁面首先顯示,但是如果用戶在聯賽表格的第3頁上,則首先顯示該頁面。PHP分頁,首先查看某個頁面

有沒有人知道一種方式,以便我實現這一目標?

//Recently updated from answer 

$sql="SELECT members.username, members.total_points FROM members, members_leagues WHERE members.username = members_leagues.username AND 
     members_leagues.sub_league = '$chosenleague' ORDER BY members.total_points DESC"; 

$result=mysql_query($sql); 

$i = 0; 
$found = false; 
$team_position = 0; 

while (!$found && $row = mysql_fetch_row($result)){ 
    if ($row[username] == $_SESSION[username]) { 
    $team_position = $i; 
    $found = true; 
    } 
$i++; 
} 

$rowsPerPage = 3; 

$pageNum = ceil($i/$rowsPerPage); 
//end of recently updated 

if(isset($_GET['page'])) 
    $pageNum = $_GET['page']; 

$offset = ($pageNum - 1) * $rowsPerPage; 
$counter = $offset + 1; 

$query = " SELECT members.username, members.teamname, members.total_points, FROM members, members_leagues WHERE members.username = members_leagues.username AND members_leagues.sub_league = '$chosenleague' ORDER BY members.total_points DESC " . " LIMIT $offset, $rowsPerPage"; 

$result = mysql_query($query) or die('Error, query failed'); 

echo "<h3 style=\"color:red;\">$chosenleague</h3>"; 
echo "<table>"; 
echo "<tr><th>Position</th>"; 
echo "<th>Team</th>"; 
echo "<th>Points/Overall</th>"; 
echo "<th>Points/Last Race</th>"; 
echo "<th>Team Setup</th></tr>"; 

while($row = mysql_fetch_array($result)) 
{ 
    if($row[username] == $_SESSION[username]) 
     echo "<tr style=\"color:red;\"><td>"; 
    else 
     echo "<tr><td>"; 

    echo $counter; 
    echo "</td><td>"; 
    echo $row[teamname]; 
    echo "</td><td>"; 
    echo $row[total_points]; 
    echo "</td><td>"; 
    echo "</td><td>"; 
    echo "</td></tr>"; 
    $counter++; 
} 
echo "</table>"; 

$query = "SELECT COUNT(members.username) AS numrows FROM members, members_leagues WHERE members.username = members_leagues.username 
AND members_leagues.sub_league = '$chosenleague'"; 

$result = mysql_query($query) or die('Error, query failed'); 
$row = mysql_fetch_array($result, MYSQL_ASSOC); 
$numrows = $row['numrows']; 

$maxPage = ceil($numrows/$rowsPerPage); 

$self = $_SERVER['PHP_SELF']; 
$nav = ''; 

if ($pageNum > 1) 
{ 
    $page = $pageNum - 1; 

    $prev = " <a href=\"$self?league=". rawurlencode($chosenleague) . "&page=". rawurlencode($page) . "\"><< Prev</a> "; 
    $first = " <a href=\"$self?league=". rawurlencode($chosenleague) . "&page=". rawurlencode(1) . "\">First</a> "; 
} 
else 
{ 
    $prev = ''; 
    $first = ''; 
} 

if ($pageNum < $maxPage) 
{ 
    $page = $pageNum + 1; 
    $next = " <a href=\"$self?league=". rawurlencode($chosenleague) . "&page=". rawurlencode($page) . "\">Next >></a> "; 
    $last = " <a href=\"$self?league=". rawurlencode($chosenleague) . "&page=". rawurlencode($maxPage) . "\">Last</a> "; 
} 
else 
{ 
    $next = ''; 
    $last = ''; 
} 

echo "<div id=\"pagenum\">Page $pageNum of $maxPage &nbsp;". $first . $last . $prev . $next ."</div>"; 
+0

那麼,你想重新排序你的分頁數? (第1頁,第2頁,第3頁?) – tskulbru

+0

我不想重新排序頁碼,但僅僅是第一次查看聯盟時,它會顯示用戶所在的頁面。因此,我點擊聯盟顯示聯盟和我的球隊頁面,如果聯盟有30頁,我在第6頁,然後顯示第6頁。 – Lee

+0

你知道任何javascript嗎? –

回答

0

您可以通過MySQL或PHP做:

隨着PHP:

發現陣列中的請求記錄的位置,然後計算出你需要提取並執行相應的頁面查詢。就像是。

$i = 0; 
$found = false; 
$team_position = 0; 

while (!$found && $row = mysql_fetch_row) { 
    if ($row['team'] == 'team_your_searching_for') { 
    $team_position = $i; 
    $found = true; 
    } 
    $i++; 
} 

//calculate $top and $bottom 
... 

$sql = "SELECT * FROM members LIMIT $top, $bottom;"; 
... 

隨着MySQL的:

您可以創建生成自動增量值,從對方的結果選擇了查詢和其他。我的意思是

-- get the the selected member's position 
SELECT team, pos FROM (SELECT team, points, @position = @position + 1 AS pos FROM members ORDER BY points) WHERE team = @the_team_your_searching_for; 

-- get the nr of members 
SELECT COUNT(*) FROM members; 

... 

-- calculate the page you wanna extract (@top, @bottom), and extract it 
SELECT * FROM members LIMIT @top, @bottom; 
+0

嘿,我對你發給我的PHP部分有點麻煩,它似乎不會增加$ i,它就像啓動while循環並馬上退出一樣。有什麼可以看到的嗎?我已經更新了我的問題頂部的代碼。 – Lee

+0

試試這個 - > $ row = mysql_fetch_row($ result); while($ $ found && $ row){ if($ row [username] == $ _SESSION [username]){ $ team_position = $ i; $ found = true; } $ i ++; $ row = mysql_fetch_row($ result) } –

+0

由於這種情況 - > $ row = mysql_fetch_row($ result),它不會進入循環內部。先儲存$行,然後檢查$行。 http://es.php.net/manual/es/function.mysql-fetch-row.php –