Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zaawansowane dzielenie na strony :|
Forum PHP.pl > Forum > PHP
menic
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
e-Gandalf
[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.
spenalzo
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.
woocash
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
menic
Tyle to wiem tongue.gif
Ale mi chodzi o wyświetlanie linków do nastepnych stron
Teodor
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]
menic
Taki kod mnie nie zadowala. A będzie jęzlie tych stron będzie np. 1000?? To co wyświetli mi wszystko po kolei??
spenalzo
Cytat
Taki kod mnie nie zadowala.

To napisz sobie sam, jak ci wszystko nie odpowiada!!!! To źle tamto źle a sam nic nie zrobisz.
menic
Jak byś nie zauważył to już cos napisałem. Potrzeba mi to tylko rozbudować
scanner
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.
spenalzo
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.
Sir Blade
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:
menic
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
scanner
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?
spenalzo
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]
menic
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
spenalzo
Sugeruję aby przykleić gdzieś ten temat, bo pytanie o dzielenie na strony powtarza się.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.