Draaitabel /pivot

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cymer Patch Server Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12919 Introductie This new patch server will be built on Python and Django ReST and GraphQL services with a React frontend, it will consist of several microservices and run on a Kubernetes cluster. It will be supported by several middleware applications such as ElasticSearch, Redis, RabbitMQ, Oracle and Artifactory. Functieomschrijving The Patch Admin team always aim to deliver software at a high quality, we avoid sacrifices here to maintain our velocity. Practically this means that we practice test driven development and perform end-to-end automated testing on our software. This means

Bekijk vacature »

Back end developer PHP, Laravel

Functie Jij komt te werken in ons webdevelopment team, wat bestaat uit 8 ervaren collega’s. Hiernaast hebben wij nog een team van 2 ontwikkelaars die aan native applicaties werken. Bij ons zijn er korte lijntjes en er hangt een gezellige informele werksfeer. Maar het belangrijkste is natuurlijk dat je aan geweldige applicaties zult gaan werken! Wij willen als organisatie niet te groot worden, we willen gewoon toffe dingen maken. Onze techstack bestaat momenteel uit: PHP, Laravel, Javascript, Typescript, Git, MySQL, Java, Kotlin, Xamarin. Samen met ons ga jij zorgen dat we puik werk leveren! Waarbij je bij elke fase in

Bekijk vacature »

Java Programmeur

Functie Heb jij altijd al samen willen werken met ervaren java ontwikkelaars dan hebben wij hier de ultieme kans voor jou! Voor een opdrachtgever in omgeving van Naaldwijk zijn wij op zoek naar uitbreiding van het vaste ontwikkel team. Je zult je hier voornamelijk bezig gaan houden met; Wijzigingsverzoeken van klanten uitvoeren, hier wordt je diep in betrokken; Samen met consultants sluit je aan bij gesprekken met klanten, voor alle projecten; Je schakelt veel met consultants, wat is de behoefte van de klant? Hoe kan je hierop integreren?; Het framework moet naar de Cloud gebracht worden, je wordt betrokken bij

Bekijk vacature »

Front-end developer (Vue.js) gezocht!

Functie Als Front-end developer is het jouw doel om efficiënte en effectieve frontend code te ontwerpen, ontwikkelen en onderhouden die goed aansluit bij de functionele behoefte vanuit de klant. Je zorgt voor optimale SEO-resultaten, sitespeed en frontend security. You build it, you run it, you own it! Je maakt deel uit van een DevOps Scrum team en werkt samen met back-end developers, test-engineers, interaction designers en een projectmanager. Er zijn verschillende groepen Scrum teams. Een roadmap team is jouw ‘’thuisbasis’’, daar wordt gewerkt aan doorontwikkeling van bestaande omgevingen voor een aantal klanten. Hiernaast zijn er projectteams waar nieuwe omgevingen worden

Bekijk vacature »

Senior Front end developer

Functie Wij zijn op zoek naar een ambitieuze, zelfsturende Front-end Expert die ons (internationale) team komt versterken. Onze huidige software development afdeling bestaat uit 7 developers en designers. Wij zijn een écht softwarehuis, dus ervaring in software development is wel echt een must. Er wordt tegelijkertijd aan meerdere projecten gewerkt, voor mooie toonaangevende klanten. Je hebt dus regelmatig te maken met deadlines en opleveringen. Een deel van onze omgeving is in Angular.JS. Dit deel wordt langzamerhand omgebouwd naar de nieuwste versie van Angular. Jouw werkzaamheden zullen bestaan uit: Het aansturen en begeleiden van jouw collega’s Het implementeren van visuele elementen

Bekijk vacature »

Java developer

Functie Je gaat aan de slag als Tester voor een aantal mooie projecten. Je komt terecht in een DevOps team waar jij aan de slag gaat om de kwaliteit te waarborgen omtrent de maatwerk software voor de klanten. Je draait je hand er niet voor om de adviserende rol te bekleden op het gebied van testautomatisering en het opzetten van testframeworks. Zoals aangegeven ga je daadwerkelijk in het eigen team aan de slag en is het daarnaast ook gebruikelijk bij de klanten op locatie te komen om te werken aan de opdrachten. Je krijgt zodoende echt een mooie kijk in

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET developer begint jouw dag na een bak koffie met een stand up. De vorderingen worden tijdens de stand up besproken en de doelen worden opgesteld waar jullie als team in de volgende sprint naartoe gaan werken. Onze backend is geschreven in .NET Core en onze Front-end in Angular. Bij ons ga jij dan ook Fullstack aan de slag. Jij wordt hier opgeleid om zelfstandig te kunnen programmeren en applicaties te kunnen implementeren. Er wordt op projectbasis gewerkt, dit bied leuke uitdagingen omdat elke klant een andere visie heeft over de applicatie die wij maken. Je gaat

Bekijk vacature »

Senior Front-End Developer

As a Senior Front-end Developer you maintain the balance between creativity and functionality for our webshop, and you coach your fellow developers. How do I become a Senior Front-End Developer at Coolblue? As a Front-end Developer you work on the user-friendliness of our webshop for millions of customers. You enjoy working with the UX Designer to pick up stories. You get energy from coming up with creative solutions and are happy to present this within the team. You are also proud of your work and welcome all feedback. Would you also like to become a Senior Front-End Developer at Coolblue?

Bekijk vacature »

Back-end Developer

Functie omschrijving Als Back-end Developer heb je de eer om als eerste interne developer bij deze organisatie te beginnen. Op dit moment zijn er externe developers, maar daar wil de organisatie verandering in brengen. Op termijn moet de gehele afdeling uit intern personeel bestaan. Je kan je voorstellen dat de eerste interne developer ook de nodige kennis mee moet brengen. Dat klopt. Je gaat je namelijk aan het begin bekommeren over de externe developers en uiteindelijk over je interne collega's. Verder ga je het volgende doen: Het bedenken, beheren en onderhouden van webportalen, API-koppelingen en applicaties; Je bedenkt en werkt

Bekijk vacature »

Network Engineer (f/m/d) in Heidelberg

Network Engineer (f/m/d) The IT Services team operates and supports the IT infrastructure and services at EMBL headquarters in Heidelberg and at the laboratory’s sites in Barcelona and Rome. As part of IT Services, the Network team is responsible for managing and developing the network infrastructure in our data centres, on campus, and to our external network providers. As a leading scientific institution with highly data-intensive research, extensive data flows at and between the laboratory’s six sites and to the Internet, EMBL is connected to national and international scientific networks using state-of-the-art technologies from vendors including Cisco, Extreme Networks and

Bekijk vacature »

Full Stack Java ontwikkelaar

Functieomschrijving Voor de politie zijn wij op zoek naar een Full stack Java ontwikkelaar. Als ervaren full stack Java ontwikkelaar binnen de gewenste deadlines meewerken aan de totstandkoming van de gewenste werkzaamheden. Taken Upgraden van GeoServer, SOLR, Oracle Spatial database, Tomcat Migreren Oracle Spatial naar PostgreSQL/PostGIS Migreren SOLR naar ElasticSearch Geografische gegevens op het interne netwerk beschikbaar maken Doorontwikkelen en actualiseren van de geografische services Het up to date brengen van de CI/CD pipeline, samen met medewerkers die verantwoordelijk zijn voor de CI/CD tooling Aanspreekbaar op de solution architectuur en stemt die met collega's in het cluster Geo De opdracht

Bekijk vacature »

Senior Node.js developer Digital Agency

Functie Door de groei van de organisatie zijn ze op zoek naar een Tech Lead. Als tech lead ben jij verantwoordelijk Als Back end Node.js developer kom je terecht in een van de 8 multidisciplinaire teams in het projectenhuis. Afhankelijk van jouw interesses, wensen en capaciteiten word je bij projecten en onderwerpen naar keuze betrokken. Als ervaren ontwikkelaar zul jij vaak leiding nemen in de projecten en in het team een aanvoerder zijn van technische discussies. Uiteindelijk wil jij natuurlijk de klantwensen zo goed mogelijk vertalen naar robuuste code. De projecten kunnen varieren van langlopende- tot kleinschalige trajecten. Voorheen werkte

Bekijk vacature »

Team Lead Java Developer

Functie Wat ga je doen als Java developer? Als Team Lead Java Developer draag een grote verantwoordelijk je stuurt ontwikkelaars aan en staat dagelijks in contact met jou ICT Manager. De team Bestaat uit front-end en backend systemen. Je ben in staat op hoog niveau de technische vak te bepalen en ook te bewaren. Je dag zie er als volgt uit, ontwikkelen van nieuwe en bestaande applicaties, het uitvoeren van processen en analyses en het beschrijven van functioneel ontwerpen. Ook zal samen met jouw Tester applicaties gaan testen door middel van peer reviews en het leveren van support aan gebruikers

Bekijk vacature »

Senior front end developer Digital Agency Amsterda

Functie Wij werken in multidisciplinaire teams aan verschillende projecten, echter blijf je niet gebonden aan 1 team. Dit houdt in dat wij verschillende specialisten in dienst hebben en deze door middel van een roulatiesysteem in multidisciplinaire teams laten werken. Het team bestaat vaak uit Frontend developer(s), Backend Developer(s), Designer(s), Tester(s) en Mobile Developer(s). Deze teams worden afgewisseld waardoor jij de mogelijkheid krijgt om met iedereen een keer samen te werken. Als Frontend Developer ben jij ónze Specialist op dit gebied. Jij werkt mee aan verschillende projecten voor verschillende klanten. Denk bijvoorbeeld aan klanten, zoals’; BAM, IDFA en Ultimaker. Hierbij zorg

Bekijk vacature »

Java developer

Als Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en staan

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

20/04/2024 10:00:57
 
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.