Есть два шага для этого:
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