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*