Draaitabel /pivot

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Delphi Programmeur

Functie omschrijving Onze opdrachtgever is gespecialiseerd in kantoor-bedrijfssoftware en zit gevestigd in omgeving Numansdorp. Als programmeur ben jij bij dit bedrijf met het volgende bezig; Je vertaalt technische en functionele ontwerpen naar kwalitatieve software. Je ontwikkelt, ontwerpt en test software. Je maakt daarbij veel gebruik met de volgende tools & technologieën: Delphi 10.3 (Rio), QuickReport 6. Je krijgt in deze rol veel vrijheid en verantwoordelijkheid. Je levert projecten van A - Z op, en werkt daarbij projectmatig en gestructureerd. Bedrijfsprofiel Dit bedrijf richt zich op maatwerk software oplossingen. Deze software oplossingen worden ingezet in de financiële branche. Het betreft een

Bekijk vacature »

Medior/Senior Python developer (Django)

Functie Je komt te werken in het IT-team bestaande uit de Lead developer en 4 (medior/senior) developers. Gezamenlijk werken jullie aan de verbetering en uitbreiding van de software. Binnen het development team is er veel vrijheid en zelfstandigheid, zonder dat ze hiermee afdoen aan de kwaliteit. Zo hebben ze elke ochtend een korte stand-up (10:00 uur) en werken ze met pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Er is een kwaliteitsfocus en dan biedt ruimte om verbeteringen echt door te voeren binnen de gehele

Bekijk vacature »

Klein team zoekt grote fullstack .NET developer to

Bedrijfsomschrijving Deze werkgever is marktleider in de Benelux en is Europees ook al aardig aan de weg aan het timmeren. Ze voorzien technische winkels van apparatuur om producten een langer leven te geven. Hiermee reduceren ze flink wat CO2 uitstoot en dat is natuurlijk goed voor iedereen! IT speelt een belangrijke rol in de bedrijfsvoering en de applicaties zijn van goed niveau. Als fullstack .NET developer ga jij je bijdrage leveren aan het verder verbeteren van de applicaties en de interne processen. Ze zijn nu met ruim 50 medewerkers in totaal en de afdeling development bestaat uit een 5tal developers.

Bekijk vacature »

Full stack Javascript ontwikkelaar

Functie Benieuwd hoe jouw dag eruit ziet? Je komt binnen rond een uur of 10 en dat start je met de morning call. Dit doen we vanaf het hoofdkantoor of op het lab, ligt eraan welk project je mee bezig bent. Na de call en het verdelen van de tickets ga je met je team aan de slag. Rond een uur of 12 is er een goede lunch en ga je smiddags weer lekker door met je werk. De ene keer maak jij een game voor een groot merk om de interactie tussen product en eindgebruiker te vergroten. De andere

Bekijk vacature »

Social Media Specialist

Social Media Specialist locatie: Rotterdam (Zuid Holland) Wij zoeken op korte termijn een nieuwe collega, een social media specialist/ adviseur sociale media (24 uur), voor ons sprankelende team Communicatie van CJG Rijnmond. Onze focus ligt op het informeren en binden van onze in- en externe klanten en stakeholders en het versterken van onze naamsbekendheid en zichtbaarheid. Dat doen we in nauwe samenwerking met elkaar. Over de functie Ons team bestaat uit 7 communicatieprofessionals met ieder een eigen expertise. Als lid van het online team ben je verantwoordelijk voor het ontwikkelen, uitvoeren en analyseren van onze socialemediastrategie. Ook stel je campagnes

Bekijk vacature »

Starter/junior Magento developer gezocht!

Functie Je komt te werken in een zelfsturend team waarin vertrouwen voorop staat en inbreng en ideeën worden gewaardeerd. Ook staat innovatie centraal. Ze bieden jou de mogelijkheid om jezelf door te ontwikkelen. Denk hierbij aan cursussen en een persoonlijk ontwikkelplan. Je komt terecht in het team van momenteel 4 (ervaren) collega’s en zal meewerken aan de doorontwikkeling en nieuwbouw van de Magento platformen van meerdere opdrachtgevers volgens Agile/Scrum. Denk hierbij aan nieuwe functionaliteiten, UX en koppelingen met verschillende back-end systemen. Als starter/junior developer zul je direct begeleid worden door een senior uit het team. Het is van belang dat

