Draaitabel /pivot

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior Developer Low-code

Dit ga je doen Low-code ontwikkeling van software voor landelijk bekende organisaties; Samenwerken in een team van 10 collega's; Opleveren van mooie eindproducten, middels de Agile methodiek; Direct contact met de eindklant over de gewenste oplossingen. Hier ga je werken Als startende IT-professional kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet discreet en veilig verwerkt worden. De processen die hierbij horen worden door het IT team vormgegeven.

Bekijk vacature »

Java Ontwikkelaar

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

C#.NET Developer

Functieomschrijving Voor een software ontwikkelaar in de omgeving van Vught zijn we op zoek naar een gemotiveerde C# ontwikkelaar. Deel jij hun passie voor development en dan vooral in C#.NET? Dan kan dit wel eens jouw droombaan zijn! Jouw werkzaamheden zullen er ongeveer als volgt uit gaan zien Door de wensen van de klant goed te begrijpen ga jij aan de slag dit om te zetten naar passende oplossingen en werk je deze uit tot een sterk eindproduct. Je gaat je bezighouden met de ontwikkeling van webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Frameworks en C#.

Bekijk vacature »

TypeScript developer (tot € 6.000, - bruto pe

Functie Om bovenstaande ambities waar te kunnen maken zijn ze op zoek naar een ervaren Typecript developer die niet alleen zichzelf verder ontwikkelt, maar het ook leuk vinden om op termijn meer junior collega’s op pad te helpen. Je zult aan de slag gaan met het migreren van hun bestaande UI in Angular. Maar ook het ontwikkelen van een mobiele app. Hierbij hechten ze veel waarde aan User Experience en kiezen ze duidelijk voor kwaliteit i.p.v. snelheid. Je krijgt dus de ruimte om vanuit gedegen onderzoek te werk te gaan en het borgen van kwaliteit staat hoog in het vaandel.

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Functioneel Applicatiebeheerder

Wij van CNB zijn op zoek naar een leergierige Functioneel Applicatiebeheerder CNB is de grootste dienstverlener in de markt van bloembollen en vaste planten. In deze markt verricht CNB de volgende diensten: bemiddeling, veilen en het koelen en prepareren van bloembollen. Vanuit ons hoofdkantoor in Lisse werken bijna 100 collega’s dag in dag uit aan de bemiddeling van bloembollen. In Bovenkarspel vindt het koelen en prepareren van de bloembollen plaats. Wij zijn op zoek naar een enthousiaste Functioneel Applicatiebeheerder die naast een applicatie, ook sfeer kan bouwen! Jij: Vindt het leuk om binnen een klein IT-team aan de slag te

Bekijk vacature »

Senior java ontwikkelaar integratie

Functieomschrijving Voor de gemeente Rotterdam zijn wij op zoek naar een senior java ontwikkelaar integratie. Taken Binnen een zelfsturend Scrumteam voer je geheel zelfstanding je opdrachten uit en levert het eindresultaat op aan het Integratieteam. Jij voelt je net als alle teamleden verantwoordelijk voor alle aspecten, vanaf de vraag tot en met de oplevering in productie. Je bent kritisch, je helpt de klant om zijn wensen helder te krijgen, je schrijft zelfstandig clean code die van hoge kwaliteit is, met bijbehorende unit- en integratietesten, je ondersteunt zo nodig bij deployments naar productie. Het Integratieteam bouwt componenten (Endpoints) op de ESB.

Bekijk vacature »

Front-end developer (Angular)

Functie Het team bestaat uit een architect, fullstack developers, app developers, de product owner en projectmanager. Eenieder draagt vanuit zijn discipline bij aan een complete oplossing voor de klant. Uiteraard zul je hierin nauw samenwerken met je collega’s. Jij wordt verantwoordelijk voor de front-end implementatie en fungeert als lead op dit gebied binnen het team. Je kunt helder formuleren, ideeën uitdragen en overbrengen aan je collega’s. Qua technische stack is het vooral van belang dat je ervaren bent met Angular, HTML5, CSS en TypeScript. Verder is ervaring in NgRx, Bootstrap, BEM en Cypress een pré, evenals affiniteit met UX/UI Design!

Bekijk vacature »

Back-End Web Developer

Als Back-End Web Developer bij Coolblue zorg je ervoor dat onze webshops elke dag een beetje beter zijn. Wat doe je als Back-End Web Developer bij Coolblue? Als Back-End Web Developer werk je met andere development teams samen om onze webshop zo optimaal mogelijk te laten werken en onze klanten blij te maken. Als backend developer weet je de weg in PHP, kan je in Typescript een microservice op zetten of ben je bereid om dit te leren. Ook Web Backend Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen PHP

Bekijk vacature »

Senior Product Developer

Functieomschrijving Als senior Product Developer ben je verantwoordelijk voor bestaande mobiliteitsproducten en de ontwikkeling van nieuwe mobiliteitsconcepten. Met behulp van diverse klantonderzoeken, klantsessies en salesmeetings zorg je ervoor dat je de veranderende mobiliteitsbehoeften in de markt kent. Hier speel je op in door innovatieve, flexibele, efficiënte en duurzame vervoersoplossingen te bedenken, te ontwikkelen, te implementeren en uiteindelijk samen met Sales en Marketing collega’s in de markt te zetten. Je initieert en neemt deel aan (internationale en afdeling overschrijdende) projecten, vaak in de rol van projectleider. In die rol bewaak je de voortgang, coördineer je de activiteiten en zorg je voor

Bekijk vacature »

Medior Mobile Developer iOS Amsterdam

Functie What will you be doing as Mobile Developer? As an iOS app developer you will work in a multidisciplinary team of app developers, web developers and designers. You will work on world-class apps that will be used by thousands of people. There is a lot of room for self-development on a technical and personal level. Together with the rest of the team you develop in the newest techniques and you go for the best quality. We work with Kotlin Multiplatform Mobile to develop hybrid apps and we guarantee quality with peer reviews, unit testing and we use a CI/CD.

Bekijk vacature »

Ervaren PHP developer gezocht!

Functie Het team bestaat inmiddels uit zo’n 25 collega’s met specialisten op het gebied van development, data(analyse), marketing, infrastructuur en finance. Ze hebben een supermodern pand en bieden hiernaast veel vrijheid en verantwoordelijkheid. Ze doen er alles aan om jou op te gemak te stellen. Zo kun je je eigen werkplek inrichten naar persoonlijke wensen, maar gaan ze bijvoorbeeld ook jaarlijks met elkaar wintersporten en zijn er andere leuke uitjes. Als onderdeel van één van de scrumteams ga je aan de slag, samen ben je medeverantwoordelijk voor het doorontwikkelen van hun business applicatie waar het traffic team dagelijks mee werkt.

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »

C# .NET Developer

Dit ga je doen Ontwikkelen van de Back-end in .NET6 / C# en WebAPI (Focus);) Ontwikkelen van de Front-End in Nodje.js en Angular (secundair); Ontwikkelen in Blazor; Opstellen van een technisch ontwerp; Testen, documenteren en implementeren van de nieuwe applicatie; Verzorgen van de nazorg, na de implementatie. Hier ga je werken Binnen deze organisatie werken duizenden mensen binnen allerlei verschillende disciplines. Tevens hebben zij veel specialiteiten in huis, waaronder ook .Net Developers. Ter uitbreiding van een nieuw team en ter ondersteuning van het project zijn ze opzoek naar een nieuwe collega voor het team. Als C#.NET Developer zal jij je

Bekijk vacature »

.NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Pagina: 1 2 volgende »

Mar kla

mar kla

14/03/2013 13:08:05
Quote Anchor link
je ziet overal in de voetbalbladen van die mooie draaitabellen, wie weet een script om van dit

datum | gespeeld |thuis |uit |score
zo 23-09-2012 12:30 Y 06 ADO AJA 1-1
za 10-11-2012 19:45 Y 12 ADO AZA 2-2
zo 05-05-2013 12:30 N 33 ADO FEY 0-0
zo 12-08-2012 16:30 Y 01 AJA AZA 2-2
zo 20-01-2013 14:30 Y 19 AJA FEY 3-0
zo 24-02-2013 14:30 Y 24 AJA ADO 1-1
zo 25-11-2012 14:30 Y 14 AZA FEY 0-2
za 09-03-2013 20:45 Y 26 AZA ADO 1-1
zo 17-03-2013 16:30 N 27 AZA AJA 0-0
zo 28-10-2012 12:30 Y 10 FEY AJA 2-2
zo 16-12-2012 14:30 Y 17 FEY ADO 3-2
zo 10-02-2013 14:30 Y 22 FEY AZA 3-1


een draaitabel /pivot tabel te maken zoals dit:

xxx|ado|aja|aza|fey|
___|___|___|___|___|_
ado| X |1-1|2-2| - |
___|___|___|___|___|_
aja|1-1| X |2-2|2-0|
___|___|___|___|___|_
aza|1-1| - | X |0-2|
___|___|___|___|___|_
fey|3-2|2-2|3-1| X |
___|___|___|___|___|_

Ik heb al lopen zoek maar kan het helaas geen gode oplossng vinden

Misschien moet ik iets met een array doen, waarmee ik per thuisteam een regel maak. Maar ik kom er dus niet uit :-(
Gewijzigd op 14/03/2013 13:09:08 door Mar kla
 
PHP hulp

PHP hulp

23/04/2024 08:30:38
 
Mar kla

mar kla

28/09/2014 21:00:53
Quote Anchor link
ik ben nog steeds op zoek naar een simple script waarbij ik uit een table eeb draaitabel o.i.d. kan maken

Wie kan me op weg helpen?
 
Php knipper

php knipper

28/09/2014 21:06:40
Quote Anchor link
het is zeker mogelijk om dit uit te lezen, met de tussenkomst van een array. Echter weet ik niet wat wat betekent. Kun je al je cellen eens verduidelijken?
 
Mar kla

mar kla

28/09/2014 21:19:11
Quote Anchor link
de table bestaat uit de volgen de velden:

cs_wedstrijden_id (oplopen nummer)
cs_wedstrijd_gespeeld (Y of N)
cs_season_id (verwijst naar een table met uitgebreide seizoen info)
cs_wedstrijden_speelronde ( ronde 1 tot X)
cs_wedstrijden_datum (speekt voor zich)
cs_team_id_thuis (verwijst naar de table teams)
cs_team_id_uit (verwijst naar de table teams)
cs_doelthuis (speekt voor zich)
cs_doeluit(speekt voor zich)

en wat ik dus graag zou willen is een over zicht maken zoals bij "uitslagen" op bij voorbeeld http://nl.wikipedia.org/wiki/Eerste_divisie_2013/14 staat
 
Php knipper

php knipper

28/09/2014 23:48:10
Quote Anchor link
Sorry, ik snap het nog steeds niet. Ik ken echt niet's van die sport?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/09/2014 03:13:05
Quote Anchor link
Kan het wel maken maar om het op jouw code aan te laten sluiten:
doe eens een print_r(jouw_array);

Weet je niet wat ik bedoel? laat dan eens stukje php code zien waar de data wordt opgehaald uit de database of de api
 
Mar kla

mar kla

29/09/2014 19:49:20
Quote Anchor link
@php knipper

Het heeft op zich niets met voetbal te maken. Dat is nu wel de inhoud, maar het had net zo goed schaken of korfbal kunnen wezen.

Het doel is dat er vanuit de tabel een draaitabel komt.
vertical een kolom met de thuis spelende partij en horizontaal een rij met uitspelende partij op de "snij punten" kommen dan het resultaat van de wedstrijd of de datum als de wedstrjid nog gespeeld moet worden.

Diangonaal loopt een rij met lege snijpunten omdat een ploeg nooit tegen zich zelf kan spelen

zie hier een voorbeeld:
http://images.dailyexpress.co.uk/img/dynamic/67/590x/secondary/45471.jpg

Toevoeging op 29/09/2014 19:52:27:

@Frank Nietbelangrijk
In alleen nog maar tot de querie gekomen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
SELECT
g.cs_team_id_thuis ,
t1.TeamName_Short as home,
g.cs_team_id_uit,
t2.TeamName_Short as away,
g.cs_wedstrijden_speelronde as round
FROM
cs_wedstrijden g,
af_teams t1,
af_teams t2
WHERE `cs_season_id` =109
AND g.cs_team_id_thuis= t1.Team_ID
AND g.cs_team_id_uit= t2.Team_ID
order by t1.TeamName_Short, t2.TeamName_Short
?>
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

29/09/2014 21:32:52
Quote Anchor link
Stap eens af van die ouderwetse join syntax, maar gebruik gewoon de standaard SQL (ANSI) syntax.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
$stmt
= $pdo->query("SELECT
        h.teamName_short home,
        a.teamName_short away,
        CASE m.cs_wedstrijd_gespeeld
            WHEN 'Y' THEN CONCAT(m.cs_doelthuis, ' - ', m.cs_doeluit)
            WHEN 'N' THEN DATE_FORMAT(datum, '%d-%m-%y')
            ELSE 'X' END uitslag
    FROM
        af_teams h
    CROSS JOIN
            af_teams a
    LEFT JOIN
            cs_wedstrijden m
        ON h.team_id = m.team_id_thuis
        AND a.team_id = m.team_id_uit
        AND m.cs_season_id = 109
    ORDER BY h.teamName_short, a.teamName_short"
);
$counter = 0;
$head = '<thead><tr><td>Naam</td>';
$body = '<tbody>';
$tr = '';
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    if($row['home'] !== $pointer) {
        $counter++;
        $pointer = $row['home'];
        $tbody .= $tr . '<tr><td>' . $pointer .'</td>';
        $tr = '</tr>';
    }

    if ($counter == 1) {
        $thead .= '<td class="rotated">' . $row['away'] . '</td>';
    }

    $tbody .= '<td>' . $row['uitslag'] . '</td>';
}

echo '<table>' . $thead . '</tr></thead>' . $tbody . '</tr></tbody></table>';
        
?>

Let op de left join, die zorgt ervoor dat de koppeling aan zichzelf ook in het resultaat komt
Gewijzigd op 29/09/2014 21:34:08 door Ger van Steenderen
 
Mar kla

mar kla

29/09/2014 22:39:10
Quote Anchor link
HOi Ger

Dit lijkt me een mooi en compleet script!!

ik ben er even mee aan het stoeien, maar ik kom er nog niet helemaal uit

als ik hem draai dan krijg ik deze errors:

PHP Notice: Undefined variable: pdo in inc_as_competiton_matrix.php on line 2

PHP Fatal error: Call to a member function query() on a non-object in inc_as_competiton_matrix.php on line 2

dat is $stmt = $pdo->query("SELECT

daarnaast lijkt het script zich niks van regel 17 AND m.cs_season_id = 109 aan te trekken
 
- Ariën  -
Beheerder

- Ariën -

29/09/2014 22:59:45
Quote Anchor link
Welke manier gebruik je om verbinding te maken met je database?

MySQL-functies, MySQLi-functies, PDO?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

29/09/2014 23:01:24
Quote Anchor link
Je moet zelf eerst wel $pdo ($pdo = new PDO(....)) aanmaken.

Omdat ik de opbouw van jouw tabellen niet ken, heb ik met de query een beetje moeten gokken.
Ik zelf heb een tabel waar de teams op seizoen zijn ingedeeld, dit maak dingen een stuk eenvoudiger met het generen van standen. Maar ik weet of dat bij jou ook is.

Dus ik vermoed dat in de tabel af_teams niet alleen de teams staan die aan seizoen 109 meedoen.
 
Mar kla

mar kla

29/09/2014 23:07:29
Quote Anchor link
Ger

Dat met de $pdo ($pdo = new PDO(....)) snap ik even niet. zou je dat wat meer kunnen uitleggen=


De seizoen_id (109) staat inderdaad niet in de teams, want teams kunnen namelijk in meerdere seizoenen aanwezig zijn, maar in de cs_wedstrijden want een wedstrijd zal altijd in één seizoen voorkomen.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

29/09/2014 23:24:17
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$pdo
= new PDO('mysql:host=localhost;dbname=xxxxxx;charset=utf8', 'wortel', 'willie');
?>

Ik begrijp dat je het seizoen niet in de teams heb staan, maar hoe bepaal je dan de indeling per seizoen?.
Zoals gezegd, ik zelf heb daar een tabel voor gemaakt (teams_by_season).
Gewijzigd op 29/09/2014 23:32:37 door Ger van Steenderen
 
Mar kla

mar kla

29/09/2014 23:44:33
Quote Anchor link
Ger

de indeling per siezoen wordt bepaald door de volgende gegevens

cs_wedstrijden_id (oplopend uniek volgnummer, heeft denk ik verder geen verklaring nodig)
cs_wedstrijd_gespeeld (Y of N om te bepalen al gespeeld is of nog gespeeld moet worden)

per seizoen zijn er 306 wedstrijd (18 teams die tegen elkaar spelen behalbve tegen zichzelf)

cs_season_id ((geeft aan in welk seizoen de wedstrijd gespeeld is)
cs_wedstrijden_speelronde (geeft aan welk in speelronde de onderlinge ontmoeting was)

cs_wedstrijden_datum (speekt voor zich)
cs_team_id_thuis (bevat de ID van de teams uit de table teams)
cs_team_id_uit (bevat de ID van de teams uit de table teams)
cs_doelthuis (speekt voor zich)
cs_doeluit(speekt voor zich)
 
Mar kla

mar kla

05/10/2014 14:01:04
Quote Anchor link
dit is wat ik nu als resultaat krijg

cs_wedstrijden_id mDate team1_id team1_name team2_id team2_name uitslag
1352 30/11 3 ado 4 aja 30/11
1288 27/09 3 ado 5 aza 2 - 3
1386 17/01 3 ado 8 cam 17/01
1478 22/03 4 aja 3 ado 22/03
1418 05/02 4 aja 5 aza 05/02
1523 10/05 4 aja 8 cam 10/05
1501 18/04 5 aza 3 ado 18/04
1244 17/08 5 aza 4 aja 1 - 3
1477 21/03 5 aza 8 cam 21/03
1258 30/08 8 cam 3 ado 3 - 2
1333 09/11 8 cam 4 aja 09/11
1351 29/11 8 cam 5 aza 29/11


ado aja aza cam
ado X 30/11 2-3 17/01
aja 22/03 X 05/02 10/05
aza 18/04 1-3 X 21/03
cam 3-2 09/11 29/11 X

Nb.

Ik heb nu even een beperkte zet data geselecteerd
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/10/2014 16:38:06
Quote Anchor link
Nou.. binnen een uurtje :-)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<?php
// even een array zoals die uit de database zou kunnen komen om te testen
$records = array(
    array(
        'cs_wedstrijden_id' => 1,
        'mDate' => '1-10-2014',
        'team1_id' => 1,
        'team1_name' => 'FC Knudde',
        'team2_id' => 2,
        'team2_name' => 'FC Losers',
        'uitslag' => '1-2',
    ),

    array(
        'cs_wedstrijden_id' => 2,
        'mDate' => '2-10-2014',
        'team1_id' => 3,
        'team1_name' => 'Ajax',
        'team2_id' => 4,
        'team2_name' => 'Feyenoord',
        'uitslag' => '2-3',
    ),

    array(
        'cs_wedstrijden_id' => 3,
        'mDate' => '3-10-2014',
        'team1_id' => 1,
        'team1_name' => 'FC Knudde',
        'team2_id' => 4,
        'team2_name' => 'Feyenoord',
        'uitslag' => '3-4',
    ),

    array(
        'cs_wedstrijden_id' => 4,
        'mDate' => '4-10-2014',
        'team1_id' => 3,
        'team1_name' => 'Ajax',
        'team2_id' => 2,
        'team2_name' => 'FC Losers',
        'uitslag' => '5-6',
    ),
);


class kruistabel
{
    private $records;
    private $teams;
    private $table;
    
    // constructor, wordt automatisch uitgevoerd.
    function __construct($records)
    {

        $this->records = $records;
        $this->makeTeamsArray();
        $this->makeTableArray();
    }

    
    // verkrijg een array met de namen van de teams
    public function getTeamNames()
    {

        return array_values($this->teams);
    }

    
    // verkrijg de complete kruistabel
    public function renderTable()
    {

        $html = '<table>';
        
        foreach($this->table as $row)
        {

            $html .= '<tr>';
            
            foreach($row as $field)
            {

                if(is_int($field))
                    $html .= '<td>' . $this->records[$field]['uitslag'] . '</td>';
                else
                    $html .= '<td>'.$field.'</td>';
            }

            
            $html .= '</tr>';
        }

            
        return $html . '</table>';
    }


    // filter alle teams uit de wedstrijden en stop ze in een array
    // hierbij komt elk team maar één keer in de array

    private function makeTeamsArray()
    {

        $this->teams = array();
        
        foreach($this->records as $match)
        {

            echo $match['team1_id'] . '-' . $match['team2_id'] . '-';
            $this->teams[$match['team1_id']] = $match['team1_name'];
            $this->teams[$match['team2_id']] = $match['team2_name'];
        }

        
        // sorteer de teams op alphabetische volgorde (optioneel)
        asort($this->teams);
        
        // echo '<pre>'; print_r($this->teams); echo '</pre>';
    }
    
    // maak een 2D array met de inhoud voor de tabel
    private function makeTableArray()
    {

        $this->table = array();
        $this->table[] = array_merge(array(''), $this->teams);

        foreach($this->teams as $id1 => $team1)
        {

            $row = array();
            
            $row[] = $team1;
            
            foreach($this->teams as $id2 => $team2)
            {

                if($id1 == $id2)
                    $row[] = 'X';
                else
                    $row[] = $this->findMatch($id1, $id2);
            }

            
            $this->table[] = $row;
        }

        
        // echo '<pre>'; print_r($this->table); echo '</pre>';        
    }
    
    // deze functie zoekt naar wedstrijden tussen team A en team B
    // hierbij maakt het niet uit of de volgorde A-B of B-A is

    private function findMatch($id1, $id2)
    {

        foreach($this->records as $key => $match)
        {

            if(($match['team1_id'] == $id1 && $match['team2_id'] == $id2) || ($match['team1_id'] == $id2 && $match['team2_id'] == $id1))
            {

                return $key;
            }
        }


        return NULL;
    }
}


$kruistabel = new kruistabel($records);
?>

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Untitled Document</title>
        <style>
            table {
                border-collapse:collapse;
            }
            table td, table th {
                border:1px solid #CCC;
                text-align:center;
            }
        </style>
    </head>
    
    <body>
        <h2>Teams:</h2>
        <ul>
        <?php
            foreach($kruistabel->getTeamNames() as $name)
                echo '<li>'.$name.'</li>';
        ?>

        </ul>
        <h2>Kruistabel:</h2>
        <?php echo $kruistabel->renderTable(); ?>
    </body>
</html>
 
Mar kla

mar kla

05/10/2014 17:46:27
Quote Anchor link
HELEMAAL TOP!!

nu moet ik alleen nog het resultaat van mij query naar de Array

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
SELECT
    m1.cs_wedstrijden_id,
    date_format(m1.cs_wedstrijden_datum, '%d/%m') as mDate,
    m1.cs_team_id_thuis AS team1_id,
    t1.TeamName_Short AS team1_name,
    m1.cs_team_id_uit AS team2_id,
    t2.TeamName_Short AS team2_name,
CASE
m1.cs_wedstrijd_gespeeld
     WHEN 'Y' THEN CONCAT(m1.cs_doelthuis, ' - ', m1.cs_doeluit)
     WHEN 'N' THEN     date_format(m1.cs_wedstrijden_datum, '%d/%m')
     ELSE 'X' END uitslag
FROM
    cs_wedstrijden m1, af_teams t1, af_teams t2
WHERE
    cs_season_id =110
AND
    t1.Team_ID = cs_team_id_thuis
AND
    t2.Team_ID = cs_team_id_uit
ORDER by t1.TeamName_Short , t2.TeamName_Short
?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/10/2014 17:57:48
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$records
= $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
Gewijzigd op 05/10/2014 17:58:40 door Frank Nietbelangrijk
 
Mar kla

mar kla

05/10/2014 19:19:20
Quote Anchor link
:-(

dat van die PDO snap ik even niet

Met onderstaand code krijg ik nu de errors

PHP Notice: Undefined variable: kruistabel in new1.php on line 153
PHP Fatal error: Call to a member function renderTable() on a non-object in new1.php on line 153

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php


$pdo
= new PDO("mysql:host=localhost;dbname=database;charset=utf8;user='ikke';password='blabla'");

$stmt = $pdo->query("SELECT
    m1.cs_wedstrijden_id,
    date_format(m1.cs_wedstrijden_datum, '%d/%m') as mDate,
    m1.cs_team_id_thuis AS team1_id,
    t1.TeamName_Short AS team1_name,
    m1.cs_team_id_uit AS team2_id,
    t2.TeamName_Short AS team2_name,
CASE m1.cs_wedstrijd_gespeeld
     WHEN 'Y' THEN CONCAT(m1.cs_doelthuis, ' - ', m1.cs_doeluit)
     WHEN 'N' THEN     date_format(m1.cs_wedstrijden_datum, '%d/%m')
     ELSE 'X' END uitslag
FROM
    cs_wedstrijden m1, af_teams t1, af_teams t2
WHERE
    cs_season_id =110
AND
    t1.Team_ID = cs_team_id_thuis
AND
    t2.Team_ID = cs_team_id_uit
ORDER by t1.TeamName_Short , t2.TeamName_Short"
) or die(mysql_error());
      
while ($records = $stmt->fetchAll(PDO::FETCH_ASSOC))
{

class kruistabel
{
    private $records;
    private $teams;
    private $table;
    
    // constructor, wordt automatisch uitgevoerd.
    function __construct($records)
    {

        $this->records = $records;
        $this->makeTeamsArray();
        $this->makeTableArray();
    }

    
    // verkrijg een array met de namen van de teams
    public function getTeamNames()
    {

        return array_values($this->teams);
    }

    
    // verkrijg de complete kruistabel
    public function renderTable()
    {

        $html = '<table>';
        
        foreach($this->table as $row)
        {

            $html .= '<tr>';
            
            foreach($row as $field)
            {

                if(is_int($field))
                    $html .= '<td>' . $this->records[$field]['uitslag'] . '</td>';
                else
                    $html .= '<td>'.$field.'</td>';
            }

            
            $html .= '</tr>';
        }

            
        return $html . '</table>';
    }


    // filter alle teams uit de wedstrijden en stop ze in een array
    // hierbij komt elk team maar één keer in de array

    private function makeTeamsArray()
    {

        $this->teams = array();
        
        foreach($this->records as $match)
        {

            echo $match['team1_id'] . '-' . $match['team2_id'] . '-';
            $this->teams[$match['team1_id']] = $match['team1_name'];
            $this->teams[$match['team2_id']] = $match['team2_name'];
        }

        
        // sorteer de teams op alphabetische volgorde (optioneel)
        asort($this->teams);
        
        // echo '<pre>'; print_r($this->teams); echo '</pre>';
    }
    
    // maak een 2D array met de inhoud voor de tabel
    private function makeTableArray()
    {

        $this->table = array();
        $this->table[] = array_merge(array(''), $this->teams);

        foreach($this->teams as $id1 => $team1)
        {

            $row = array();
            
            $row[] = $team1;
            
            foreach($this->teams as $id2 => $team2)
            {

                if($id1 == $id2)
                    $row[] = 'X';
                else
                    $row[] = $this->findMatch($id1, $id2);
            }

            
            $this->table[] = $row;
        }
      
    }

    
    // deze functie zoekt naar wedstrijden tussen team A en team B
    // hierbij maakt het niet uit of de volgorde A-B of B-A is

    private function findMatch($id1, $id2)
    {

        foreach($this->records as $key => $match)
        {

            if(($match['team1_id'] == $id1 && $match['team2_id'] == $id2) || ($match['team1_id'] == $id2 && $match['team2_id'] == $id1))
            {

                return $key;
            }
        }

        return NULL;
    }
}


$kruistabel = new kruistabel($records);

?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>kruistable</title>
<style>
table {
border-collapse:collapse;
}
table td, table th {
border:1px solid #CCC;
text-align:center;
}
</style>
</head>

<body>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $kruistabel->renderTable(); ?>

</body>
</html>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
}
?>
Gewijzigd op 05/10/2014 20:42:40 door mar kla
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/10/2014 20:22:02
Quote Anchor link
een fetchAll hoeft niet in een while lus. deze pakt in één keer alle records :-)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php


class kruistabel
{
    // HIER DIE CLASS VAN MIJ
}

$pdo = new PDO("mysql:host=localhost;dbname=adostatsTEST;charset=utf8;user='ikke';password='blabla'");

$stmt = $pdo->query("HIER DIE MOOIE QUERY VAN JOU :-)") or die(mysql_error());
$records = $stmt->fetchAll(PDO::FETCH_ASSOC);

$kruistabel = new kruistabel($records);
echo $kruistabel->renderTable();
?>
 
Mar kla

mar kla

05/10/2014 22:00:37
Quote Anchor link
YEP!!!Dat is hem!!

hartstikke bedankt!!
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.