Autor | Zpráva | ||
---|---|---|---|
pechl Profil * |
#1 · Zasláno: 29. 3. 2007, 15:22:32
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 * |
#2 · Zasláno: 30. 3. 2007, 12:26:23
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 |
#3 · Zasláno: 30. 3. 2007, 12:55:58
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 * |
#4 · Zasláno: 30. 3. 2007, 16:14:42
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 |
#5 · Zasláno: 30. 3. 2007, 19:39:11
SELECT SQL_CALC_FOUND_ROWS * FROM clanky ORDER BY datum DESC LIMIT " . intval($_GET["offset"]) . ", ".$limit."
|
||
pechl Profil * |
#6 · Zasláno: 30. 3. 2007, 23:54:16
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 |
#7 · Zasláno: 31. 3. 2007, 00:03:34
A když si ten SQL dotaz jednoduše vypíšeš na stránku, tak je jeho obsah v pořádku?
|
||
krteczek Profil |
#8 · Zasláno: 31. 3. 2007, 01:41:24
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 * |
#9 · Zasláno: 31. 3. 2007, 08:46:07
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 * |
#10 · Zasláno: 31. 3. 2007, 08:47:41
Omlouvám se - Je to na http://chytraktim.com/casopis_x.php[/i]
|
||
pechl Profil * |
#11 · Zasláno: 31. 3. 2007, 08:49:17
Ukázka - taky bych se mohl podívat, jak na linky.
|
||
one_k Profil |
#12 · Zasláno: 31. 3. 2007, 11:18:04
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 |
#13 · Zasláno: 31. 3. 2007, 11:18:39
jakou mas verzi mysql?
|
||
pechl Profil * |
#14 · Zasláno: 31. 3. 2007, 11:39:19
Používám MySQL 4.1.21 na FORPSI.com
|
||
djlj Profil |
#15 · Zasláno: 31. 3. 2007, 12:00:14
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 * |
#16 · Zasláno: 31. 3. 2007, 12:24:11
Tak jsem to zkusil v phpMyAdminu přímo v DB a vypisuje to všechno stejně jako na webu.
|
||
one_k Profil |
#17 · Zasláno: 31. 3. 2007, 12:51:16
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 * |
#18 · Zasláno: 31. 3. 2007, 13:42:47
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í. |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0