Det hele fungerer som det skal, dog kan jeg ikke gennemskue hvordan jeg får ændret lidt i sorteringen.
Som det fungerer nu, bliver listen sorteret efter hvem der har scoret flest mål. Det er også først prioritet, men jeg kunne godt tænke mig at kunne sortere efter navn i anden omgang, altså således at hvis der er tre spillere der alle har scoret samme antal mål, så bliver de listet i alfabetisk rækkefølge.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
usort() er en funktion der sorterer efter "brugerens ønske". det andet argument er hvilken funktion der bestemmer om et given element er lig med (returnerer 0), større (1) eller mindre (-1) end et andet element.
I din cmp funktion, skal vi jo så sammenligne mål først - dvs $a[1] vs $b[1] ($a er det ene element fra listen, $b er det andet. Nu skal vi bestemme hvilken elementer der skal først).
Hvis du ser i funktionen, så siger vi (pseudo-agtig): if( antal mål er ens i de to elementer ) { if( hvis navnet er ens ) så returner 0 (elementerne er ens) ellers returner hvilket elemnet er størt. } ellers returner det element som har flest mål.
Synes godt om
Slettet bruger
04. september 2004 - 14:43#7
Hmmm... kan ikke lige gennemskue hvordan det skal flettes ind i koden.
Sorteringen ser ud til at virke, men jeg skal jo have summeret data'ene først.
Det kan jeg heller ikke få flettet ind i dit eksempel.
Jeg har en tabel, hvori der registreres målscorer for hver kamp.
Dvs. at jeg godt kan have eks. 7 registreringer for en enkelt spiller, hvis vedkommende har scoret i 7 kampe.
Jeg har brug for at hente alle poster i min mål-tabel, og summere antal mål for hver spiller, så jeg ender ud med en liste der indeholder alle de mål hver enkelt spiller har scoret.
Dvs. at disse rækker:
karsten 1 andreas 1 karsten 2 tobias 1 andreas 1 tobias 3 karsten 1 andreas 2 tobias 1
gerne skal summeres ned til:
karsten 4 andreas 4 tobias 5
og så herefter sorteres efter mål, og herefter efter navn:
Du kan faktisk lade MySQL gøre hele arbejdet for dig.
Prøv at rette din SQL til:
$sql = "SELECT navn, sum(antal) as antal FROM b91_maal, b91_medlemmer WHERE b91_maal.spillernr = b91_medlemmer.spillernr GROUP BY navn ORDER BY 2,1";
Så får du faktisk de informationer ud som du ønsker (ved ikke hvorfor jeg ikke tænkte på det før.. :) ) .. Så du bare kan vise dem direkte, uden at skulle bruge arsort,usort eller lign
$sql = "SELECT navn, sum(antal) as antal FROM b91_maal, b91_medlemmer WHERE b91_maal.spillernr = b91_medlemmer.spillernr GROUP BY navn ORDER BY 2 DESC,1";
Et lille spørgsmål: Hvis jeg så har en tabel hvor det f.eks. er antal kampe spillet.
Her har jeg registreret spillernr og kampnr. Disse kan ikke summeres, men SQL har garanteret en eller anden funktion ala sum(), hvor den bare tæller antallet af rækker?
Ved godt jeg kan bruge count() men så skal jeg jo lave en forespørgsel mere der henter de oplysninger jeg skal bruge.
Min sql-forespørgsel ser således ud:
$sql = ("SELECT * FROM b91_kampe, b91_medlemmer WHERE b91_kampe.spillernr = b91_medlemmer.spillernr");
En idé til hvordan den kan kringles? (der følger selvfølgelig flere point med).
Du retter lidt i sql'en: SELECT b91_medlemmer.navn, count( 1 ) as antal
"as antal" er tilføjet - nu har du et navn du kan bruge i din $row_kampe (nemlig $row_kampe['antal'];).
Synes godt om
Slettet bruger
05. september 2004 - 14:07#20
Jeg får ikke noget resultat på.
Min kode er her: aabn_sql_og_vaelg_db();
$sql = ("SELECT b91_medlemmer.navn, count(1) as antal FROM b91_kampe, b91_medlemmer WHERE b91_kampe.spillernr = b91_medlemmer.spillernr GROUP BY b91_medlemmer.navn ORDER BY 2 DESC,1 ASC");
$query_kampe = mysql_query($sql) or die (mysql_error());
Ja, SQL er smart - man gider ikke at bøvle med filer, når man har SQL :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.