Cytat
<?php
$select_id = 'Select id FROM news';
?>
Może bardzo obciążyć serwer mysql (w przypadku dużej ilości newsów i odwiedzających). Jak inaczej to rozwiązać?
Nie przesadzaj. Bazy danych Nie są, ąż tak bardzo wrażliwe. Chociaż można twoje zapytanie zoptymalizować.
SELECT COUNT(*)
FROM news
Dalej...
SELECT title, text, nick, date
FROM news
WHERE id < $stop ORDER BY id DESC LIMIT $news_page
...zamień na...
SELECT title, text, nick, date
FROM news
ORDER BY id DESC LIMIT $news_page OFFSET $idy2
...zakładając, że
$news_page to ilość newsów na stronę. Konstrukcja zapytania z LIMIT (i OFFSET) wyeliminuje Twóje problemy po wywaleniu id z BD.
A teraz czytaj komentarze.
<?php
//gdzie deklaracja $news_page
/****************************/
//Dzięki konstrukcji poniżej $_GET['page'] posiada domyslną wartość (int) 1
//$page = isset($_GET['page']) ? $_GET['page'] : 1;
$page = $_GET['page'];
//a nie lepiej zwyczajnie $page--? Pozbedziesz się dodatkowej zmiennej. Za dużo ich produkujesz.
$page2 = $page - 1;
//tak jak radziłem wyżej
$select_id = 'Select id FROM news';
//wtedy to
//i to niepotrzebne
$idy = $wiersze + 1;
//gubię się w nazwach zmiennych, strasznie się powtarzasz
//utrudnia to sprawdzanie błędów
$idy2 = $page2 * $news_page;
//Jeżeli dostosowałeś się do pierwszej rady, musisz koniecznie zmienic konstrukcję
tego if'a (najlepiej wywal).
if(!isset($_GET['page'])) {
$stop = $idy;
}
else
{
$stop = $idy - $idy2;
}
//Rada wyżej
$select_news = 'Select title, text, nick, date FROM news WHERE id < '.$stop.' ORDER BY id DESC LIMIT '.$news_page.'';
//Dalej nie sprawdzam. Zakładam, że stronnicowanie i drukowanie danych jest poprawne.
?>
Tylko nie myśl, że jak wkleisz moje zalecenia to skrypt zacznie cudownie działać. Co to, to nie

. Ja staram sie tylko pokazać Tobie właściwy kierunek.
Pozdrowienia.