2011-09-01 2 views
0

이것은 사용자가 리그에서 클릭 할 때 내 사이트의 페이징 스크립트입니다.
리그가 화면에 표시되고 리그가 3 행 이상인 경우 여러 페이지로 나뉩니다.
내가하고있는 일은 사용자가 리그에있는 위치에 따라 달라집니다 (SQL 쿼리는 ORDER BY 테이블의 총 포인트 열을 사용합니다). 예를 들어 사용자가 리그 테이블의 페이지 1에 있다면 표시해야합니다 해당 페이지가 먼저 표시되지만 사용자가 리그 표의 3 페이지에 있으면 해당 페이지가 먼저 표시됩니다.PHP 페이징, 먼저 특정 페이지보기

나를 달성하기위한 방법을 아는 사람이 있습니까? 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

페이지 번호 순서를 변경 하시겠습니까? (Page1, Page2, Page3?) – tskulbru

+0

페이지 번호의 순서를 변경하지 않고 처음으로 리그를 본 경우 사용자가있는 페이지가 표시됩니다. 따라서 리그를 클릭하면 리그가 표시되고 팀이있는 페이지가 있습니다. 리그가 30 페이지이고 6 번째 페이지에 있으면 6 번째 페이지가 먼저 표시됩니다. – Lee

+0

자바 스크립트를 아십니까? –

답변

0

당신은 MySQL의 또는 PHP를 통해 그것을 할 수

그런 다음 추출하고, 대응을 실행해야하는 페이지를 계산, 배열에서 요청 된 레코드의 위치를 ​​찾을 수 질문. 뭔가. MySQL과

$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;"; 
... 

:

당신의 다른 결과에서 선택하는 자동 증가 값을 생성 쿼리 및 다른를 만들 수 있습니다. 내 말은

-- 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 ($ row [username] == $ _SESSION [username]) { if (! $ found & $ 찾음 = true; } $ i ++; $ row = mysql_fetch_row ($ result) } –

+0

> $ row = mysql_fetch_row ($ result)로 인해 루프 내부로 들어 가지 않습니다. $ row를 먼저 저장하고 $ row인지 확인하십시오. http://es.php.net/manual/es/function.mysql-fetch-row.php –