Autor Zpráva
Kosmak
Profil *
na webu nahrávám infformace z db pomocí tohoto kodu:
		$sql = mysql_query("SELECT * FROM clanky WHERE kat_id = '$kat' ORDER BY `id` DESC  ") or die (mysql_error());
while ($data = mysql_fetch_array($sql, MYSQL_BOTH)){echo $data["nazev"];}

celý můj program obsluhuje index php. Takže když zobrazuju články v kategorii vypadá to takhle:
index.php?clanky_kat=1
No a teď chci na stránku přidat stránkování :-). Našel jsem tohle:
<?php
// předávání počtu záznamů zbývajících do konce
$pocet = mysql_result(mysql_query("SELECT COUNT(*) FROM tabulka"), 0);
$offset = ($_GET["offset"] ? $_GET["offset"] : $pocet); // offset se předává od konce, aby stránky zůstaly trvale platné
$result = mysql_query("SELECT * FROM tabulka ORDER BY datum DESC, id DESC LIMIT $limit OFFSET " . ($pocet - $offset));
if ($offset < $pocet) {
    echo ' <a href="' . htmlspecialchars($_SERVER["PHP_SELF"]) . ($offset + $limit < $pocet ? "?offset=" . ($offset + $limit) : "") . '">zpět</a>';
}
if ($offset > $limit) {
    echo ' <a href="' . htmlspecialchars($_SERVER["PHP_SELF"]) . "?offset=" . ($offset - $limit) . '">vpřed</a>';
}
?>

Ale něják nemůžu přijít na to jak to funguje a tím pádem mi to nefunguje. Poradil by mi někdo jak vytvořit stránkovací systém?
SpotRudloff
Profil
               $limit = 1; //Limit novinek na stránku

               $result = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM news ORDER BY id DESC LIMIT $limit OFFSET " . ($limit * @$_GET["strana"]));
               $pocet = mysql_result(mysql_query("SELECT FOUND_ROWS()"), 0);
               
               while($row = mysql_fetch_array($result)){
               ...
               }

               $result = mysql_query("SELECT * FROM news");

               $strana = @$_GET['strana'];

               $stran_celkem = mysql_num_rows($result) / $limit; 
               $stran = round($stran_celkem);
               
               if($stran < $limit){
               echo "Strana ".(@$_GET['strana'] + 1)." z 1 <br />";
               }else{
               echo "Strana ".(@$_GET['strana'] + 1)." z ".$stran." <br />";
               }
               
               if(@$_GET["strana"]) {
                   echo '<a href="?strana=',($_GET['strana'] - 1),'"><<<&nbsp;</a>';
               }
               
               for($strana = 0; $strana < $stran; $strana++){
               echo '<a href="?strana=',$strana,'">',($strana + 1),'</a>&nbsp;';
               }
               
               if($pocet > $limit * (@$_GET["strana"] + 1)) {
                   echo '<a href="?strana=',(@$_GET["strana"] + 1),'">&nbsp;>>></a>';
               }  


Je to mnou upravený skript od Jakuba Vrány. Snad ti to pomůže.
Kosmak
Profil *
Super funguje to, upravil jsem to:
$limit = 2; //Limit novinek na stránku

               $result = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM hry WHERE kat_id = '".$_GET["hry_kat"]."' ORDER BY id DESC LIMIT $limit OFFSET " . ($limit * @$_GET["strana"]));
               $pocet = mysql_result(mysql_query("SELECT FOUND_ROWS()"), 0);
               
               while($data = mysql_fetch_array($result)){
               echo "<tr><td><img style='width: 95px; height: 120px;' src='".$data["hl_obrazek"]."' alt='Hlavní obrázek' border='0'/></td><td><a href='index.php?zobraz_hru=".$data["id"]."'><big><big>".$data["nazev"]."</big></big></a></td></tr>";

               }
echo "</table>";
               $result = mysql_query("SELECT * FROM news");

               $strana = @$_GET['strana'];

               $stran_celkem = mysql_num_rows($result) / $limit; 
               $stran = round($stran_celkem);
               
               if($stran < $limit){
               echo "Strana ".(@$_GET['strana'] + 1)." z 1 <br />";
               }else{
               echo "Strana ".(@$_GET['strana'] + 1)." z ".$stran." <br />";
               }
               
               if(@$_GET["strana"]) {
                   echo '<a href="index.php?hry_kat='.$_GET["hry_kat"].'&strana=',($_GET['strana'] - 1),'"><<<&nbsp;</a>';
               }
               
               for($strana = 0; $strana < $stran; $strana++){
               echo '<a href="index.php?hry_kat='.$_GET["hry_kat"].'&strana=',$strana,'">',($strana + 1),'</a>&nbsp;';
               }
               
               if($pocet > $limit * (@$_GET["strana"] + 1)) {
                   echo '<a href="index.php?hry_kat='.$_GET["hry_kat"].'&strana=',(@$_GET["strana"] + 1),'">&nbsp;>>></a>';
               }  

a už jsem skoro začal skákat metr nad zem. Ale je tu problém stránky jdou přepínat, jenomže to píše chybu:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/httpd/helpet.info/www/index.php on line 469
a ukazuje to třeba.
strana 2 z 1
což je blbost ;-)
Kde je chyba?
Kosmak
Profil *
Jo děkuju moc zapoměl jsem u result změnit údaje. už to funguje ;-)

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: