| Autor | Zpráva | ||
|---|---|---|---|
| Kosmak Profil * |
#1 · Zasláno: 2. 5. 2010, 21:43:02
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 |
#2 · Zasláno: 2. 5. 2010, 21:59:11 · Upravil/a: SpotRudloff
$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),'"><<< </a>';
}
for($strana = 0; $strana < $stran; $strana++){
echo '<a href="?strana=',$strana,'">',($strana + 1),'</a> ';
}
if($pocet > $limit * (@$_GET["strana"] + 1)) {
echo '<a href="?strana=',(@$_GET["strana"] + 1),'"> >>></a>';
} Je to mnou upravený skript od Jakuba Vrány. Snad ti to pomůže. |
||
| Kosmak Profil * |
#3 · Zasláno: 2. 5. 2010, 22:28:00
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),'"><<< </a>';
}
for($strana = 0; $strana < $stran; $strana++){
echo '<a href="index.php?hry_kat='.$_GET["hry_kat"].'&strana=',$strana,'">',($strana + 1),'</a> ';
}
if($pocet > $limit * (@$_GET["strana"] + 1)) {
echo '<a href="index.php?hry_kat='.$_GET["hry_kat"].'&strana=',(@$_GET["strana"] + 1),'"> >>></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 * |
#4 · Zasláno: 2. 5. 2010, 22:41:12
Jo děkuju moc zapoměl jsem u result změnit údaje. už to funguje ;-)
|
||
|
Časová prodleva: 15 let
|
|||
0