[PHP] Hoe variabele te sorteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
Ik heb een script waarmee variabelen uit een database worden gehaald. Deze worden achter elkaar geplakt in een variabele. Nu moet ik het zo hebben dat deze c van hoogste cijfer naar laagste cijfer moet sorteren. aan elk cijfer is ook een naam verbonden.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
elseif ($_GET[id] == "kjbestespeler") {

    CenterPageTop('Klaverjassen','middle','left');

    echo '
        <table border="0" cellpadding="0" cellspacing="0">
            <tr>
            <td>';

    $result_spelers = query_speler(alles);
    if ($myrow1 = mysql_fetch_array($result_spelers)) {
        do {
            $kjspelerid = $myrow1["kj_speler_id"];
            $kjspelervoornaam = $myrow1["kj_speler_voornaam"];
            $kjspelerachternaam = $myrow1["kj_speler_achternaam"];

            $result_team = query_team(alles,$kjspelerid);
            if ($myrow2 = mysql_fetch_array($result_team)) {

                $i = 0;
                $kjspelpuntentotaal = 0;
                $kjspelpuntengemiddeld = 0;

                do {
                    $kjteamid = $myrow2["kj_team_id"];

                    $result_spel = query_spel(alles,$kjteamid);
                    if ($myrow3 = mysql_fetch_array($result_spel)) {
                        do {
                            $kjspelteamid1 = $myrow3["kj_spel_team_id_1"];
                            $kjspelteamid2 = $myrow3["kj_spel_team_id_2"];
                            $kjspelteam1punten = $myrow3["kj_spel_team_1_punten"];
                            $kjspelteam2punten = $myrow3["kj_spel_team_2_punten"];

                            if ($kjspelteamid1 == $kjteamid) {
                                $kjspelpunten = $kjspelteam1punten;
                            }
                            elseif ($kjspelteamid2 == $kjteamid) {
                                $kjspelpunten = $kjspelteam2punten;
                            }

                            $kjspelpuntentotaal = $kjspelpuntentotaal + $kjspelpunten;

                            $i++;

                        }
                        while ($myrow3 = mysql_fetch_array($result_spel));
                    }
                }
                while ($myrow2 = mysql_fetch_array($result_team));

                if ($kjspelpuntentotaal > 0) {
                    $kjspelpuntengemiddeld = round($kjspelpuntentotaal / $i);
                }
                else {
                    $kjspelpuntengemiddeld = 0;
                }

                $kjspelergemiddeld = $kjspelpuntengemiddeld;
                $kjspelernaam = ($kjspelervoornaam . ' ' . $kjspelerachternaam);
            }
            if (!isset ($kjspelergemiddeldtotaal)) {
                $kjspelergemiddeldtotaal = $kjspelergemiddeld;
            }
            else {
                $kjspelergemiddeldtotaal = ($kjspelergemiddeldtotaal . ',' . $kjspelergemiddeld);
            }   
        }
        while ($myrow1 = mysql_fetch_array($result_spelers));
    }

    echo $kjspelergemiddeldtotaal;
    echo '
            </td>
            </tr>
        </table>';

}


de variabele $kjspelergemiddeldtotaal heeft alle gemiddelde scores. nou heb ik het al geprobeerd met een array:
PHP:
1
2
3
4
5
6
7
8
                if ($kjspelergemiddeldarray == "") {
                    $kjspelergemiddeldarray = array($kjspelergemiddeld);
                    $kjspelernaamarray = array($kjspelernaam);
                }
                else {
                    $kjspelergemiddeldarray = array_push($kjspelergemiddeldarray,"$kjspelergemiddeld");
                    $kjspelernaamarray = array_push($kjspelernaamarray,"$kjspelernaam");
                }

maar hierbij krijg ik de waarschuwing dat bij array_push de eerste variabele geen array is.

wie kan mij verder helpen? ik heb internet al geprobeerd maar daar kom ik niet verder dan enkele simpele how to's die mij hijrbij niet verder helpen.

[ Voor 14% gewijzigd door EnsconcE op 17-07-2004 14:10 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Waarom sorteer je het niet gewoon al in je query :?

Acties:
  • 0 Henk 'm!

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
omdat mijn kennis van queries niet groot is, maar ik zal internet es doorspitten

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
code:
1
mysql_query("SELECT * FROM tabelnaam WHERE _voorwaarden_ ORDER BY kolomnaam ASC")

• SELECT wil zeggen dat je data ophaalt..
• Ipv het sterretje kun je de kolomnamen gescheiden door komma's gebruiken.
code:
1
mysql_query("SELECT kolom1,kolom2 FROM ...");

• Na de WHERE kun je een aantal voorwaarden kwijt waaraan een rij moet voldoen om geselecteerd te worden. Bijv
code:
1
mysql_query("... WHERE score > 10 ...");

• Middels ORDER BY kolomnaam kun je de rijen sorteren. ASC (ascending) erachter voor oplopend, en DESC (descending) voor aflopend.

Dit was even heel basic... In de Mysqldocumentatie staat e.e.a erg uitgebreid. :)

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
ja voor zover snap ik het. ik heb ook nog ooit eens left join enzo gedaan. maar ik weet niet hoe ik de gegevens uit de database met mysql kan optellen en delen door het aantal velden aan de hand van de speler_id.
de funties querie_*() verwijzen ook naar basic queries.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Create table kj_spelronde  (
    kj_spelronde_id Integer(0) NOT NULL AUTO_INCREMENT UNIQUE ,
    kj_spelronde_rondenummer Integer(0) NOT NULL ,
    kj_spelronde_punten Varchar(3) NOT NULL ,
    kj_spelronde_roem Varchar(10) ,
    kj_spelronde_team_id Integer(0) NOT NULL ,
    kj_spel_team_1_punten decimal(4,0) NOT NULL default '0',
    kj_spel_team_1_roem decimal(4,0) NOT NULL default '0',
    kj_spel_team_2_punten decimal(4,0) NOT NULL default '0',
    kj_spel_team_2_roem decimal(4,0) NOT NULL default '0',
    kj_spel_deler_1 decimal(10,0) NOT NULL default '0',
    kj_spel_deler_2 decimal(10,0) NOT NULL default '0',
    spel_id Integer(0) NOT NULL ,
 Primary Key (kj_spelronde_id)
);

Create table kj_speler  (
    kj_speler_id Integer(0) NOT NULL AUTO_INCREMENT UNIQUE ,
    kj_speler_voornaam Varchar(20) NOT NULL ,
    kj_speler_achternaam Varchar(20) ,
 Primary Key (kj_speler_id)
);

Create table kj_team  (
    kj_team_id Integer(0) NOT NULL AUTO_INCREMENT UNIQUE ,
    kj_speler_id_1 Varchar(20) NOT NULL ,
    kj_speler_id_2 Varchar(20) NOT NULL ,
 Primary Key (kj_team_id)
);

Create table kj_spel  (
    kj_spel_id Integer(0) NOT NULL AUTO_INCREMENT UNIQUE ,
    kj_spel_datum Varchar(16) NOT NULL ,
    kj_spel_dagnummer Decimal(10,0) NOT NULL ,
    kj_spel_team_id_1 Integer(0) NOT NULL ,
    kj_spel_team_id_2 Integer(0) NOT NULL ,
 Primary Key (kj_spel_id)
);


dit is mn database en hieruit moet ik de gemiddeld hoogste score hebben. dat heb ik allemaal met php al voor elkaar alleen nu nog zo dat het in de juiste volgorde is. met mysql schiet het op dit moment ook niet op aangezien ik niet veel wijzer word uit de tutorials op inet.

[ Voor 76% gewijzigd door EnsconcE op 17-07-2004 14:28 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

EnsconcE schreef op 17 juli 2004 @ 14:25:
dit is mn database en hieruit moet ik de gemiddeld hoogste score hebben. dat heb ik allemaal met php al voor elkaar alleen nu nog zo dat het in de juiste volgorde is. met mysql schiet het op dit moment ook niet op aangezien ik niet veel wijzer word uit de tutorials op inet.
Die volgorde doe je doe, zoals T-MOB al zei, door simpelweg "ORDER BY veldnaam" achter je query te zetten (zonder die quotes natuurlijk). Gewoon invullen waar je op wil sorteren en je bent klaar...

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1