zaawansowane dzielenie na strony :| |
zaawansowane dzielenie na strony :| |
7.07.2003, 18:12:10
Post
#1
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) |
Weim co sobiwe pomyśleliście po temacie...
Że to już było itp. Ale szukałem i nie znalazłem niczego co by mo pomogło :| Chodzi o podzielenie wyników z sql'a na strony. Chwilowo mam taki kod [php:1:ff75c7c234]<?php for($i=0;$i<ceil($any_topic/$tpp);$i++) { if($p == $i * $tpp) { echo '<b>'.($i+1).'</b>, '; } else { echo '<a href="'.$PHP_SELF.'?f='.$f.'&p='.($i*$tpp).'&sort='.$sort.'&order='.$order.'">'.($i+1).'</a>, '; } } ?>[/php:1:ff75c7c234] gdzie $tpp to ilośc wyników po ile ma dzielić $any_topic liczba wszystkich wyników. Wszystko działa ale jeżeli jest niewielka ilośc wyników. W przeciwnym razie wyświetla wszystko. Do czego zmierzam. Chciałbym aby wyświetlało jakoś przyjemniej czyli np. tak jak jest w phpBB Albo coś podobnego -------------------- |
|
|
7.07.2003, 19:04:59
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 195 Pomógł: 0 Dołączył: 7.07.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
[php:1:75f5eff9a1]<?php
$page = $_GET['page'] ? (int)$_GET['page'] : 0; $on_page = 10; $int = 100; // ilosc postow/newsow itp. $temp = ceil($inc/$on_page); for ($i=0; $i < $temp; $i++) { if ($page==$i) { print(($i+1).' '); } else { print('<a href="?page='.$i.'">'.($i+1).'</a> '); } } ?>[/php:1:75f5eff9a1] cos w tym stylu, podaje z glowy wiec moga byc czeskie bledy. |
|
|
7.07.2003, 22:43:21
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) |
W temacie jest zaawansowane więc zademonstruję mój kod, który umożliwia zdefiniowanie ilości produktów na stronę i wraz z comboboxem umożliwającym przeskoczenie do dowolnej strony.
[php:1:ddc7ab00ae]<?php // Ilosc produktow na strone $ile_prod=25; // Sprawdzanie liczby produktów w danej kategorii $q=mysql_query("SELECT count(ID) FROM produkty WHERE kat='5'"); $ile=@mysql_result($q,0); if($ile>0) { // Jeżeli nie ma numeru strony to nadajemy 0 if(!$p) { $p="0"; } // Obliczanie ilo¶ci podstron $ile_p=($ile/$ile_prod); // Link do poprzedniej strony if($p>0) { echo "<input type=button value="<<" onClick="document.location.href='produkty.php?id=$id&s=".floor($p-1)."'">"; } // Combo umozliwiajace przeskoczenie bezposrednio // do wybranej strony echo "<form method=GET name=str><input type=hidden name="id" value="$id">"; echo "<select name="p" onChange="document.location.href='produkty.php?id=$id&s='+this.value">"; for($i=0,$nr=1; $i<$ile_p; $i++,$nr++) { unset($sel); if($p==$i) { $sel=" selected"; } echo "<option value="$i"$sel>$nr</a>"; if($i%2) { echo "n"; } } echo "</select></form>"; // Link do nastepnej strony if($p<($ile_p-1)) { echo "<input type=button value=">>" onClick="document.location.href='produkty.php?id=$id&s=".floor($p+1)."'">"; } } else { echo "Brak produktów w danej kategorii"; } ?>[/php:1:ddc7ab00ae] Jest to stara wersja, nowa gdiześ wsiąkła :-( a było dokładniejsze sprawdzanie czy jest coś na następnej stronie. -------------------- |
|
|
8.07.2003, 07:53:09
Post
#4
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 5.04.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
Cytat Chodzi o podzielenie wyników z sql'a na strony.
Generalnie jeśli naprawdę chodzi o podzielenie na strony to najłatwiej jest to zrobić z poziomu zapytania SQL i użycie komendy LIMIT -------------------- "Dwie rzeczy są nieskończone: wszechświat i głupota ludzka. Co do tego pierwszego są jeszcze wątpliwości" - Albert Einstein
|
|
|
8.07.2003, 10:48:53
Post
#5
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) |
Tyle to wiem
Ale mi chodzi o wyświetlanie linków do nastepnych stron -------------------- |
|
|
8.07.2003, 11:02:25
Post
#6
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 0 Dołączył: 13.04.2003 Skąd: Poznan Ostrzeżenie: (0%) |
Moze tak:
[php:1:26da6095a4] <?php /* $news_poz - to ile pozycji na strone $s - to pozycja od ktorej zaczynasz wyswietlanie */ $news_poz=10; if(!$s){ $s="0"; } $connection = mysql_connect($config["host"],$config["user"],$config["password"]) or die( db_error() ); $db = mysql_select_db($config["database"],$connection); $sql = "SELECT* FROM news ORDER BY id DESC LIMIT $s,$news_poz"; $sql_result = mysql_query($sql,$connection); list($ile)=mysql_fetch_row(mysql_db_query($config["database"],"SELECT count(*) FROM news")); while ($row = mysql_fetch_array($sql_result)) { /* teraz wyswietlasz to co pobrales z bazy */ } /* a ponizej generowanie linkow do nastepnych stron */ for($s=0; $s<$ile; $s+=$news_poz) { $y=($ile-$s)/$news_poz; $x=ceil($y); echo"<a href="stronki.php?s=$s">$x</a> "; #to wyswietli linki w postaci 4 3 2 1 } /* LUB */ for($s=0; $s<$ile; $s+=$news_poz) { $z=$s/$news_poz+1; echo"<a href="stronki.php?s=$s">$z</a> "; #to wyswietli linki w postaci 1 2 3 4 } ?>[/php:1:26da6095a4] |
|
|
8.07.2003, 11:08:17
Post
#7
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) |
Taki kod mnie nie zadowala. A będzie jęzlie tych stron będzie np. 1000?? To co wyświetli mi wszystko po kolei??
-------------------- |
|
|
8.07.2003, 17:15:53
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) |
Cytat Taki kod mnie nie zadowala.
To napisz sobie sam, jak ci wszystko nie odpowiada!!!! To źle tamto źle a sam nic nie zrobisz. -------------------- |
|
|
8.07.2003, 17:34:00
Post
#9
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) |
Jak byś nie zauważył to już cos napisałem. Potrzeba mi to tylko rozbudować
-------------------- |
|
|
8.07.2003, 17:45:06
Post
#10
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
Spokój w piaskownicy, bo wiaderka pozabieram!
Skoro masz wyświetlanie wszystkiech stron, to chyba aż tak trudne nie jest zaimplementowanie czegoś co sprawdza najpierw na ktorej stronie jestes (y) i pokazuje te, oraz +x, -x stron. do tego dokładasz: Pokazywanie 1 do x Pokazywanie max-x do max Jeszcze tylko kontrola czyt sie zakresu nie pokrywaja.. i koniec Proste jak budowa snopowiązałki. -------------------- |
|
|
8.07.2003, 17:46:03
Post
#11
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) |
Cytat Jak byś nie zauważył to już cos napisałem. Potrzeba mi to tylko rozbudować
My też. Zobacz sobie linie 24-38 w moim poście. -------------------- |
|
|
8.07.2003, 17:49:00
Post
#12
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 0 Dołączył: 7.06.2002 Ostrzeżenie: (0%) |
Cytat Proste jak budowa snopowiązałki.
A o której snopowiązałce mowa ? O snopowiązałce konnej czy snopowiązałce ciągnikowej :wink: |
|
|
8.07.2003, 17:51:29
Post
#13
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) |
Cytat Skoro masz wyświetlanie wszystkiech stron, to chyba aż tak trudne nie jest zaimplementowanie czegoś co sprawdza najpierw na ktorej stronie jestes (y) i pokazuje te, oraz +x, -x stron.
do tego dokładasz: Pokazywanie 1 do x Pokazywanie max-x do max Jeszcze tylko kontrola czyt sie zakresu nie pokrywaja.. i koniec Próbowalem i trochę nie wychodziło :oops: Ps. MAm to robić w pętli czy jeszcze przed nią -------------------- |
|
|
8.07.2003, 17:55:47
Post
#14
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
Cytat Cytat Proste jak budowa snopowiązałki. A o której snopowiązałce mowa ?
O snopowiązałce konnej czy snopowiązałce ciągnikowej Cytat Próbowalem i trochę nie wychodziło
Pokaz co robiłeś...
Ps. MAm to robić w pętli czy jeszcze przed nią I o jakiej pętli mówisz? -------------------- |
|
|
8.07.2003, 17:58:54
Post
#15
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) |
Jak masz już ustalony w jakiś sposób numer strony to zrób tak:
[php:1:5c55af2f8f]<?php $page=54; $ile=5; // ile stron w przód i tył $strony=103; // ilosc wszystkich stron if(($page-$ile)>0) { for($i=0; $i<$ile; $i++) { echo "<a href=costam.php?page=".($page-$i).">".($page-$i)."</a>"; } } if(($page+$ile)<$strony) { for($i=0; $i<$ile; $i++) { echo "<a href=costam.php?page=".($page+$i).">".($page+$i)."</a>"; } } ?>[/php:1:5c55af2f8f] -------------------- |
|
|
8.07.2003, 17:59:52
Post
#16
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) |
Cytat Pokaz co robiłeś...
I o jakiej pętli mówisz? NA samym początku postu jest mój kodzik. A pętla... No ta która wyswietla nam cyferki -------------------- |
|
|
25.11.2003, 01:30:18
Post
#17
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) |
Sugeruję aby przykleić gdzieś ten temat, bo pytanie o dzielenie na strony powtarza się.
-------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 1.06.2024 - 08:44 |