Draaitabel /pivot

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior embedded software developer

Bedrijfsomschrijving Het betreft hier een beurs genoteerde speler actief in de technische en industriële automatisering. De activiteiten bestaan uit het uitvoeren van projecten op detachering, consultancy en interne basis. De normen waar de organisatie waarde aan hecht hebben te maken met ondernemerschap en betrokkenheid bij het algemeen belang. In de markt staan ze bekend als een gerenommeerde, technisch voorop lopende partij waar balans tussen werk en privé erg goed in de gaten wordt gehouden. Klanten van deze organisaties zijn veelal ook beursgenoteerd organisaties in verschillende bedrijfstakken. Ook zijn er overheidsorganen, zoals defensie, waar opdrachten voor worden uitgevoerd. Functieomschrijving Dit mooie

Bekijk vacature »

Team Lead PHP

Als Tech Lead zorg voor een glimlach op het gezicht van onze klanten door geweldige software af te leveren. Hoe word ik Team Lead PHP bij Coolblue? Als Team Lead PHP bouw en leid je een team dat uitblinkt in het leveren van hoogwaardige en kostenefficiënte software. Je ondersteunt teamleden bij het afbakenen van hun doelen en met de aanpak om ze te behalen. Als Tech Lead zorg voor een glimlach op het gezicht van onze klanten door geweldige software af te leveren en een effectief team op te bouwen. ‘’Ook Team Lead PHP worden bij Coolblue? Else de Boer

Bekijk vacature »

IT Manager

IT Manager Breda, 36-40 uur per week Je weet snel te schakelen tussen strategisch IT-beleid en de dagelijkse gang van zaken. Verder ben je een doorgewinterde professional, die helder kan verwoorden wat ervoor nodig is om onze IT-omgeving optimaal te laten functioneren. Daarnaast kun je goed leidinggeven en gaat samenwerken met ervaren en niet-ervaren gebruikers van onze IT-oplossingen je makkelijk af. Op IT-vlak weet je goed wat je wilt, maar je bent ook uitstekend in staat om buiten de kaders te denken wanneer je ergens een oplossing voor zoekt. Daarbij ben je een echte doener. Problemen die op je pad

Bekijk vacature »

Medior C# Developer

Samen met het development team zorg je ervoor dat alle systemen achter de schermen vlekkeloos werken. Hoe word ik C# Developer bij Coolblue? Als C# developer doe je regelmatig mee aan brainstormsessies over user experience, data en task flow met de UX Designer, Product Owner en Data Scientist in je team. Daarnaast schrijf je op zichzelf staande, consistente en testbare code die goed onderhoudbaar en toekomstbestendig is. Ook C# Developer worden bij Coolblue? Funda legt je uit hoe je dat doet. Dit vind je leuk om te doen Werken met verschillende soorten data-opslag, zoals Oracle of Dynamo/Cosmos. Problemen oplossen met

Bekijk vacature »

Front-end Ontwikkelaar

Bedrijfsomschrijving Bij het accepteren van dit aanbod kom je terecht binnen een veelzijdige organisatie waar een goede sfeer hangt. Zij zijn gewend dagelijks met elkaar te lunchen en ruimte is voor een potje Mario. Als Front-end ontwikkelaar ga je je op projectbasis bezighouden met het ontwikkelen van content voor diverse opdrachtgevers. De projecten waar je aan gaat werken zullen verschillende qua omvang. Hierbij kan je rekening houden met een gemiddelde doorlooptijd van een half jaar, waarbij er meerdere projecten naast elkaar kunnen lopen. Naast ontwikkeling aan de Front-end ga je ook een rol spelen bij de ontwikkeling aan de back-end.

Bekijk vacature »

Technisch Applicatie Beheerder

TechnischApplicatieBeheerder Functiebeschrijving: Ben jij een bevlogen specialist die applicaties tot in het diepste weet te doorgronden en die snel en adequaat reageert bij verstoringen? Wat ga je doen? Als Technisch Applicatiebeheerder zorg je voor het continue beschikbaar zijn van applicaties. Je houdt je bezig met het inrichten, monitoren, analyseren en verbeteren van de technische infrastructuur en de procedures rondom de beheerde applicaties. Je test de werking van de aangeboden wijzigingen en lost problemen en verstoringen op. Daarnaast analyseer je de risico’s en impact van nieuwe applicaties of wijzigingen. Je zorgt daarbij altijd dat de systeemdocumentatie op orde is. Samen met

Bekijk vacature »

Web Developer

Help jij graag mee met het optimaliseren van ons platform? Solliciteer dan naar de functie Web Developer. Op ons hoofdkantoor in Amsterdam krijg je alle ruimte om je kwaliteiten te tonen. Wil jij daarbij ook nog eens programmeren aan de back-end? Ook dat is mogelijk als Full Stack Web Developer! Jouw baan ChipSoft maakt breed gebruik van webtechnologie voor de ondersteuning van administratieve processen. Als ontwikkelaar ben je verantwoordelijk voor het onderhouden en verbeteren van de applicaties op ons platform. Samen met je bedenk en bespreek je oplossingen en voer je code-reviews uit om elkaar naar een nóg hoger niveau

Bekijk vacature »

OutSystems developer