Bekijk vacature »

Digital Agency is looking for PHP developers!

Functie The team currently has 20 colleagues, consisting of developers (front and backend) and the operations team, which also includes management and two scrum masters. They are looking for a PHP developer who is able to work independently. You will work in one of the three scrum teams and start working on a project for the customer. The interesting thing about this is that you do have variety in terms of work, but at the same time continuously work for existing customers. This also gives you the opportunity to really go into depth and develop innovative technical solutions. In terms

Bekijk vacature »

Medior C# Developer

Samen met het development team zorg je ervoor dat alle systemen achter de schermen vlekkeloos werken. Wat doe je als Medior 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? Lees hieronder of het bij je past. Dit vind je leuk om te doen Werken met verschillende soorten data-opslag, zoals Oracle of AWS. Problemen oplossen

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

Senior SQR Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 13333 Introductie Are you passionate about contributing to the world's most advanced machines. Do you thrive in a challenging environment working with highly motivated and skilled teams? If so, we have the perfect opportunity for you! We are seeking a Senior Software Design Engineer for Sequence Tooling to play a critical role in creating and maintaining mission-critical software applications. In this role, you will focus on achieving maintainable software architecture that is transparent and easy to extend while maintaining a strong focus on software quality. You will work closely with

Bekijk vacature »

Starter/junior PHP developer

Functie Momenteel zijn ze op zoek naar een junior PHP developer om het team te versterken. Als back-end developer bouw je de enterprise software die hun bedrijf helpt bij haar primaire processen. Afhankelijk van de omvang van het project werk je in een klein team aan een project. Ze hebben dagelijkse stand-ups en elke twee weken een scrumsessie, begeleid door de Scrum Master, waar je je ideeën kunt presenteren en samen met de Product Owner kunt werken aan het beste product. Ze vertrouwen enorm op hun eigen bedrijfssoftware. Dit geeft hun een groot voordeel ten opzichte van hun concurrentie. Zo

Bekijk vacature »

Senior Javascript developer

Functie Het platform is gebouwd in een moderne JavaScript stack, die gebruikt maakt van:  React.js  Redux  TypeScript  Node.js  Google Cloud functions (node.js)  Semantic UI Alle code wordt getest en beoordeeld door collega developers. De continuous integration pipeline maakt het mogelijk om elke dag waarde te leveren aan hun klanten. Het ontwikkelproces is pragmatisch en gebaseerd op Scrum. Wat je zult doen: Ten eerste kun je nadrukkelijk jouw eigen stempel drukken op de technologie, het product en de cultuur van het bedrijf. Je bent bezig met het uitwerken van de architectuur van nieuwe functionaliteiten op

Bekijk vacature »

Senior Front-end Developer

Wordt jij de nieuwe Front end specialist / developer? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel binnen als

Bekijk vacature »

.NET developer

Functie Als developer heb jij de keuze om aan te sluiten bij het team (13 developers) die op locatie projectmatig bij klanten werkt. Wanneer jij liever intern bij de werkgever werkt is er ook alle ruimte voor jou in het interne team (8 developers) van dit bedrijf. Je werkt samen aan verschillende projecten bij of voor de klant. Het project wordt aangeleverd door sales aan de project manager. Die maakt samen met de Resourcer een planning en op basis daarvan wordt uit het development team een “projectgroep” opgesteld. Hoeveel en welke projecten jij wilt oppakken gebeurt geheel in samenspraak met

Bekijk vacature »

Fullstack Software Developer

Bedrijfsomschrijving Functieomschrijving Java ontwerpen, bouwen en testen (T-shaped). Als senior ontwikkelaar ben je bekend in zowel de back-end als de frontend van een applicatie. Angular, Continious Delivery / Integration. Een ervaren iemand die de leiding kan nemen, een weg vindt in nieuwe situaties, en in oude applicaties. Initiatiefrijk, bekend met de (technische) omgevingen die we bij duo gebruiken, niet te beroerd om collega’s te helpen. Als senior programmeur in staat om op te treden als lead programmeur. Ondersteunt de testers bij de testautomatisering en minder ervaren programmeurs bij dagelijks werkzaamheden. Dit laatste met name op het gebied van Angular. Achtergrond

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/02/2024 20:54:16
 
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.