Autor Zpráva
Fastman
Profil
Zdravím,

Mám jednoduché stránkování 1,2,3,4.. řízené přes $start = $_GET['page']; problém však je, že se posouvá o jeden záznam navíc (nikoliv blok záznamů).
Osobně bych viděl problém zde:
"SELECT * FROM Tabulka ORDER BY timestamp DESC LIMIT $start, 30"

Abych to popsal.
Při vstupu na stránku mám záznamy (GET má hodnotu 0):
1. jablko
2. hruska
3. meloun

Když si přepnu na 1 (u stránkování, takže GET má hodnotu 1), tak se záznamy posunou následovně:
1. hruska
2. meloun
3. citron

//stránkování 1,2,3...
$sqlss = "SELECT COUNT(timestamp) FROM Tabulka";
$rs_result = mysqli_query($pripojuji,$sqlss) or die('Could not look up user information; ' . mysqli_error($pripojuji));
$rowak = mysqli_fetch_row($rs_result); 
$total_records = $rowak[0]; 
$total_pages = ceil($total_records / 30); 
  
for ($i=1; $i<=$total_pages; $i++) { 
            echo "<a href='index.php?p=zaznamy&page=".$i."'>".$i."</a> "; 
}; 

Vše jinak funguje. Děkuji za odpovědi.
juriad
Profil
Fastman:
Nejspíš špatně vypočítáváš proměnnou $start. Uvědom si, že to nemá obsahovat číslo prvního záznamu, ale počet záznamů, které se mají přeskočit.

Mimochodem, for není příkaz. Nepatří za něj středník.
Fastman
Profil
juriad:
Děkuji za upozornění. A kdybych té proměnné přičetl + 30? Jak bych to podle Vás měl udělat? Nakonec by to muselo být takto 30, 60, 90..
juriad
Profil
Určení aktuální strany z parametru v URL:
if (empty($_GET['page'])) {
  $page = 1;
} else {
  $page = (int) $_GET['page'];
  if ($page <= 0) {
    $page = 1;
  }
}
$start = ($page - 1) * 30;

Jinak vše můžeš nechat stejně.
Fastman
Profil
Wow! Díky moc.

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: