Autor Zpráva
napres123
Profil
Dobrý den, někde jsem našel jednoduché stránkování
tady je kod
  <?php
$pocet_radku=mysql_query("SELECT count(*) as pocet FROM
Dodavatele");
$pocet_radku=mysql_fetch_array($pocet_radku);
 $pocet_radku=$pocet_radku["pocet"]-147;
$pocet_stran=ceil($pocet_stran=$pocet_radku/7);
$i=0;
 
for ($i = 1; $i <= $pocet_stran; $i++) 
{
  if ($i == 1 || $i == $pocet_stran || ($i >= $stranka - 3 && $i <= $stranka + 3))
    if ($i == $stranka)
      echo "<b>$i</b>";
    else    
      echo "<a href=\"../dodavatele.php?stranka=$i\"> $i </a>";
}
 

?>
který udělá 1 2 3 4 642
ale há bych chtěl místo číselného odkazu na poslední a první místo udělat jak se dělá ">>"
nevíte jak to upravit?
DarkMeni
Profil
Stačí smazat první část podmínky a nechat tam jen tu, aby prošli 3 nejbližší stránky kolem vybraný
A ty šipky dopsat před a po cyklu + ošetřit podmínkou, aby se tam neobjevilo třeba ( << 1 2 3 4 ), nebo jestli to nevadí (2 odkazy na 1. stránku), tak klidně i bez tý podmínky

if($stranka > 3) echo "<a href=\"../dodavatele.php?stranka=1\">&laquo;</a>";

for ($i = 1; $i <= $pocet_stran; $i++) 
{
  if ($i >= $stranka - 3 && $i <= $stranka + 3)
    if ($i == $stranka)
      echo "<b>$i</b>";
    else    
      echo "<a href=\"../dodavatele.php?stranka=$i\"> $i </a>";
}

if($stranka < ($pocet_stran - 3)) echo "<a href=\"../dodavatele.php?stranka=$pocet_stran\">&raquo;</a>";

Jestli ale máš 642 stran, tak ti tenhle algoritmus provede moc zbytečných instrukcí (průchodů cyklem), spíš by to chtělo vypočítat začátek a konec cyklu a místo 642 průchodů pak budeš mít třeba jen 7
napres123
Profil
DarkMeni:
děkuju moc, vůbec mně nenapadlo to dát před cyklus děkuju.
záznamu je 42, při psaní jsem přeskočil číslu a neudělal mezeru.
děkuju moc za pomoc
Joker
Profil
napres123:
V ukázce se nějak zpracuje 5 čísel stránek (maximálně to bude 9 čísel, kdybych byl někde uprostřed a zobrazovaly se ještě odkazy na předchozí tři stránky a první).
Přijde mi nehospodárné kvůli tomu udělat 642 cyklů.
Stačí přece cyklit od tří stránek před aktuální do tří stránek za aktuální a odkazy na první a poslední vypsat natvrdo.


define("ZOBRAZ_STRAN", 3);
define("VELIKOST_STRANY", 7);

$pocet_radku=mysql_query("SELECT count(*) as pocet FROM Dodavatele");
$pocet_radku=mysql_fetch_assoc($pocet_radku);
$pocet_radku=$pocet_radku["pocet"]-147; // tady nevím proč je zrovna 147
$pocet_stran=ceil($pocet_stran=$pocet_radku/VELIKOST_STRANY);
// $i=0; zbytečné

$od = ($stranka <= ZOBRAZ_STRAN) ? 1 : ($stranka - ZOBRAZ_STRAN);
$do = (($stranka + ZOBRAZ_STRAN) >= $pocet_stran) ? $pocet_stran : ($stranka + ZOBRAZ_STRAN);

if ($od > 1) echo "<a href=\"../dodavatele.php?stranka=1\">&laquo;</a>";

for ($i = $od; $i <= $do; $i++) 
{
    if ($i == $stranka)
      echo "<b>$i</b>";
    else    
      echo "<a href=\"../dodavatele.php?stranka=$i\"> $i </a>";
}

if ($do < $pocet_stran) echo "<a href=\"../dodavatele.php?stranka=$pocet_stran\">&raquo;</a>";

?>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: