Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zaawansowane dzielenie na strony :|
menic
post 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 winksmiley.jpg
Albo coś podobnego


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
e-Gandalf
post 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.
Go to the top of the page
+Quote Post
spenalzo
post 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&para;ci podstron
$ile_p=($ile/$ile_prod);

// Link do poprzedniej strony
if($p>0)
{
echo "<input type=button value="&lt;&lt;" 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="&gt;&gt;" 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.


--------------------

Go to the top of the page
+Quote Post
woocash
post 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
Go to the top of the page
+Quote Post
menic
post 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 tongue.gif
Ale mi chodzi o wyświetlanie linków do nastepnych stron


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
Teodor
post 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]
Go to the top of the page
+Quote Post
menic
post 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??


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
spenalzo
post 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.


--------------------

Go to the top of the page
+Quote Post
menic
post 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ć


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
scanner
post 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 smile.gif
Proste jak budowa snopowiązałki.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
spenalzo
post 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.


--------------------

Go to the top of the page
+Quote Post
Sir Blade
post 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 questionmark.gif?

O snopowiązałce konnej czy snopowiązałce ciągnikowej questionmark.gif :wink:
Go to the top of the page
+Quote Post
menic
post 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 smile.gif

Próbowalem i trochę nie wychodziło :oops:
Ps. MAm to robić w pętli czy jeszcze przed niąquestionmark.gif


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
scanner
post 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 questionmark.gif?
O snopowiązałce konnej czy snopowiązałce ciągnikowej questionmark.gif
Oczywiście że o ciągnikowej z automatycznym systememm odszraniania.
Cytat
Próbowalem i trochę nie wychodziło
Ps. MAm to robić w pętli czy jeszcze przed niąquestionmark.gif
Pokaz co robiłeś...
I o jakiej pętli mówisz?


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
spenalzo
post 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]


--------------------

Go to the top of the page
+Quote Post
menic
post 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 tongue.gif


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
spenalzo
post 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ę.


--------------------

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 1.06.2024 - 08:44