Autor Zpráva
pechl
Profil *
Mám prosbu - ve skriptu pro stránkování se mi neobjevuje příslušný počet článků, ale pořád všechny. Kde mám chybu?
Děkuji, Petr.

<?php

require_once('připojení do DB');
do
{
// Připojení k databázi.
if (!OtevriDB()) break;

// počet článků na stránce
$limit=5;

// předávání čísla stránky
$result = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM clanky ORDER BY datum DESC LIMIT $limit OFFSET " . intval($_GET["offset"]));
$pocet = mysql_result(mysql_query(" SELECT FOUND_ROWS()"), 0);

if ($_GET["offset"]) {
echo "<a href='$_SERVER[PHP_SELF]" . ($_GET["offset"] != $limit ? "?offset=" . ($_GET["offset"] - $limit) : "") . "'>zpět</a> ";
}
if ($pocet > $_GET["offset"] + $limit) {
echo "<a href='$_SERVER[PHP_SELF]?offset=" . ($_GET["offset"] + $limit) . "'>vpřed</a> ";
}

mysql_close();
} while (false);
?>
pechl
Profil *
Zapomněl jsem napsat, že údajně je celý problém ve správném nastavení proměnné $limit. Skript běhá tak, že Zpět a Vpřed sleduje počet článků ve své adrese, ale nereaguje na to výpis z databáze.
Poradí mi někdo?
Díky, Petr.
one_k
Profil
Nechapu.. Jak prislusny pocet clanku?
SQL_CALC_FOUND_ROWS ti vrati vzdy celkovy pocet clanku bez ohledu na LIMIT

Nevim v cem presne je tvuj problem(zkus ho popsat nejak jednoduseji - pro nas kterym to pomaleji pali..)

Tusim ze mas na mysli ze se ti vypisujou porad stejne clanky bez ohledu na to na jake strance jsi - tusim spravne?
pechl
Profil *
Díky za reakci.

Já potřebuji, aby se na stránce objevilo jenom určité množství článků - klasické stránkování. Proto tam je ten $limit = 5;
Mně se vypisují stále všechny články.
Skript do databáze vidí, protože odkazy Vpřed a Zpět reagují tak, že když listování dojde na poslední stránku, je tam jenom Zpět. Na stránce jsou ale stále všechny články.
Když to shrnu - skript ví, kolik je článků, ale neumí jich načít pouze počet daný $limitem.
Mně se skript líbil pro svoji jednoduchost, ale nevím, jestli bude fungovat.
djlj
Profil
SELECT SQL_CALC_FOUND_ROWS * FROM clanky ORDER BY datum DESC LIMIT " . intval($_GET["offset"]) . ", ".$limit."
pechl
Profil *
Díky za radu, ale stále to nefunguje. Běhá to stejně, načítá stejné hodnoty, ale proměnná $limit = 5; vůbec nereaguje na výběr z databáze.
djlj
Profil
A když si ten SQL dotaz jednoduše vypíšeš na stránku, tak je jeho obsah v pořádku?
krteczek
Profil
pechl:limit má dva parametry, první je odkud a druhý je kolik
...LIMIT 185, 15 => vypiš záznamy od 185 položky v pořadí a maximálně 15 položek
pechl
Profil *
A když si ten SQL dotaz jednoduše vypíšeš na stránku, tak je jeho obsah v pořádku?

Moc nechápu, co myslíš? Je to na http://chytraktim.com/casopis_x.php.
pechl
Profil *
Omlouvám se - Je to na http://chytraktim.com/casopis_x.php[/i]
pechl
Profil *
Ukázka - taky bych se mohl podívat, jak na linky.
one_k
Profil
krteczek
To on ale ma dobre - Misto LIMIT 185, 15 lze zapsat LIMIT 15 OFFSET 185

pechl
nech si vypsat ten SQL dotaz a pak ho spust z konzole

$query = "SELECT SQL_CALC_FOUND_ROWS * FROM clanky ORDER BY datum DESC LIMIT $limit OFFSET " . intval($_GET["offset"]);
echo $query;
$result = mysql_query($query);

pokud by i v konzoli(bo PHPMyAdminu) vypisovalo vsechny, zkusil bych dotaz
SELECT * FROM clanky ORDER BY datum DESC LIMIT $limit OFFSET " . intval($_GET["offset"])

jestli to veme ten limit dobre a pokud jo tak alespon vime ze chyba bude v SQL_CALC_FOUND_ROWS.
Je mozne ze se muze jednat o bug MySQL. Dej sem kdyztak pro jistotu jeste kod kde ty vysledky vypisujes.
one_k
Profil
jakou mas verzi mysql?
pechl
Profil *
Používám MySQL 4.1.21 na FORPSI.com
djlj
Profil
pechl
Co ti teda vypisuje
$query = "SELECT SQL_CALC_FOUND_ROWS * FROM clanky ORDER BY datum DESC LIMIT $limit OFFSET " . intval($_GET["offset"]);
echo $query;
?
A co ti to vybere za data z PMA?
pechl
Profil *
Tak jsem to zkusil v phpMyAdminu přímo v DB a vypisuje to všechno stejně jako na webu.
one_k
Profil
pechl
prosimte . Je sobota, chapu ze vetsina z nas mela narocnej vecer(ja tez), ale rozhodl jsem se ti s problemem pomoci, navrhnul jsem nejaky mozny zpusob reseni, tak by bylo dobre kdyby jsi se snazil, take.

Zkus vse vic rozepisovat.

Tak jsem to zkusil v phpMyAdminu přímo v DB a vypisuje to všechno stejně jako na webu.
z tohodle se dozvim pekne hov.. - co vse si zkousel vypsat?

zkousel jsi i dotaz bez SQL_CALC_FOUND_ROWS? Vypisoval stale vsechny clanky?
pechl
Profil *
Tak díky, tohle asi nevyřeším. Já doufal, že to bude nějaký malý problém, nechtěl jsem to takto natahovat. Našel jsem mezitím jiný skript ke stažení na linuxsoft.cz, je sice delší, ale rozchodil jsem ho.
Děkuji ti ale za ochotu, teď bych byl brzdou. Podle autota skriptu by měl být problém v nastavení $limit, což se ukazuje, že není.
Toto téma je uzamčeno. Odpověď nelze zaslat.