Paginacja
Napisano 24 lutego 2014 - 23:07
Pisze gdyz mam pewien problem, na moim blogu postanowilem stworzyc paginacje postow, i chyba kiepsko sie do tego zabralem.
Do rzeczy. Chcialbym poprosic jednego(ktorego kolwiek) forumowicza o pomoc, prosze o pokazanie jak by to mialo by wygladac(kod php/mysql).
Jezeli to istotne - Wyciagam dane z tylko dwoch kolumn.
Jeszcze raz prosze, i z gory dziekuje
Napisano 25 lutego 2014 - 09:05
Coś tego typu, masz chyba wystarczającego skilla w PHP (z tego co pamiętam z ogłoszenia to masz), żeby sobie z tym poradzić dalej:
$currentPage = (isset($_GET['page'])) ? $_GET['page'] : 1; $totalPosts = 666;//tutaj powinien byc jakis sql zliczajacy ilosc postow $postsPerPage = 10; $pages = ceil($totalPosts / $postPerPage); $start = $currentPage * $postsPerPage - 1; $sql = "SELECT * FROM tabela WHERE (tutaj warunek) LIMIT ".$start.",".$postsPerPage; ....
webDeveloper
Napisano 25 lutego 2014 - 09:15
Napisano 25 lutego 2014 - 09:51
Od tego mogłeś zacząć.Łatwiej wskazać rozwiązanie opierając się na kodzie, niż domyślać się z czym masz problem.
Napisano 25 lutego 2014 - 16:56
<?php echo ''; $onpage = 5; $page = addslashes($_GET['page']); if(empty($page)){ $page = 1; } /* Script */ $od = $page*$onpage; $do = $od+$onpage; $num = $db->query("SELECT * FROM vs_blog")->num_rows; $pages = ceil($num/$onpage); $all = $db->query("SELECT * FROM vs_blog ORDER BY id DESC LIMIT $od, $do"); while($ok = $all->fetch_assoc()){ echo ''.$ok['title'].' '.$ok['content'].' [ Usun post ]'; } echo 'rekordy od: '.$od.' do '.$do; $next = $page+1; if($num > $onpage*2){ echo 'Dalej >>'; } echo ''; ?>
Napisano 25 lutego 2014 - 19:03
LIMIT nie przyjmuje wartości od / do, tylko od (indeksowane od zera) / ilość rekordów.
$db to?
Po co echo ''; ?
Jaką miałeś wizję tworząc tego ifa:
if($num > $onpage*2){
webDeveloper
Napisano 26 lutego 2014 - 08:00
LIMIT nie przyjmuje wartości od / do, tylko od (indeksowane od zera) / ilość rekordów.
$db to?
Po co echo ''; ?
Jaką miałeś wizję tworząc tego ifa:
if($num > $onpage*2){
To patrz tutaj:
www.phpro.org/tutorials/Pagination-with-PHP-and-PDO.html
Teraz to juz nic nie rozumiem :|
Napisano 26 lutego 2014 - 08:45
No i co mam tam wypatrzeć? Tym linkiem tylko potwierdziłeś to co mówię:
[...] This SQL statement would fetch all records from my_table beginning at row 20, and fetching the next 40 records. [...]
webDeveloper
Napisano 26 lutego 2014 - 10:18
Teraz to juz nic nie rozumiem :|
Na pewno nie rozumiesz jak działa LIMIT
$od = ($page-1)*$onpage;
zakładając że $page > 0
LIMIT $od, $onpage
Napisano 27 lutego 2014 - 06:44
Napisano 27 lutego 2014 - 09:24
Przecież ja napisałem w drugim poście działający kod.
$currentPage = (isset($_GET['page'])) ? $_GET['page'] : 1; $totalPosts = $db->query("SELECT * FROM vs_blog")->num_rows; //tutaj powinien byc jakis sql zliczajacy ilosc postow $postsPerPage = 10; $pages = ceil($totalPosts / $postsPerPage); $start = $currentPage * $postsPerPage - 1; $all = $db->query("SELECT * FROM tabela WHERE (tutaj warunek) LIMIT ".$start.",".$postsPerPage); while(){...} echo 'rekordy od: '.$start+1 .' do '.$start+1+$postsPerPage;
Użytkownik unbreak edytował ten post 28 lutego 2014 - 08:48
webDeveloper
Napisano 27 lutego 2014 - 19:57
Notice : Undefined variable: postPerPage in /home/hawkes/public_html/home/layout/plugin/posts.php on line 6
Warning : Division by zero in /home/hawkes/public_html/home/layout/plugin/posts.php on line
Napisano 27 lutego 2014 - 21:07
1. Nie ma zmiennej $postPerPage. powinno być $postsPerPage
2. Dzielisz przez zero.
Podstawy angielskiego.
Napisano 27 lutego 2014 - 21:29
<?php echo ''; $currentPage = (isset($_GET['page'])) ? $_GET['page'] : 1; if(empty($currentPage)){ $currentPage = 1; } $totalPosts = $db->query("SELECT * FROM vs_blog")->num_rows; $postsPerOnePage = 10; $pages = ceil($totalPosts / $postsPerOnePage); $start = $currentPage * $postsPerOnePage - 1; $all = $db->query("SELECT * FROM vs_blog LIMIT ".$start.",".$postsPerOnePage); while($ok = $all->fetch_assoc()){ echo ''.$ok['title'].''.$ok['content'].' '; } echo ''; ?>
Napisano 28 lutego 2014 - 08:54
Tego typu błedy (literówki) powinieneś sam wyłapać, zwłaszcza że:
Notice : Undefined variable: postPerPage in /home/hawkes/public_html/home/layout/plugin/posts.php on line 6
Warning : Division by zero in /home/hawkes/public_html/home/layout/plugin/posts.php on line
PHP to teraz tak srednia(lepiej niz gorzej)
Co do samego tematu. Walnij sobie:
echo "SELECT * FROM vs_blog LIMIT ".$start.",".$postsPerOnePage;
sprawdź czy nie ma w nim błędu, później skopiuj tego sqla i wrzuć np w phpmyadmin i sprawdź czy są jakieś wyniki.
Ponad to:
Wywal to:
if(empty($currentPage)){ $currentPage = 1; }
Bo to bez sensu z linią poprzedzającą ten kawałek - lub zmień na jakiegoś ifa isnumeric, ale to można w jednej linijce nad tym kawałkiem zrobić.
Wywal to:
echo '';
Czemu ma to służyć?
webDeveloper
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych