Dzielenie wynikół SQL na strony

Mam pewien problem jest np. 107 wpisów w bazie danych i ja chce, żeby na stronie pojawiło się tylko 10 wpisów albo 7 i chce też dodrukować hiperłącza, żeby to wyglądało tak

Oczywiście mamy się rozumieć, że na 1 stronie pojawią się wpisy od 1 do 10 na drugiej od 11 do 20 to, że drukuje tyle stron ile jest wpisów udało mi się zrobić jednak u mnie jest tak że na pierwszej stronie drukuje od 1 do 10 a na 2 od 12 do 14. Jak zrobić to dobrze ?

Wiele systemów bazodanowych oferuje rozszerzenie pozwalające na pobranie jedynie części wyników zapytania

Np. w PostgreSQL jest to LIMIT i OFFSET: http://www.postgresql.org/docs/9.2/stat … limit.html

Jeśli u Ciebie coś działa źle, to pokaż kod, bez tego trudno wróżyć, co jest nie tak.

Chodzi mi o to, że jak jest np. 111 rekordów SQL i mamy takie zadanie wydrukować te rekordy na tylu stronach, żeby je wszystkie wydrukować i tak, żeby na 1 stronie było maksymalnie 10 rekordów.

Czy ty w ogóle przeczytałeś ten link który podał ci nr47 ? Dajesz limit od ilość na stronie *nr strony -1, ilość na stronie * numer strony,

Poza tym na forum taki temat był i jak chcesz gotowca wystarczy użyć szukajki.

Próbowałem z tym, ale dzisiaj nie dało rady.

@tomi001 I dobrze by było jakbyś napisał jakiego systemu bazodanowego używasz :wink:

MySQL

SELECT * FROM `your_table` LIMIT [OD], [Ile rekordów]

np. LIMIT 0, 10 (pierwsze 10), LIMIT 10, 10 (kolejne)

W hiperłączach musisz przesyłać informację, od którego wyniku ma wypisywać.

Jak mam coś takiego to nie chce mi sortować nie wiem czemu

Zawsze jak zapytanie nie chce działać, wypisz je sobie “echem” i wklej do np. Phpmyadmin’a czy MySQL Workbench, czy czegokolwiek co pokaże ci błąd w zapytaniu.

Masz w zapytaniu $_GET[strona], brakuje apostrofów. Aczkolwiek nie jestem pewien czy teraz już zadziała, czy przypadkiem w PHP w cudzyslowiach nie można używać tablic.

$strona = $_GET['strona'];

$query = " select id,user,co_robil,data,os,przegladarka,ip,system from statystyki limit 0, $strona ORDER BY od";

Ale w tym ciągle jest błąd. Teraz strona jest podatna na ataki SQL injection, musisz jakoś zabezpieczyc zmienną $strona, np. MySQL_real_escape_string

B.Andy, zaprzeczasz sam sobie. Pierw piszesz poprawnie, a potem kopiujesz kod z błędem. Nie masz zaczynać od 0, tylko od nr strony*ilość elementów, a wyświetlić masz ilość elementów .

PS Nie jestem pewien, ale takie sortowanie po id (o ile jest to klucz główny) jest domyślne. A co do tych apostrofów, zależy jak wywołujesz zapytanie.

@B.Andy

Z innej beczki: Co jeżeli $_GET[‘strona’] będzie zawierać “; drop table statystyki; --” ? To się nazywa SQL Injection.

Jedyna słuszna metoda wprowadzania danych od użytkownika: http://www.php.net/manual/en/mysqli.prepare.php

@up

Przeczytaj cały post :slight_smile: fakt faktem, że prepared statements jest lepsze os takich funkcji.

@ drobok

Głupi błąd ;d tak to jest jak się na wpół śpi, dzięki za zwrócenie uwagi :slight_smile: