[PHP/MySQL] 4 Kolomen sorteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • m33p
  • Registratie: September 2002
  • Laatst online: 05-09 15:26
Ik heb 4 poules met 4 verschillende teams.

Afbeeldingslocatie: http://www.3d-gamers.nl/poules.jpg

Zo wil ik dit ook in HTML hebben, en dit met PHP genereren. De namen van de teams worden uit de database gehaald. Het probleem is dat ik alleen Poule A goed voor elkaar krijg, maar ik maar niet kan bedenken hoe ik Poule B, C en D goed kan krijgen inclusief de teams. Ik heb nu het volgende stuk code:

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
<?PHP

$counter = 1;
$poule_counter = 0;


echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">\n";

for ($rows=0; $rows < 2; $rows++)
{
    // Rows
    echo "<tr> \n";
    echo "<td> Poule " . $poule_names[$poule_counter] . "</td> \n";

    $poule_counter++;

    // Columns
    for ($cols=0; $cols < 1; $cols++)
    {

        echo "<td> Poule " . $poule_names[$poule_counter] . "</td> \n";
    }

    $poule_counter++;

    echo "  </tr> \n";

    $poules_sql = "SELECT *
                   FROM poules";
    $poules_sql = mysql_query($poules_sql) or die(mysql_error());

    // Records
    while ($poule = mysql_fetch_array($poules_sql))
    {
        for ($records=1; $records < 5; $records++)
        {
            echo "  <td> record row " . $poule["clan" . $counter] . "</td>\n";
            echo "  <td> record row " . $poule["clan" . $counter] . "</td>\n";
            echo "</tr>\n";

            $counter++;
        }
    }
}   

echo "</table> \n";

?>


Het gaat dus vooral om regel 38, en hoe ik die 2 kolommen er onder kan opvullen. Het zal vast een simpel countertje zijn, mischien ook niet, maar ik kan het niet bedenken.

Alvast bedankt!

edit:
Code wat duidelijker

[ Voor 42% gewijzigd door m33p op 11-08-2004 16:47 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Leg eens uit waarom je het in PHP wil sorteren, in plaats van gewoon een order by clause op te nemen in je query? :?
Iets in de trant van ORDER BY poule, teamnaam dus.

'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.


Verwijderd

Wat is je tabelstructuur?

  • m33p
  • Registratie: September 2002
  • Laatst online: 05-09 15:26
Ik heb bijvoorbeeld 4 keer dit:

code:
1
pouleID poulename clan1 clan2 clan3 clan4


Nou is het de bedoeling dat dit in 2 x 2 kolommen komt te staan dus zoals het plaatje in me eerste post. In clan1, clan2, clan3, clan4 staat een clanID die verwijst naar een andere tabel waar de clans met hun clanID in staan.

@NMe84
Hoe bedoel je precies? Het sorteren is het probleem niet, maar het gaat er om dat het zeg maar, om-en-om moet, in verband met de (html) tabel structuur. Beetje moeilijk uit te leggen. Kijk ik kan gewoon 4 tabellen maken, of 4 query´s uitvoeren, maar het lijkt me dat het zo toch moet kunnen, want ik wil het ook een beetje makkelijk aan te passen maken door gewoon bijvoorbeeld ´t nummer in de for loop te verhogen en niet nog eens 20 regels HTML er in hoeven te gooien.

  • RwD
  • Registratie: Oktober 2000
  • Niet online

RwD

kloonikoon

Het hoeft niet per se om en om. Je kunt een tabel maken met 4 cellen 2X2.
In iedere cel zet je een nieuwe tabel met 1 kolom en zoveel rijen als je teams wilt. Nu kunnen de teams geordend uit je query komen...

Verwijderd

[goedeBui-ga-straks-op-vakantie]

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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php

// Verbinding maken met de DB
$db__server    = "";
$db__user      = "";
$db__password  = "";
$db__database  = "";
$db__verbinding = mysql_connect($db__server, $db__user, $db__password);
mysql_select_db($db__database);


// ophalen
$q = "SELECT pouleID, poulename, clan1, clan2, clan3, clan4 FROM poules ORDER BY poulename ASC";
$result = mysql_query($q);

// in array stoppen
$poules = array();
while($row = mysql_fetch_object($result))
{

    $poules[] = array
                                (
                                'pouleID' => $row->pouleID,
                                'poulename' => $row->poulename,
                                'clan1' => $row->clan1,
                                'clan2' => $row->clan2, 
                                'clan3' => $row->clan3, 
                                'clan4' => $row->clan4
                                );

}

?>

        <table width="40%" cellspacing="2" cellpadding="4" border="0">

<?php

// poules weergeven

for($cols=count($poules), $i=0; $cols>0; $cols-=2, $i+=2)
{

    // poule naam weergeven
    if($cols >= 2)
    {

?>

        <tr>
        <td><?= $poules[$i]['poulename'] ?></td>
        <td><?= $poules[($i+1)]['poulename'] ?></td>
        </tr>

<?php

    // clans weergeven
    for($a=1; $a<=4; $a++)
        {

?>
        
        <tr>
        <td><?= $poules[$i]['clan'.$a] ?></td>
        <td><?= $poules[($i+1)]['clan'.$a] ?></td>
        </tr>

<?php

        }

    } else
    // poule naam weergeven
    if($cols == 1)
    {

?>

        <tr>
        <td><?= $poules[$i]['poulename'] ?></td>
        <td><i>leeg</i></td>
        </tr>

<?php

    // clans weergeven
    for($a=1; $a<=4; $a++)
        {

?>
        
        <tr>
        <td><?= $poules[$i]['clan'.$a] ?></td>
        <td><i>leeg</i></td>
        </tr>

<?php

        }

    }

?>


<?php

}

?>

        </table>


[/goedeBui-ga-straks-op-vakantie]


Code kan velen malen beter gemaakt worden, maar das niet aan mij he... En overigens, zoals Ziekloon hieronder aangeeft, is je table-structuur verre van goed momenteel. Maar misschien heb je daar je redenen voor.

[ Voor 23% gewijzigd door Verwijderd op 12-08-2004 09:08 ]


  • ziekloon
  • Registratie: Mei 2000
  • Laatst online: 15-07 13:23
Waarom niet zo:

code:
1
PouleID, Poulename, ClanID


Ben je VEEL flexibeler en kun je alles doen wat je wil...

  • bRight
  • Registratie: Juli 2000
  • Laatst online: 27-11-2024

bRight

digitaal

Das wel flexibel, maar nog niet optimaal. Op deze manier krijg je dubbele informatie in je database. ff normaliseren dus:
code:
1
2
3
4
5
6
7
8
9
tabel poules:
+--------------+-----------+
| PouleID (pk) | Poulename |
+--------------+-----------+

tabel clans:
+-------------+--------------+----------+
| ClanID (pk) | PouleID (fk) | Clanname |
+-------------+--------------+----------+

En als clans onder meerdere poules kunnen vallen kun je nog verder normaliseren:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
tabel poules:
+--------------+-----------+
| PouleID (pk) | Poulename |
+--------------+-----------+

tabel clans:
+-------------+----------+
| ClanID (pk) | Clanname |
+-------------+----------+

koppeltabel clanspoules:
+-------------+--------------+
| ClanID (fk) | PouleID (fk) |
+-------------+--------------+
Pagina: 1