číslování záznamů po vysypání dat z databáze
8 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
ahoj, potřeboval bych poradit s číslováním záznamů. Data mám v databázi a při výpisu je třeba je vzestupně číslovat. Je to vpodstatě jako v katalogu knihoven. Na nějaký dotaz vám aplikace vysype záznamy, které jsou od jedničky číslované. Data vypisuji konstrukcí: while ($zaznam = mysql_fetch_assoc($dotaz_vysledek)) { echo ... } zkou?el jsem najít, zda neexistuje nějaká funkce v mysql, která by vrátila řádky u? očíslované, ale na?el jsem to pouze u sloupců. Něco mi říká, ?e ře?ení problémů tkví ve vytáhnutí indexů z pole $zaznam, ale nevím jak. Důle?ité je mít číslování se záznamem pevně spjato (v případě listování zpět musí čísla řádku opět klesat) předem díky za odpověď.
-
Nechápu přesně co chceš. Jestli chceš číslovat záznamy jen tak, tak si do toho cyklu dej počítadlo. Jestli chceš mít číslovaná data v databázi svázaná s řádky, tak tam přidej sloupec ID a dej mu vlastnost auto_increment.
-
předpokládejme tuto situaci: v tabulce knihy jsou zaznamy očíslované - auto increment má sloupec Id. uživatel v aplikaci chce vyhledat všechny knížky, které napsal William Shakespere. Dotaz se provede a vyhodí 4 záznamy. Romeo a Julie má Id = 4, Hamlet má id=8, Richard III. má id=79 a Othello má id=14. Je vidět, že tato Id mi nepomohou, protože se vážou k tabulce knihy. Uživateli by tyto hodnoty nic neřekly. Dobré je ale je očíslovat, tak že (vzestupně) Hamlet bude mít číslo řádku 1, Othello = 2, Richard III. = 3 a Romeo a Julie = 4. Jako řešení se nabízí cyklus. Pokud ten použiju, tak mi nebude nic platný pokud mám v aplikaci stránkování, protože se stránka načte znovu a předchozí hodnoty se ztratí. Možné řešení o kterém jsem přemýšlel, je předat poslední hodnotu (poslední číslovaný řádek) v parametru URL. ale jak zajistím, že mi hodnota číslování bude klesat při stránkování dozadu. nevíte, jestli existuje funkce v mysql, která přiřadí Id každému řádku při výstupu?
-
"Jako řešení se nabízí cyklus. Pokud ten použiju, tak mi nebude nic platný pokud mám v aplikaci stránkování," Jak to? Když použiješ stránkování, tak víš na které jsi stránce a víš po kolika stránkuješ (normálně se číslo stránky posílá přes $_GET). Je pak snadné vypočítat pořadí první knihy na libovolné stránce. A pak v cyklu zvyšuješ o jedničku.
-
jo, díky :-) máš pravdu, já vlastně vím po kolika čísluju, takže tu hodnotu vždycky o tento limit můžu zvednout. ale jak to vyřešit při stránkování zpět? co dát do podmínky? jedině mu při kliknutí na "zpět" předat že ted se pujde dozadu, tj. vždycky spolu s posledním číslem předat i tuhle informaci. promyslím to. díky za tip
-
prece kdyz mas strankovani vpred, tak mas automaticky strankovani zpet - staci cisla odecitat, ne?
-
Tak ještě jednou. Znáš dvě čísla: - po kolika knihách stránkuješ (= počet knih na jedné stránce výpisu) - na které jsi stránce (= číslo aktuální stránky výpisu) No a z tohoto JEDNODUŠE spočítáš pořadí prvního záznamu na konkrétní stránce. Tady máš vzorec: $prvni_zaznam_na_strance = ($pocet_zaznamu_na_strance * ($stranka - 1) + 1);
-
Jasně, díky :-) Jinak řešení také existuje na straně mysql - ale je komplikovanější, našel jsem o tom článek: http://www.linuxsoft.cz/article.php?id_article=886 myslím si, že je však zbytečné takto přelévat data do dočasné tabulky (zvlášť když jich je fakt hodně). tak ještě jednou díky*