Autor Zpráva
tomino
Profil
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
Nejak jsem nepochopil jestli to cislo ma jednoznacne identifikovat zaznam v databazi, nebo jen ve vysledne sade kterou dostanete do PHP, Leo
Kajman_
Profil *
Jednodušší je to číslovat v aplikační vrstvě...

$i=0;
while ($zaznam = mysql_fetch_assoc($dotaz_vysledek))
{
echo $i++ . '.' . ...
}
tomino
Profil
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 *
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 *
Nebo si tam dejte sloupeček s id, jestli Vám to bude stačit :-)
Leo
Profil
"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 *
Třeba žebříček se takto dělá.
tomino
Profil
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.
Anonymní
Profil *
nebo na urovni mysql:
set @a=0;
SELECT @a:=@a+1, ... FROM ...;
24k
Profil *
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

"
);
Toto téma je uzamčeno. Odpověď nelze zaslat.

0