Skocz do zawartości

Zdjęcie
* * * * * 1 głosy

Paginacja


16 odpowiedzi w tym temacie
  • Zaloguj się, aby dodać odpowiedź
WebRapko

    Użytkownik

  • 97 postów
    • Czas spędzony online: 12m
-12
Słaba
  • LocationMalopolska

Napisano 24 lutego 2014 - 23:07

#1
Witam wszystkich!

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 :D
  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 25 lutego 2014 - 09:05

#2

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;

....

  • 1

webDeveloper


WebRapko

    Użytkownik

  • 97 postów
    • Czas spędzony online: 12m
-12
Słaba
  • LocationMalopolska

Napisano 25 lutego 2014 - 09:15

#3
Wiesz, może ja lepiej pokaże swój kod i ty mi powiesz co poprawic ok?
  • 0

vms

    Użytkownik

  • 81 postów
    • Czas spędzony online: 5h 33m 5s
28
Bardzo dobra

Napisano 25 lutego 2014 - 09:51

#4

Od tego mogłeś zacząć.Łatwiej wskazać rozwiązanie opierając się na kodzie, niż domyślać się z czym masz problem.


  • 1

WebRapko

    Użytkownik

  • 97 postów
    • Czas spędzony online: 12m
-12
Słaba
  • LocationMalopolska

Napisano 25 lutego 2014 - 16:56

#5
<?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 ''; 
 ?>

  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 25 lutego 2014 - 19:03

#6

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){ 

  • 1

webDeveloper


WebRapko

    Użytkownik

  • 97 postów
    • Czas spędzony online: 12m
-12
Słaba
  • LocationMalopolska

Napisano 26 lutego 2014 - 08:00

#7
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 :|
  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 26 lutego 2014 - 08:45

#8

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. [...]


  • 1

webDeveloper


vms

    Użytkownik

  • 81 postów
    • Czas spędzony online: 5h 33m 5s
28
Bardzo dobra

Napisano 26 lutego 2014 - 10:18

#9

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

  • 2

WebRapko

    Użytkownik

  • 97 postów
    • Czas spędzony online: 12m
-12
Słaba
  • LocationMalopolska

Napisano 27 lutego 2014 - 06:44

#10
To pokazalbys jak ma eygladac caly ppprawny kod? Przepraszam za fatyge.
  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 27 lutego 2014 - 09:24

#11

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

  • 2

webDeveloper


WebRapko

    Użytkownik

  • 97 postów
    • Czas spędzony online: 12m
-12
Słaba
  • LocationMalopolska

Napisano 27 lutego 2014 - 19:57

#12
Oto bledy:


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
  • 0

writen

    Stary wyjadacz

  • 458 postów
    • Czas spędzony online: 29d 22h 59m 44s
133
Znakomita!

Napisano 27 lutego 2014 - 21:07

#13

1. Nie ma zmiennej $postPerPage. powinno być $postsPerPage

 

2. Dzielisz przez zero. 

 

Podstawy angielskiego.


  • 1

logo-green-dark.png


WebRapko

    Użytkownik

  • 97 postów
    • Czas spędzony online: 12m
-12
Słaba
  • LocationMalopolska

Napisano 27 lutego 2014 - 21:29

#14
Nie pokazuje postow, (nazwy kolumn i tabeli sie zgadzaja - zero bledow)
<?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 ''; 
?>

  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 28 lutego 2014 - 08:54

#15


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
Tego typu błedy (literówki) powinieneś sam wyłapać, zwłaszcza że:


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ć?


  • 1

webDeveloper


WebRapko

    Użytkownik

  • 97 postów
    • Czas spędzony online: 12m
-12
Słaba
  • LocationMalopolska

Napisano 28 lutego 2014 - 20:40

#16
Taptalk mi tagi html
@edit
usuwa XD
  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 01 marca 2014 - 10:37

#17

Że co?


  • 0

webDeveloper





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych