Toplista készítés mysql+php
Toplistát szeretnék készíteni de egyelőre kifog rajtam. Totóra tippelnek a látogatók ami alapján toplista készül. A versenyek 8 totóból állnak (pl. 1/1.heti 1/2.heti 2/1.heti...) A tippjeik és eredményeik adatbázisban vannak, ami így néz ki: hxxp://kepfeltoltes.hu/view/130529/totodb_www.kepfeltoltes.hu_.jpg
Ezzel a lekérdezéssel megvan az hogy hányan neveztek összesen és a neveik egy tömbben:
Kód:
$sql = "SELECT DISTINCT nev from tototippek WHERE (heti='$kor1' OR heti='$kor2' OR heti='$kor3' OR heti='$kor4' OR heti='$kor5' OR heti='$kor6' OR heti='$kor7' OR heti='$kor8')" or die ("Nem találom az adattáblát");
A $kor1, $kor2 változókban vannak az ellenőrizni kívánt hetek, ami azért szükséges mert több verseny van/lesz 8 fordulónként.
Erről szeretnék egy toplistát, hogy ki az aki a 8 totón összesen a legtöbb találatot elérte a találat+pluszeggyel együtt. pl. kodicsek3 -nak ezeket kéne összeadni: 8+0 + 6+1 + ....
Az hiszem egy ügyes lekérdezéssel megoldható lenne viszonylag egyszerűen, de nem tudok rájönni csak egyre jobban bonyolítom a dolgokat :S
Segítséget szeretném kérni ennek a megoldásában.
Itt próbálkozom a dologgal: hccp://www.longsport.hu/toto/toto_tippverseny2.php
re: Toplista készítés mysql+php
Kód:
SELECT SUM(talalat) AS osszes_talalat, nev FROM tototippek
WHERE heti='$kor1' OR heti='$kor2' OR heti='$kor3' OR heti='$kor4' OR heti='$kor5' OR heti='$kor6' OR heti='$kor7' OR heti='$kor8'
ORDER BY osszes_talalat DESC
GROUP BY nev
$sql['osszes_talalat'] -ban az összes találat együtt, és $sql['nev']-ben a neve a játékosnak.
Ha a +1-et is bele akarod számolni: SUM(talalat) helyett SUM(talalat + pluszegy)
Nem próbáltam ki, ha nem jó, lehet panaszkodni. :)
re: Toplista készítés mysql+php
Köszi a gyors segítséget! Természetes, hogy a próbálgatás rám marad ;) A GROUP BY nem tetszik neki: "Hiba a kérésbenYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY nev' at line 1". Ha lehagyom a végéről akkor pedig fura eredményt kapok. Nekem az MySQL ilyen lekérdezései már magasak ezért elnézést ha értetlenkedek. MySQL kliens verzió: 5.1.37
re: Toplista készítés mysql+php
Ja igen. Mindig benézem. Group by és order by fordított sorrendben kell legyen:
Kód:
SELECT SUM(talalat) AS osszes_talalat, nev FROM tototippek
WHERE heti='$kor1' OR heti='$kor2' OR heti='$kor3' OR heti='$kor4' OR heti='$kor5' OR heti='$kor6' OR heti='$kor7' OR heti='$kor8'
GROUP BY nev
ORDER BY osszes_talalat DESC
De amúgy megnéztem az oldalt. Korábban lekéred hétről hétre és kilistázod. Igazából azt is simán megcsinálhatod, hogy amikor listázod egyesével a heteket, akkor mindig tárolod az újabb találatokat. Pl. $data[$tippelo_neve] += $jo_tippek_szama; (ezt minden hétnél, amikor listázod) utána meg berendezed érték alapján a tömböt csökkenő sorrendben, és készen is vagy, csak végig kell iterálni rajta.
re: Toplista készítés mysql+php
Apro eszrevetel:
Kód:
SELECT SUM(talalat) AS osszes_talalat, nev FROM tototippek
WHERE heti IN ('$kor1', '$kor2', '$kor3', '$kor4', '$kor5', '$kor6', '$kor7', '$kor8')
GROUP BY nev
ORDER BY osszes_talalat DESC
Es remelem a $kor valtozokat escapeled :)
re: Toplista készítés mysql+php
Idézet:
Geri eredeti hozzászólása
Es remelem a $kor valtozokat escapeled :)
Szerintem azt ő adja meg kézzel a kód egy korábbi részén, hogy mindig az aktuálisat listázza ki.
re: Toplista készítés mysql+php
Működik minden megoldás amit írtatok, köszönöm! :thumbup: Az SQL eredményben még annyi van hogy minden név többször szerepel benne, de az már nem gond mert van rá megoldásom. Azt hiszem utána kell néznem kicsit a tömbök rendezésének és kész is lesz ;) Ha még elakadok valamiben kérdezlek titeket.
re: Toplista készítés mysql+php
Idézet:
Emphus eredeti hozzászólása
De amúgy megnéztem az oldalt. Korábban lekéred hétről hétre és kilistázod. Igazából azt is simán megcsinálhatod, hogy amikor listázod egyesével a heteket, akkor mindig tárolod az újabb találatokat. Pl. $data[$tippelo_neve] += $jo_tippek_szama; (ezt minden hétnél, amikor listázod) utána meg berendezed érték alapján a tömböt csökkenő sorrendben, és készen is vagy, csak végig kell iterálni rajta.
Jelentem megcsináltuk együtt az idézett megoldást választottam. Azóta megy a totó toplista és a tippelők is kezdik használni ;) a leírt tömböt a php arsort($mindenki) paranccsal rendezem találatonként sorrendbe ("$mindenki[$tippelo_neve] += $jo_tippek_szama"). Van több parancs is más rendezésekre pl. sort($mindenki), rsort($mindenki)... nekem a legelső kellett. Totó tipp verseny