Eredmény: 1 - 8 (8) összesen

Téma: Toplista készítés mysql+php

  1. #1
    Mentor lauda logója
    Csatlakozott
    09-02-23
    Hely
    Salgótarján
    Hozzászólás
    472
    Begyűjtött 3 köszönetet
    2 hozzászólásával

    Alapbeállítás 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


    Utoljára módosítva: lauda által : 2013-05-29 12:32

  2. #2
    'Say Hello To My Little Friend'
    Csatlakozott
    10-04-13
    Hely
    Budapest
    Hozzászólás
    2.788
    Begyűjtött 867 köszönetet
    663 hozzászólásával

    Alapbeállítás 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.



  3. #3
    Mentor lauda logója
    Csatlakozott
    09-02-23
    Hely
    Salgótarján
    Hozzászólás
    472
    Begyűjtött 3 köszönetet
    2 hozzászólásával

    Alapbeállítás 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



  4. #4
    'Say Hello To My Little Friend'
    Csatlakozott
    10-04-13
    Hely
    Budapest
    Hozzászólás
    2.788
    Begyűjtött 867 köszönetet
    663 hozzászólásával

    Alapbeállítás 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.



  5. Az alábbi felhasználók hálásak a válaszért:

    lauda (2013-05-29)

  6. #5
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.562
    Begyűjtött 1.213 köszönetet
    754 hozzászólásával

    Alapbeállítás 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



  7. The Following 2 Users Say Thank You to Geri For This Useful Post:

    Emphus (2013-05-29), lauda (2013-05-29)

  8. #6
    'Say Hello To My Little Friend'
    Csatlakozott
    10-04-13
    Hely
    Budapest
    Hozzászólás
    2.788
    Begyűjtött 867 köszönetet
    663 hozzászólásával

    Alapbeállítás re: Toplista készítés mysql+php

    Idézet Geri eredeti hozzászólása Hozzászólás megtekintése
    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.



  9. Az alábbi felhasználók hálásak a válaszért:

    Geri (2013-05-29)

  10. #7
    Mentor lauda logója
    Csatlakozott
    09-02-23
    Hely
    Salgótarján
    Hozzászólás
    472
    Begyűjtött 3 köszönetet
    2 hozzászólásával

    Alapbeállítás re: Toplista készítés mysql+php

    Működik minden megoldás amit írtatok, köszönöm! 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.



  11. #8
    Mentor lauda logója
    Csatlakozott
    09-02-23
    Hely
    Salgótarján
    Hozzászólás
    472
    Begyűjtött 3 köszönetet
    2 hozzászólásával

    Alapbeállítás re: Toplista készítés mysql+php

    Idézet Emphus eredeti hozzászólása Hozzászólás megtekintése

    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



Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •