Autor | Zpráva | ||
---|---|---|---|
tomino Profil |
#1 · Zasláno: 16. 3. 2006, 12:26:14 · Upravil/a: tomino
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ěď. |
||
Leo Profil |
#2 · Zasláno: 16. 3. 2006, 12:41:39
Nejak jsem nepochopil jestli to cislo ma jednoznacne identifikovat zaznam v databazi, nebo jen ve vysledne sade kterou dostanete do PHP, Leo
|
||
Kajman_ Profil * |
#3 · Zasláno: 16. 3. 2006, 13:37:16
Jednodušší je to číslovat v aplikační vrstvě...
$i=0; while ($zaznam = mysql_fetch_assoc($dotaz_vysledek)) { echo $i++ . '.' . ... } |
||
tomino Profil |
#4 · Zasláno: 16. 3. 2006, 15:33:32
ano, má to číslovat ve výsledné sadě. výše zmíněný postup jsem zkusil a fungoval do té doby, než jsem zabudoval do aplikace stránkování, protože v takovém případě se stránka pokaždé načte znovu a číslování začne od začátku. také jsem zkoušel předávat hodnotu v URL, to šlo dobře do té doby, než jsem chtěl listovat nazpět - číslování nazpět se nesnižovalo, naopak se zvyšovalo.
vůbec nevím jak to zapodmínkovat, proto jsem myslel,jestli neexistuje nějaké jednodušší řešení - třeba funkce která už v mysql vyhodí id záznamu při výstupu |
||
Kajman_ Profil * |
#5 · Zasláno: 16. 3. 2006, 19:31:13
Pokud stránkujete, tak víte, kolik toho přeskakujete a dáte tam $i=pocet_preskocenych.
Pokud potřebujete pozpátku, tak si tam dáte výsledek count(*) z podobného dotazu a od toho pak odečítáte přeskočení a pak jednotlivé řádky. No nebo to udělejte na oraclu, tam takové číslování je možné :-) V mysql by to šlo také, ale je to nesmyslně náročné při delších tabulkách (myslím, že se řešení v místní diskusi už diskutovalo). |
||
Kajman_ Profil * |
#6 · Zasláno: 16. 3. 2006, 19:34:34
Nebo si tam dejte sloupeček s id, jestli Vám to bude stačit :-)
|
||
Leo Profil |
#7 · Zasláno: 16. 3. 2006, 21:25:44
"vůbec nevím jak to zapodmínkovat, proto jsem myslel,jestli neexistuje nějaké jednodušší řešení - třeba funkce která už v mysql vyhodí id záznamu při výstupu"
Ted kdyz jste do to nacpal strankovani uz vubec netusim, co a jak vlastne chcete cislovat.... Leo |
||
Kajman_ Profil * |
#8 · Zasláno: 16. 3. 2006, 22:04:21
Třeba žebříček se takto dělá.
|
||
tomino Profil |
#9 · Zasláno: 17. 3. 2006, 11:04:00
díky za odpovědi, včera jsem to zkusil vyřešit dočasnou tabulkou (create temporary table) a takhle vždycky přelévat data, v mysql to šlo, v php však byly nějaké problémy. ale nezdá se mi ideální takhle přelévat data do dočasné tabulky, takže to vyřeším v php, díky za rady.
|
||
Časová prodleva: 7 měsíců
|
|||
Anonymní Profil * |
#10 · Zasláno: 29. 9. 2006, 12:20:26
nebo na urovni mysql:
set @a=0; SELECT @a:=@a+1, ... FROM ...; |
||
24k Profil * |
#11 · Zasláno: 29. 9. 2006, 13:08:38
presne jak rika anonymni, nekde to tady vice nazorne ukazoval kajman na ocislovani fotbalove tabulky
/* Dosadime poradi tymu natvrdo, 31.7.2006 */ $counter=mq("SET @counter:=0"); $sql = ( "UPDATE tabulka_klanu_ladder SET poradi = @counter:=@counter +1 WHERE ( id_sezony = '1' ) AND ( id_souteze = '$_ver' ) ORDER BY tabulka_klanu_ladder.koeficient DESC, tabulka_klanu_ladder.pts DESC, (tabulka_klanu_ladder.gf- tabulka_klanu_ladder.ga) DESC, tabulka_klanu_ladder.pz DESC, tabulka_klanu_ladder.gf " ); |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0