Bedrijfsomschrijving Onze opdrachtgever, gevestigd in regio Amsterdam, is een innovatieve dienstverlener die zich richt op grote corporates in verschillende sectoren. Doordat je bij veel verschillende klanten aan de slag zal gaan is geen enkel project hetzelfde. De organisatie kenmerkt zich door hoge mate van professionaliteit en innovatieve oplossingen. In de rol van OutSystems developer zal jij verschillende grote klanten helpen om efficiënte OutSystems oplossingen te ontwikkelen en implementeren. Jij zal hierbij vanuit jouw expertise de klant adviseren over hoe OutSystems als lowcode platform een toegevoegde waarde kan zijn en op welke manier deze gebruikt kan worden. Hierin neem jij uiteraard

Bekijk vacature »

Senior Node.js Developer (NL) bij PostNL

Senior Node.js Developer (NL) Den Haag HBO/WO IT Professional "Als Senior Node.js Developer impact maken op de groeiende E-commerce markt met onze logistieke software. Je doet dit door complexe bedrijfskritische logistieke business processen te vertalen naar de ontwikkeling en uitbreiding van onze Cloud IT-platformen en software oplossingen in JavaScript en AWS" Wat ga je doen? PostNL is becoming a postal tech company. Als Senior Node.js Developer ben je onderdeel van een multidisciplinair Business-IT-team bestaande uit onder andere een Lead Engineer, JavaScript Developers en Solution Consultants. Samen zijn jullie verantwoordelijk voor het bouwen aan het Event Management Platform (EMP). Dit platform

Bekijk vacature »

Medior .Net Developer - Logistieke zeevracht secto

Voor een hechte, informele en jonge club gespecialiseerd in Transport Management Systemen voor de vracht en havensector zijn wij op zoek naar een medior (3+ jaar) .Net C# Developer. Een goede, sociale communicator die samenwerking en passie voor het vak key vindt. En die durft te sparren, dromen en pionieren! Deze organisatie van 150 man (waarvan 9 IT-toppers) zorgen er al 30 jaar voor dat internationale transport tot in de details kunnen worden berekend, ingepland en gemanaged, bijvoorbeeld in de Rotterdamse haven. Hierdoor worden kosten, materialen, arbeid, ontwerpen en oplevering perfect en just-in-time op elkaar afgestemd. Ze zijn marktleider én

Bekijk vacature »

Full-stack .NET developer gezocht, Goeree-Overflak

Ben je een .NET software developer en op zoek naar een professionele werkomgeving binnen een wat groter innovatief en ambitieus bedrijf? Waar sprake is van een uitgebreid applicatielandschap met elke dag nieuwe uitdagingen, waar alles mogelijk is, binnen een goede collegiale sfeer? Lees dan verder! Voor een bedrijf in Goeree-Overflakke zijn we momenteel op zoek naar een ervaren software developer. De IT afdeling bestaat uit circa 60 mensen waarvan zo'n 15 developers. Voor de recente architectuur wordt gebruikt gemaakt van de nieuwste technieken waaronder .NET Core, Docker en Angular. Echter bestaat het applicatielandschap uit een groot aantal verschillende applicaties waarbij

Bekijk vacature »

C/C++ Developer

Bedrijfsomschrijving Als Software ontwikkelaar C/C++ kom je te werken bij een toonaangevende organisatie in de mobiliteitsbranche die door het produceren van slimme producten Nederland steeds leefbaarder maakt! Ze ontwikkelen innovatieve producten die er onder andere voor zorgen dat de infrastructuur in Nederland op de snelste en meeste efficiënte manier kan worden geregeld. Als C/C++ ontwikkelaar kom je te werken op een afdeling met 40 collega's, bestaande uit Engineers, deskundigen en ontwikkelaars. Hiervoor werk je nauw samen in een team met ongeveer tien andere ontwikkelaars. Samen met het team pak je zelfstandig projecten op die doorgaans een doorlooptijd hebben van 4

Bekijk vacature »

Cloud Automation Engineer VMware - Infrastructure

Cloud Automation Engineer VMware - Infrastructure Services PositionDescription Ben jij een ambitieuze Cloud Engineer die de ontwikkelingen en innovaties op het gebied van Cloud Infra & Automation op de voet volgt? Ben je een breed georiënteerde engineer en wil je je verdiepen in een specifieke technologie? Of wil je je expertise juist verbreden en certificeren in meerdere technieken en tools? Wij zoeken ter versterking van ons team zowel multi-skilled als specialistische engineers met passie voor hun vak! Bij ons krijg je de ruimte en vrijheid om in de praktijk jezelf verder te ontwikkelen op diverse projecten en aan je theoretische

Bekijk vacature »

Medior Front-End Developer

Als medior Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Hoe word ik Medior Front-end Developer bij Coolblue? Als Medior Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Je krijgt energie van het bedenken van creatieve oplossingen en presenteert dit graag binnen het team. Ook ben je trots op je werk en verwelkomt alle feedback. ‘’Ook Medior Front-end Developer worden bij Coolblue? Else de Boer legt je uit hoe je dat doet.’’

Bekijk vacature »

Senior fullstack .NET developer

Wil jij samen met gemotiveerde en slimme collega’s bouwen aan ons geavanceerde landschap in Azure? En vind je het ook nog eens leuk om jouw kennis te delen met junior- en medior devs? Dan heb je wellicht interesse in de positie van: Senior fullstack .NET developer voor ons kantoor in Alkmaar Over de positie: Bij SnelStart werken we in een AGILE-structuur om de productie meer focus en impact te geven. Met je collega’s kom je tot de beste resultaten door onderlinge discussie, goede refinement sessies, reviews en écht teamwork. Je hebt de vrijheid om de dingen te doen zoals jij

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

19/01/2021 02:54:01
 
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.