Что написать вместо $_GET в моей пагинации?

У меня есть следующая структура сайта:

$requestUri = $_SERVER["REQUEST_URI"]; // полный url
$phpSelf = $_SERVER['PHP_SELF']; // имя скрипта
$path = substr($phpSelf,0,strpos($phpSelf,'index.php')); // убираем домен

$request_url = substr($requestUri,strlen(SITE_URL));
$request_url = urldecode($request_url); // декодируем URL-кодированную строку.
$url = explode('/',rtrim($request_url,'/'));

for($i=0; count($url[$i]); $i++){
	$url[$i] = strip_tags($url[$i]); // убирает html теги.
	$url[$i] = htmlspecialchars($url[$i]); // преобразует спец. символы в html сущности.
	$url[$i] = mysql_escape_string($url[$i]); //Экранирует SQL спец-символы для mysql_query.
}

if($param[0] == 'page'){
    include(PATCH_DATA."page.php");
    $title = "Страница - ".$r."";
	$tpl = 'tpl_page.php';
}


И есть следующая пагинация, в которой я не знаю на что мне заменить $_GET['page']! Help!

$query =  "SELECT COUNT(id) AS count FROM `news`";
    $result = mysql_query($query) or die("Invalid query: " . mysql_error());
    $row = mysql_fetch_assoc($result);
    $rows_max = $row['count']; // Сколько всего новостей у нас в базе
    $show_pages = 1; // Сколько новостей покажем пользователю
    $this_page = filter_var($_GET['page'], FILTER_SANITIZE_NUMBER_INT); // Номер текущей страницы
     
    if ($this_page)
    {
            $offset = (($show_pages * $this_page) - $show_pages);
    }
    else
    {
            $this_page = 1; // Ставим в единицу (первая страница) если не передан параметр $_GET['page']
            $offset = 0;
    }
     
    // Запиливаем собственно, панельку со ссылками на страницы, если нужна пагинация
    if ($rows_max > $show_pages)
    {
           $r = 1;
           while ($r <= ceil($rows_max/$show_pages))
           {
               if ($r != $this_page)
               {          
                    echo '<a href="/page/' . $r . '" title="Перейти на страницу '.$r.'">'.$r.'</a>';
               }
               else
               {
                   echo '<b>' . $r . '</b>'; // Если это текущая страница - то ссылка на саму себя не нужна
                }
                $r++;      
           }
    }
     
    $query_limited = "SELECT * FROM news ORDER BY id DESC LIMIT $offset, $show_pages";
    $final_result = mysql_query($query_limited);
     
    while ($row = mysql_fetch_assoc($final_result)) {  
        echo '<center><div id="novosti"><table border="0" width="706"><td><strong><center> <div id="novostin"><div id="novostip">'.$row["title"].'</a><br /></div><hr></hr></center></strong><div id="novostit">' ;
        echo $row["description"].'</div><div id="novostif"><br /></div></div></td></table></div><br />' ;
    }
    
}
  • Вопрос задан
  • 2302 просмотра
Пригласить эксперта
Ответы на вопрос 3
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1) Почитайте про MVC пожалуйста и примените его.
Это как минимум сделает код читабельным

2) Не используете расширение mysql, используйте mysqli или pdo

3) Мне не понятна суть вопроса - зачем Вы хотите заменить $_GET['page'] ?
Ответ написан
Комментировать
abler98
@abler98
Software Engineer
Во-первых, код сложно читать, и зачем Вам заменять $_GET['page'] на что-то другое?
P.S. Советую глянуть:
php.net/manual/ru/function.parse-url.php
php.net/manual/ru/language.types.type-juggling.php
refactoring.guru
Ответ написан
Комментировать
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Если не доверяете пользовательским данным (и правильно делаете), то можно просто вначале рекурсивно обойти массив $_GET и "почистить" значения c помощью htmlspecialchars() например
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы