Skocz do zawartości

Zdjęcie
- - - - -

Pomoc - Paginator


22 odpowiedzi w tym temacie
  • Zaloguj się, aby dodać odpowiedź
Bartoll

    Nowy użytkownik

  • 18 postów
    • Czas spędzony online: 4m 27s
1
Neutralna

Napisano 27 września 2013 - 19:24

#1

Potrzebuję pomocy przy paginatorze. Mianowicie chciałbym dodać do niego kilka funkcjonalności, jednak java to dla mnie na tą chwilę czarna magia. 

Kod:
<div id="paginator3000">
    <div class="paginator" id="paginator3"></div>
    <div class="paginator_pages">23 strony</div>
    <script type="text/javascript">
        pag3 = new Paginator('paginator3', 23, 10, 10, "");
    </script>

Liczby 23, 10, 10 to kolejno: ilość podstron, ilość stron, które są wyświetlane na "pasku", ostatnia to "aktywna strona". Ciągłe wpisywanie z palca mija się z celem, a nie mam zielonego pojęcia jak zrobić, żeby samo ładowało ilość podstron oraz aktywną stronę.. Jakby ktoś był tak miły i mi troszeczkę pomógł lub chociaż podsunął jakąś ideę byłbym wdzięczny smile.gif


  • 0

unbreak

    WT Elite

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

Napisano 27 września 2013 - 19:48

#2

FOA, nie java, a java Script :) To dwie różne rzeczy.

Nie lepiej obsłużyć to w PHP? Co tylko się da najlepiej jest liczyć po stronie serwera, a nie klienta (przeglądarki).

 

Jak nie ma możliwości PHP to daj znać, coś napiszemy żeby było OK :)


  • 2

webDeveloper


Bartoll

    Nowy użytkownik

  • 18 postów
    • Czas spędzony online: 4m 27s
1
Neutralna

Napisano 27 września 2013 - 20:00

#3

Oczywiście jest możliwość PHP, ale na to też nie mam pomysłu hehe :D

 

Tutaj masz stronę testową jak to wszystko wygląda: http://ciekawostkilo...wostkizlola.pl/


  • 0

unbreak

    WT Elite

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

Napisano 27 września 2013 - 20:06

#4

Z tego co widzę to masz paginator, więc w czym problem? :D

 

Masz tylko niepoprawnie działający:

1. kolejne strony odnoszą się do /?page=X a powinny do ./?page=X (czyli z kropką, lub bez /)

2. Nie masz zaznaczonej aktualnej strony

 

Pokaż za pomocą http://wklej.to/ kawałek kodu odpowiedzialnego za paginator.


  • 2

webDeveloper


Bartoll

    Nowy użytkownik

  • 18 postów
    • Czas spędzony online: 4m 27s
1
Neutralna

Napisano 27 września 2013 - 20:16

#5

Nie chodzi o przekierowywanie na inne strony, wiem ze nie działa bo nie ustawiałem. Chodzi mi tylko o liczbe "wszystkich stron", zeby nie trzeba bylo edytować co chwile kodu i o aktywną strone. Paginator już działa poprawnie.


  • 0

unbreak

    WT Elite

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

Napisano 27 września 2013 - 20:21

#6

Masz zapewne w jakiejś zmiennej w php zachowaną ilość wszystkich postów, do tego masz zmienną zawierającą ile ma być postów na stronie, teraz robisz:

$total = 666;
$postPerPage = 10;
$currentPage = 2;
$pages = ceil($total / $postPerPage);

for($i=1;$i<=$pages;$i++){
   echo "<a class='pagin". ( ($currentPage == $i) ? ' active' : '' ) ."' href='?page=".$i."'>".$i."</a>";
}

i powinno działać, oczywiście możesz to wszystko obudować po swojemu :)


  • 2

webDeveloper


Bartoll

    Nowy użytkownik

  • 18 postów
    • Czas spędzony online: 4m 27s
1
Neutralna

Napisano 27 września 2013 - 20:29

#7

https://github.com/C...t/paginator3000 
Tutaj jest link do tej modyfikacji, pokazany .css, to co wkleic np. do index.php i do scripts.js 
Teraz pytanie, jak do tego zastosować to co napisałeś, byłbym wielce wdzięczny gdybyś pomógł mi to przeanalizować/zastosować :)


  • 0

unbreak

    WT Elite

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

Napisano 27 września 2013 - 20:39

#8

Pierwsze co to widzę że tam masz html, a musi być php ;) Po 2. to tutaj masz już gotowe rozwiązanie do paginatora :P

 

Olej to co pisałem wcześnie. Robisz tak:

<?php 
$currentPage = 5;
$totalPages = 666;
$pagesPerPage = 10;
?>

<div class="paginator" id="paginator"></div>
<div class="paginator_pages">1024 pages</div>
<script type="text/javascript">
	pag = new Paginator('paginator', <?php echo $totalPages; ?>, <?php echo $pagesPerPage; ?>, <?php echo $currentPage; ?>, "");
</script>

Tylko pod warunkiem że to masz pliczek php :) A domyślam się że masz :D


  • 2

webDeveloper


Bartoll

    Nowy użytkownik

  • 18 postów
    • Czas spędzony online: 4m 27s
1
Neutralna

Napisano 27 września 2013 - 20:46

#9

No też całkiem fajne rozwiązanie, jednak nie do końca o to mi chodziło. Chciałbym coś bardziej dynamicznego, żeby pobierał ilość podstron z serwera sam i dostosywał paginator, bo teraz "suwak" można przewijać, aż do 666 strony, co jest zdeka bez sensu :)
Sprawdź na stronie, którą podałem wyżej :) 


  • 0

unbreak

    WT Elite

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

Napisano 27 września 2013 - 20:51

#10

No tak, bo ja założyłem że ten fragment:

<?php 
$currentPage = 5;
$totalPages = 666;
$pagesPerPage = 10;
?>

Masz już gdzieś wyżej. $currentPage to zapewne będzie tak:

$currentPage = (isset($_GET['page'])) ? $_GET['page'] : 1;

Co do reszty to niestety nie wiem jak Ty to tam masz w php zrobione pobieranie postów :/ Na pewno jest jakaś zmienna, czy coś.


Użytkownik unbreak edytował ten post 27 września 2013 - 20:53

  • 2

webDeveloper


Bartoll

    Nowy użytkownik

  • 18 postów
    • Czas spędzony online: 4m 27s
1
Neutralna

Napisano 27 września 2013 - 20:53

#11

Okej, poszukam, dzięki z góry :)

 

@edit

Niestety,tak się chyba nie da
 

$currentPage = $_GET['page'];

po wpisaniu tego do index.php mam taki błąd

Notice: Undefined index: page in /home/p326889/public_html/ciekawostkizlola.pl/_themes/minimalistic/index.php on line 42

jakiś pomysł ? :/


  • 1

unbreak

    WT Elite

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

Napisano 27 września 2013 - 21:01

#12

Byłeś za szybki :P Zaraz po napisaniu swojego postu przewidziałem ten błąd i edytowałem posta, ale Ty już skopiowałeś pierwszą wersję kodu, zamiast tamtego daj to:

$currentPage = (isset($_GET['page'])) ? $_GET['page'] : 1;

Użytkownik unbreak edytował ten post 27 września 2013 - 21:02

  • 1

webDeveloper


Bartoll

    Nowy użytkownik

  • 18 postów
    • Czas spędzony online: 4m 27s
1
Neutralna

Napisano 27 września 2013 - 21:05

#13

Super, to już działa :) 
Wysłałem ci na priv link do pewnej dyskusji. Myślę, że według tego można by coś wykombinować z ostatnią stroną :)


  • 0

unbreak

    WT Elite

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

Napisano 27 września 2013 - 21:14

#14

Ja nie znam tego CMS-a więc robię to na czuja :)

Czyli kod PHP w całości będzie wyglądał tak:

$settings = mysql_fetch_assoc(mysql_query("SELECT * FROM `tentego_settings`"));
$postsPerPage = $settings['objects_per_page'];
$totalPages = mysql_num_rows(mysql_query("SELECT * FROM `tentego_img` WHERE `is_waiting`=0"));
$currentPage = (isset($_GET['page'])) ? $_GET['page'] : 1;

Btw pagesPerPage zmień wszędzie na postsPerPage :) Bo to pierwsze jest bez sens ;)

 

 

+ chociaż to zapytanie dla postsPerPage wygląda mi na takie które nie będzie działać :P ale żeby to zrobić tak żeby działało, musiałbym poznać strukturę tej tabeli tentego_settings :)


Użytkownik unbreak edytował ten post 27 września 2013 - 21:21

  • 2

webDeveloper


Bartoll

    Nowy użytkownik

  • 18 postów
    • Czas spędzony online: 4m 27s
1
Neutralna

Napisano 27 września 2013 - 21:21

#15
$settings = mysql_fetch_array(mysql_query("SELECT * FROM `tentego_settings`"));
$pages = 10;
$postsPerPage = $settings['objects_per_page'];
$totalPages = mysql_num_rows(mysql_query("SELECT * FROM `tentego_img` WHERE `is_waiting`=0"));
$currentPage = (isset($_GET['page'])) ? $_GET['page'] : 1;
?>
<center><div id="paginator3000">
<div class="paginator" id="paginator3"></div>
<div class="paginator_pages">23 strony</div>
<script type="text/javascript">
	pag = new Paginator('paginator3', <?php echo $totalPages; ?>, <?php echo $pages; ?>, <?php echo $currentPage; ?>, "/ciekawostkizlola.pl/?page=");
</script>
</div></center>

Tak wygląda teraz cały kod w index.php

Zmienną $pages zrobiłem po to, żeby na suwaku było widocznych w jednym momencie 10 stron.
Jednak coś jeszcze jest nie tak, ponieważ wyświetla na suwaku 137 stron, a mam tylko 23 na serwerze. 
Nie wiem czy ogarniasz trochę TenTego, ale czy nie powinienem kodów z tamtego linku wrzucić jeszcze do /admin/apps/manager/app_page ? :)

 

Dobra! Już sobie poradziłem, dzięki wielkie, bardzo mnie nakierowałeś :)
 

$settings = mysql_fetch_array(mysql_query("SELECT * FROM `tentego_settings`"));
$is_waiting = 0;
$pages = 10;
$query = mysql_num_rows(mysql_query("SELECT * FROM `tentego_img` WHERE `is_waiting`='$is_waiting'"));
$ilosc_stron = $query/$settings['objects_per_page'];
if ($ilosc_stron != intval($ilosc_stron)) $ilosc_stron = $ilosc_stron+1;
$prawdziwa_ilosc = intval($ilosc_stron);
$currentPage = (isset($_GET['page'])) ? $_GET['page'] : 1;
?>
<center><div id="paginator3000">
<div class="paginator" id="paginator3"></div>
<div class="paginator_pages">23 strony</div>
<script type="text/javascript">
	pag = new Paginator('paginator3', <?php echo $prawdziwa_ilosc; ?>, <?php echo $pages; ?>, <?php echo $currentPage; ?>, "/ciekawostkizlola.pl/?page=");
</script>

Cały działający kod :)


Użytkownik Bartoll edytował ten post 27 września 2013 - 21:28

  • 0

unbreak

    WT Elite

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

Napisano 27 września 2013 - 21:29

#16

No tak, zamieszałem trochę :D Sorry, to ta godzina :) Na dzisiaj będzie to mój ostatni post :D

$settings = mysql_fetch_assoc(mysql_query("SELECT * FROM `tentego_settings`"));
$postsPerPage = $settings['objects_per_page'];
$totalPosts = mysql_num_rows(mysql_query("SELECT * FROM `tentego_img` WHERE `is_waiting`=0"));
$currentPage = (isset($_GET['page'])) ? $_GET['page'] : 1;
$totalPages = ceil($totalPosts / $postsPerPage);
$page = 10;

Powinno już działać, a jak nie będzie, to jutro dokończymy, jak będę wyspany ;)

 

 

+ za dużo masz tam niepotrzebnego kodu PHP :) Spróbuj moje ;p


Użytkownik unbreak edytował ten post 27 września 2013 - 21:30

  • 1

webDeveloper


Bartoll

    Nowy użytkownik

  • 18 postów
    • Czas spędzony online: 4m 27s
1
Neutralna

Napisano 27 września 2013 - 21:38

#17

Próbowałem twoje to mi stopkę rozjechało o.O 
ciekawe.. :P


Użytkownik Bartoll edytował ten post 27 września 2013 - 22:33

  • 0

remik

    Nowy użytkownik

  • 24 postów
    • :
3
Neutralna

Napisano 27 września 2013 - 22:07

#18

Chciałem zobaczyć o co chodzi, ale to dropdown menu coś słabo działa. Po najechaniu na kategorie się rozwija, ale nie zdążę na nic najechać i znika :D


  • 0

Bartoll

    Nowy użytkownik

  • 18 postów
    • Czas spędzony online: 4m 27s
1
Neutralna

Napisano 27 września 2013 - 22:20

#19

Chciałem zobaczyć o co chodzi, ale to dropdown menu coś słabo działa. Po najechaniu na kategorie się rozwija, ale nie zdążę na nic najechać i znika :D

Dzięki za wiadomość, dopiero koduje styl, więc zdarzają się jakieś niedociągnięcia :)

 

@edit 

Już powinno być okej :)

 

@edit2

unbreak, teraz mam taki problem, żeby dostosować to do innych podstron np. search.php, categories.php itp. 
Np. mam kategorie blabla (21 elementów / 6 na strone) powinny wyjść 4 strony, a łapie te główne czyli 23, jakoś inaczej by tutaj trzeba było zbudować to zapytanie, jednak nie mam pomysłu :/


Użytkownik Bartoll edytował ten post 27 września 2013 - 22:35

  • 0

unbreak

    WT Elite

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

Napisano 28 września 2013 - 09:50

#20

Skąd wiesz że powinno być 21 elementów? :)


  • 0

webDeveloper






Podone tematy Collapse

  Temat Forum Autor Podsumowanie Ostatni post

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

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