2014-09-18 2 views
-2

У меня есть вопрос о пейджинге MySQL. Запись пользователя отображается в таблице с записью многих других пользователей. и таблица сортируется/выгружается. Теперь мне нужно отобразить страницу, содержащую строку пользователя, непосредственно после входа пользователя. Как я могу это достичь?как получить конкретные строки номер страницы в разбивке на страницы

create table t_users (id int auto_increment primary key, username varchar(100)); insert t_users(username) values ('jim'),('bob'),('john'),('tim'),('tom'), ('mary'),('elise'),('karl'),('karla'),('bob'), ('jack'),('jacky'),('jon'),('tobias'),('peter'); 

Я искал Google, но не нашли ответ так, пожалуйста, помогите

+0

Вы должны уточнить ваш вопрос немного. Здесь я вижу много подробностей, возможно, не относящихся к проблеме, и ваше название вопроса не соответствует вопросу в описании. Вы спрашиваете, как искать данные пользователя после входа? Или что-то другое? –

+0

Прежде чем отправлять больше кода, сначала ответьте на мой вопрос (на обычном английском языке). Сначала нам нужно четко понять проблему. Затем мы можем обсудить код позже. –

+0

У меня есть простой сценарий разбивки на страницы, который показывает сайты с предложением «где онлайн> 0» – vishal

ответ

0

Есть два шага для этого:

1. Определить позицию Ей в вашей отсортированной таблице.

скопирована и отлажены от: https://stackoverflow.com/a/7057822/2391142

Используйте этот SQL ...

SELECT z.rank FROM (
SELECT id, @rownum := @rownum + 1 AS rank 
FROM t_users, (SELECT @rownum := 0) r 
ORDER BY id ASC 
) as z WHERE id=1; 

... замена ORDER BY id ASC с любой ваш фактический порядок сортировки. И заменив номер 1 в WHERE id=1 с предоставленным номером в этом index.php? U = id url.

2. Определите номер страницы в соответствии с положением строки.

Используйте этот PHP, чтобы определить необходимый номер страницы ...

$rows_per_page = 50; 
$user_row_position = [result you got from step 1]; 
$page = ceil($user_row_position/$rows_per_page); 

... замена 50 с независимо от вашей реальной строки, на страницы предел, и положить реальный результат SQL в $ users_row_position.

И вуаля. У вас будет номер целевой страницы в переменной $page, и, надеюсь, вы можете взять ее оттуда.

EDIT

После дальнейшего обсуждения в комментариях, используйте этот бит PHP:

$page = 0; 
$limit = 10; 

// If a user ID is specified, then lookup the page number it's on. 
if (isset($_GET['u'])) { 
    // Check the given ID is valid to avoid SQL injection risks. 
    if (is_numeric($_GET['u'])) { 
     // Lookup the user's position in the list. 
     $query = mysqli_fetch_array(mysqli_query($link, "SELECT z.rank FROM (SELECT id, @rownum := @rownum + 1 AS rank FROM sites, (SELECT @rownum := 0) r WHERE online='0') as z WHERE id=" . $_GET['u'])); 
     $position = $query[0]; 
     if (is_numeric($position)) { 
      // Convert the result to a number before doing math on it. 
      $position = (int) $position; 
      $page = ceil($position/$limit); 
     } 
    } 
} 

// If a page number is specified, and wasn't already set by looking a user, then lookup the real starting row. 
if ($page == 0 && isset($_GET['page'])) { 
    // Check your given page number is valid too. 
    if (is_numeric($_GET['page'])) { 
     $page = (int) $_GET['page']; 
    } 
} 

// Notice that if anything fails in the above checks, we just pretend it never 
// happened and keep using the default page and start number of 0. 

// Determine the starting row based off the page number. 
$start = ($page - 1) * $limit; 

// Get the list of sites for the provided page only. 
$query = mysqli_query($link, "SELECT * FROM sites WHERE online='0' LIMIT " . $start . ", " + $limit); 
while ($row = mysqli_fetch_array($query)) { 
    // Stuff to render your rows goes here. 
    // You can use $row['fieldname'] to extract fields for this row. 
} 
+0

Я попробую и вернусь – vishal

+0

$ test = mysqli_query ($ link, "select * from sites where online> 0"); можете ли вы plz преобразовать это в свой код выше – vishal

+0

Почему никто не отвечает? – vishal

Смежные вопросы