Reken met MySQL.... pfff wat is dat lastig
ik ben een beginnenling met php en sql. voor mij gevoel toch al wel aardig op weg. Ik heb eeb site gemaakt (nog wel lokaal kan deze nog niet tonen dus) waar ik standen bij hou van tennisuistlagen. Er worden aleen dubbels gespeeld. De samenstelling is 2 heren en 2 dames per team. Door deze opstelling kan er dus een herendubbel, een damesdubbel en twee mix wedstrijden per keer worden gehouden.
Nu ben ik inmiddels zover dat ik de uitslagen kan invoeren en kan laten tonen op de site.. maar nu gaat er voor mij een uitdaging komen die ik niet snap.. Het rekenen met SQL en het resultaat kan toen. BEn op zoek naar iemand die mij hier wegwijs in wil maken.
ken niet alle mogelijkheden hoe eea in zijn werk gaat. Ik heb het wel in de kop zitten hoe ik het ongeveer wil ... maar ik kan het helaas niet bouwen...
zo hebben de heren een uitslag... de dames en natuurlijk de twee mixgames.
De setstanden kan ik invoeren. Hoe tel ik de setstanden bij elkaar op en bepaal ik de winnaar. Daar hoe moet ik nu de berekenign maken dat de winner van 1 punt krijgt.... de punten van alle dicipline s worden op het einde bij elkaar opgeteld en dan hebben we match resultaat.
Dit is een belangrijke stap.. maar als dat eenmaal is gerealiseerd komt er een verolgstap achteraan.. De ranking en standen.. ook daarvan weet ik niet hoe ik het moet aanvliegen.
Helaas kan ik op het www niet laten tonen wat ik nu heb .. dat kan wat lastig zijn.. plus hou er een aub ook rekening mee dat ik nog lerende ben in deze materie en dat ik qua programmering het nog niet onder de knie heb :-)
Ik hoop dat er iemand is die me kan en wil helpen... alsvast bedankt.
ps als het helpt dat ik mijn function hier post geef dan aub een seintje...
We kunnen je vast wel helpen. Kan je jouw relevante code en jouw databasemodel laten zien?
if(...) functie kun je een redelijk eind komen. Bijvoorbeeld:
Als team1 en team2 gelijk hebben gespeeld 1 punt, anders indien gewonnen 2 punten, anders 0 (steeds voor team1; ik heb geen verstand van tennis, dus misschien kan het wel nooit gelijk zijn).
Dit kun je dan net zover uitwerken (sub-query die alle sets weer bij elkaar optelt, enz) totdat je bent waar je wezen wilt. Je kunt er ook een "stored procedure" voor maken (= een eigen functie definiëren in MySQL; die kun je dan aanroepen als elke andere functie).
Maarrr, je kunt natuurlijk ook bij het invoeren van de setstanden meteen de uitslag (van de wedstrijd + alle games + verdiende punten) berekenen (in PHP), en die ook direct ergens opslaan. Als je dan de ranking uit wilt rekenen hoef je niet eerst alles steeds opnieuw te bepalen, maar puur nog de tabel uit te lezen/optellen/sorteren. Scheelt je een hoop (herhaald) gedoe.
Met de MySQL Als team1 en team2 gelijk hebben gespeeld 1 punt, anders indien gewonnen 2 punten, anders 0 (steeds voor team1; ik heb geen verstand van tennis, dus misschien kan het wel nooit gelijk zijn).
Dit kun je dan net zover uitwerken (sub-query die alle sets weer bij elkaar optelt, enz) totdat je bent waar je wezen wilt. Je kunt er ook een "stored procedure" voor maken (= een eigen functie definiëren in MySQL; die kun je dan aanroepen als elke andere functie).
Maarrr, je kunt natuurlijk ook bij het invoeren van de setstanden meteen de uitslag (van de wedstrijd + alle games + verdiende punten) berekenen (in PHP), en die ook direct ergens opslaan. Als je dan de ranking uit wilt rekenen hoef je niet eerst alles steeds opnieuw te bepalen, maar puur nog de tabel uit te lezen/optellen/sorteren. Scheelt je een hoop (herhaald) gedoe.
Gewijzigd op 14/10/2018 19:01:23 door Rob Doemaarwat
Tnx voor je snelle reatie.. mijn probleem is dat ik ongeveer wel snap wat je schrijft maar ik kan dit helaas niet vertalen naar codering. Met name het laatste stukje klinkt interessant... een team speel twee sets. Behalve als daar een 1-1 uitslag komt dan wordt er een tie break gespeeld. Er komt dus uiterlijk en 2-1 of een 2-0 stand.. Op zich maakt at niet uit. De winning team krijgt 1 punt. De verliezer 0. Dit principe telt voor de heren, dames en de twee mixen. Het wedstrijd resultaat kan dus max 4-0 worden of andere mogelije standen zijn 3-1, 2-2, 1-3 of 0-4
Van iedere wedstrijden geef ik dus inderdaad de standen in. De winner kan dus inderdaad bepaald worden aan de hand hiervan en het resultaat zou weggeschreven kunnen worden naar de database. Ik denk dat het dit inderdaad voor het bepalen van de ranking ten goede komt. Mijn grote probleem/uitdaging ... hoe ga ik dit voor elkaar krijgen... nogmaals ik ben net gestart met php en mysql... en kost me beste moeite en dit is nog te hoog gegrepen.
Achtergrond vna dit alles is dat ik gevraagd ben om een website te maken voor een tennis wintercompetitie. Het moest eenvoudig te onderhouden zijn. De man die het deed is overleden en nu zijn ze een klein beetje onthand.. ik heb alleen joomla ervaring en html kennis.. het leek me leuk uitdaging om meer van php en mysql te weten te kunnen komen maar een zelfstudie gaat helaas niet snel en de competitie staat in de startblokken. Het zou fijn dat...
maar alle goeie dingen komen langzaam.. dus ik hoop hier kennis op te doen en ik kan alle hulp gebruike.
Toevoeging op 14/10/2018 20:10:34:
Hieronder mijn functie voor het tonen van de wedstrijddetails:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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
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
<?php
function wedstrijd (){
global $MySQL;
$where = NULL;
if (isset($_GET['id'])){
$where = 'WHERE `schemaId` = "'.$_GET['id'].'"';
}
$sqlUitlezen = mysqli_query($MySQL, "SELECT schemaId, DATE_FORMAT(schema.schemaSpeeldatum,'%d-%m-%Y') AS schemaSpeeldatum, schemaTeamA, schemaTeamB, schemaUitslagA, schemaUitslagB, schemaHd1A, schemaHd1B, schemaHd2A, schemaHd2B, schemaHd3A, schemaHd3B, schemaSetsHdA, schemaSetsHdB, schemaDd1A, schemaDd1B, schemaDd2A, schemaDd2B, schemaDd3A, schemaDd3B, schemaSetsDdA, schemaSetsDdB, schemaMix11A, schemaMix11B, schemaMix12A, schemaMix12B, schemaMix13A, schemaMix13B, schemaSetsMix1A, schemaSetsMix1B, schemaMix21A, schemaMix21B, schemaMix22A, schemaMix22B, schemaMix23A, schemaMix23B, schemaSetsMix2A, schemaSetsMix2B, poules.pouleId, poules.pouleLetter FROM `schema` INNER JOIN poules ON schema.schemaPouleId = poules.pouleId ".$where." ORDER BY `schemaId` ASC");
$sqlAantal = mysqli_num_rows($sqlUitlezen);
if ($sqlAantal > 0){
while ($sqlData = mysqli_fetch_assoc($sqlUitlezen)){
echo '<article>';
echo '
<table align="center" cellpadding="2" width="98%" border="0">
<tr>
<td rowspan="2" align="left"><A HREF="javascript:javascript:history.go(-1)"><img src="img/icon-list.png" height="14" align="left"></a><p align="center"><font size="1" face="comic sans ms" color="gray">POULE</font><br><font size="5" face="comic sans ms"><b>'.$sqlData['pouleLetter'].'</b></font></td>
<td colspan="3" align="right"><font size="2" face="comic sans ms">Wedstrijdnummer: <b>'.$sqlData['schemaId'].'</b></font></td>
</tr>
<tr>
<td colspan="3" align="right"><font size="2" face="comic sans ms">Datum gespeeld: <b>'.$sqlData['schemaSpeeldatum'].'</b></font></td>
</tr>
<tr>
<td colspan="4" align="center"><font size="5" face="comic sans ms">'.$sqlData['schemaTeamA'].' - '.$sqlData['schemaTeamB'].'</font></td>
</tr>
<tr>
<td colspan="4" align="center"><font size="5" face="comic sans ms"><b>'.$sqlData['schemaUitslagA'].' - '.$sqlData['schemaUitslagB'].'</b></font></td>
</tr>
<tr>
<td colspan="4" align="center"> </td>
</tr>
<tr>
<td align="center">
<table border="1" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" align="center"><font size="2" face="comic sans ms"><b>HEREN</b></font></td>
</tr>
<tr>
<td><font size="2" face="comic sans ms"><b>1e set</b></font></td><td><font size="2" face="comic sans ms"><b>2e set</b></font></td><td><font size="2" face="comic sans ms"><b>3e set</b></font></td><td></td></td>
</tr>
<tr>
<td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaHd1A'].' - '.$sqlData['schemaHd1B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaHd2A'].' - '.$sqlData['schemaHd2B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaHd3A'].' - '.$sqlData['schemaHd3B'].'</font></td><td align="center" nowrap><b><font size="2" face="comic sans ms">'.$sqlData['schemaSetsHdA'].' - '.$sqlData['schemaSetsHdB'].'</font></b></td>
</tr>
</table>
</td>
<td align="center">
<table border="1" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" align="center"><font size="2" face="comic sans ms"><b>DAMES</b></font></td>
</tr>
<tr>
<td><font size="2" face="comic sans ms"><b>1e set</b></font></td><td><font size="2" face="comic sans ms"><b>2e set</b></font></td><td><font size="2" face="comic sans ms"><b>3e set</b></font></td><td></td></td>
</tr>
<tr>
<td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaDd1A'].' - '.$sqlData['schemaDd1B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaDd2A'].' - '.$sqlData['schemaDd2B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaDd3A'].' - '.$sqlData['schemaDd3B'].'</font></td><td align="center" nowrap><b><font size="2" face="comic sans ms">'.$sqlData['schemaSetsDdA'].' - '.$sqlData['schemaSetsDdB'].'</font></b></td>
</tr>
</table>
</td>
<td align="center">
<table border="1" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" align="center"><font size="2" face="comic sans ms"><b>MIX 1</b></font></td>
</tr>
<tr>
<td><font size="2" face="comic sans ms"><b>1e set</b></font></td><td><font size="2" face="comic sans ms"><b>2e set</b></font></td><td><font size="2" face="comic sans ms"><b>3e set</b></font></td><td></td></td>
</tr>
<tr>
<td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaMix11A'].' - '.$sqlData['schemaMix11B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaMix12A'].' - '.$sqlData['schemaMix12B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaMix13A'].' - '.$sqlData['schemaMix13B'].'</font></td><td align="center" nowrap><b><font size="2" face="comic sans ms">'.$sqlData['schemaSetsMix1A'].' - '.$sqlData['schemaSetsMix1B'].'</font></b></td>
</tr>
</table>
</td>
<td align="center">
<table border="1" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" align="center"><font size="2" face="comic sans ms"><b>MIX2</b></font></td>
</tr>
<tr>
<td><font size="2" face="comic sans ms"><b>1e set</b></font></td><td><font size="2" face="comic sans ms"><b>2e set</b></font></td><td><font size="2" face="comic sans ms"><b>3e set</b></font></td><td></td></td>
</tr>
<tr>
<td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaMix21A'].' - '.$sqlData['schemaMix21B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaMix22A'].' - '.$sqlData['schemaMix22B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaMix23A'].' - '.$sqlData['schemaMix23B'].'</font></td><td align="center" nowrap><b><font size="2" face="comic sans ms">'.$sqlData['schemaSetsMix2A'].' - '.$sqlData['schemaSetsMix2B'].'</font></b></td>
</tr>
</table>
</td>
</tr>
</table>
';
echo '</article>';
}
}else{
echo 'Sorry, ik heb niets kunnen vinden!';
}
}
?>
function wedstrijd (){
global $MySQL;
$where = NULL;
if (isset($_GET['id'])){
$where = 'WHERE `schemaId` = "'.$_GET['id'].'"';
}
$sqlUitlezen = mysqli_query($MySQL, "SELECT schemaId, DATE_FORMAT(schema.schemaSpeeldatum,'%d-%m-%Y') AS schemaSpeeldatum, schemaTeamA, schemaTeamB, schemaUitslagA, schemaUitslagB, schemaHd1A, schemaHd1B, schemaHd2A, schemaHd2B, schemaHd3A, schemaHd3B, schemaSetsHdA, schemaSetsHdB, schemaDd1A, schemaDd1B, schemaDd2A, schemaDd2B, schemaDd3A, schemaDd3B, schemaSetsDdA, schemaSetsDdB, schemaMix11A, schemaMix11B, schemaMix12A, schemaMix12B, schemaMix13A, schemaMix13B, schemaSetsMix1A, schemaSetsMix1B, schemaMix21A, schemaMix21B, schemaMix22A, schemaMix22B, schemaMix23A, schemaMix23B, schemaSetsMix2A, schemaSetsMix2B, poules.pouleId, poules.pouleLetter FROM `schema` INNER JOIN poules ON schema.schemaPouleId = poules.pouleId ".$where." ORDER BY `schemaId` ASC");
$sqlAantal = mysqli_num_rows($sqlUitlezen);
if ($sqlAantal > 0){
while ($sqlData = mysqli_fetch_assoc($sqlUitlezen)){
echo '<article>';
echo '
<table align="center" cellpadding="2" width="98%" border="0">
<tr>
<td rowspan="2" align="left"><A HREF="javascript:javascript:history.go(-1)"><img src="img/icon-list.png" height="14" align="left"></a><p align="center"><font size="1" face="comic sans ms" color="gray">POULE</font><br><font size="5" face="comic sans ms"><b>'.$sqlData['pouleLetter'].'</b></font></td>
<td colspan="3" align="right"><font size="2" face="comic sans ms">Wedstrijdnummer: <b>'.$sqlData['schemaId'].'</b></font></td>
</tr>
<tr>
<td colspan="3" align="right"><font size="2" face="comic sans ms">Datum gespeeld: <b>'.$sqlData['schemaSpeeldatum'].'</b></font></td>
</tr>
<tr>
<td colspan="4" align="center"><font size="5" face="comic sans ms">'.$sqlData['schemaTeamA'].' - '.$sqlData['schemaTeamB'].'</font></td>
</tr>
<tr>
<td colspan="4" align="center"><font size="5" face="comic sans ms"><b>'.$sqlData['schemaUitslagA'].' - '.$sqlData['schemaUitslagB'].'</b></font></td>
</tr>
<tr>
<td colspan="4" align="center"> </td>
</tr>
<tr>
<td align="center">
<table border="1" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" align="center"><font size="2" face="comic sans ms"><b>HEREN</b></font></td>
</tr>
<tr>
<td><font size="2" face="comic sans ms"><b>1e set</b></font></td><td><font size="2" face="comic sans ms"><b>2e set</b></font></td><td><font size="2" face="comic sans ms"><b>3e set</b></font></td><td></td></td>
</tr>
<tr>
<td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaHd1A'].' - '.$sqlData['schemaHd1B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaHd2A'].' - '.$sqlData['schemaHd2B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaHd3A'].' - '.$sqlData['schemaHd3B'].'</font></td><td align="center" nowrap><b><font size="2" face="comic sans ms">'.$sqlData['schemaSetsHdA'].' - '.$sqlData['schemaSetsHdB'].'</font></b></td>
</tr>
</table>
</td>
<td align="center">
<table border="1" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" align="center"><font size="2" face="comic sans ms"><b>DAMES</b></font></td>
</tr>
<tr>
<td><font size="2" face="comic sans ms"><b>1e set</b></font></td><td><font size="2" face="comic sans ms"><b>2e set</b></font></td><td><font size="2" face="comic sans ms"><b>3e set</b></font></td><td></td></td>
</tr>
<tr>
<td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaDd1A'].' - '.$sqlData['schemaDd1B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaDd2A'].' - '.$sqlData['schemaDd2B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaDd3A'].' - '.$sqlData['schemaDd3B'].'</font></td><td align="center" nowrap><b><font size="2" face="comic sans ms">'.$sqlData['schemaSetsDdA'].' - '.$sqlData['schemaSetsDdB'].'</font></b></td>
</tr>
</table>
</td>
<td align="center">
<table border="1" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" align="center"><font size="2" face="comic sans ms"><b>MIX 1</b></font></td>
</tr>
<tr>
<td><font size="2" face="comic sans ms"><b>1e set</b></font></td><td><font size="2" face="comic sans ms"><b>2e set</b></font></td><td><font size="2" face="comic sans ms"><b>3e set</b></font></td><td></td></td>
</tr>
<tr>
<td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaMix11A'].' - '.$sqlData['schemaMix11B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaMix12A'].' - '.$sqlData['schemaMix12B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaMix13A'].' - '.$sqlData['schemaMix13B'].'</font></td><td align="center" nowrap><b><font size="2" face="comic sans ms">'.$sqlData['schemaSetsMix1A'].' - '.$sqlData['schemaSetsMix1B'].'</font></b></td>
</tr>
</table>
</td>
<td align="center">
<table border="1" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" align="center"><font size="2" face="comic sans ms"><b>MIX2</b></font></td>
</tr>
<tr>
<td><font size="2" face="comic sans ms"><b>1e set</b></font></td><td><font size="2" face="comic sans ms"><b>2e set</b></font></td><td><font size="2" face="comic sans ms"><b>3e set</b></font></td><td></td></td>
</tr>
<tr>
<td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaMix21A'].' - '.$sqlData['schemaMix21B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaMix22A'].' - '.$sqlData['schemaMix22B'].'</font></td><td align="center"><font size="2" face="comic sans ms">'.$sqlData['schemaMix23A'].' - '.$sqlData['schemaMix23B'].'</font></td><td align="center" nowrap><b><font size="2" face="comic sans ms">'.$sqlData['schemaSetsMix2A'].' - '.$sqlData['schemaSetsMix2B'].'</font></b></td>
</tr>
</table>
</td>
</tr>
</table>
';
echo '</article>';
}
}else{
echo 'Sorry, ik heb niets kunnen vinden!';
}
}
?>
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 14/10/2018 20:24:58 door - Ariën -
Verder begin ik te huiveren als ik dit zie:
schemaSetsDdA, schemaSetsDdB, schemaMix11A, schemaMix11B
Je moet NOOIT je kolommen in je database van aantallen laten afhangen. Dit is al een voorbeeld waarmee je jouw database nodig moet 'normaliseren' en dus je data uit moet splitsen in verschillende tabellen. Nu kan je heel lastig berekeningen erover uitvoeren, iets wat je zeker nodig hebt voor een dergelijk systeem wat je nu bouwt. Dus eigenlijk vind ik het niet zo heel gek dat je vast lijkt lopen.
Gewijzigd op 14/10/2018 20:29:39 door - Ariën -
Misschien is het dus verstandiger om dit project even voorbij te wuiven, en eerst met iets "simpels" te beginnen. eerst een beetje in de zandbak spelen, dan pas voor het echie.
Desalniettemin: zou je de velden uit je tabellen stuk voor stuk toe kunnen lichten, eens kijken of ik het dan ga snappen.
Sowieso is het overigens handiger om een query een beetje gestructureerd op te stellen, dan kunnen wij (en ook jij in je code) 'm beter lezen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
SELECT schemaId, DATE_FORMAT(schema.schemaSpeeldatum,'%d-%m-%Y') AS schemaSpeeldatum,
schemaTeamA, schemaTeamB, schemaUitslagA, schemaUitslagB,
schemaHd1A, schemaHd1B, schemaHd2A, schemaHd2B, schemaHd3A, schemaHd3B, schemaSetsHdA, schemaSetsHdB,
schemaDd1A, schemaDd1B, schemaDd2A, schemaDd2B, schemaDd3A, schemaDd3B, schemaSetsDdA, schemaSetsDdB,
schemaMix11A, schemaMix11B, schemaMix12A, schemaMix12B, schemaMix13A, schemaMix13B, schemaSetsMix1A, schemaSetsMix1B,
schemaMix21A, schemaMix21B, schemaMix22A, schemaMix22B, schemaMix23A, schemaMix23B, schemaSetsMix2A, schemaSetsMix2B,
poules.pouleId, poules.pouleLetter
FROM `schema`
INNER JOIN poules ON schema.schemaPouleId = poules.pouleId ".
$where."
ORDER BY `schemaId` ASC
schemaTeamA, schemaTeamB, schemaUitslagA, schemaUitslagB,
schemaHd1A, schemaHd1B, schemaHd2A, schemaHd2B, schemaHd3A, schemaHd3B, schemaSetsHdA, schemaSetsHdB,
schemaDd1A, schemaDd1B, schemaDd2A, schemaDd2B, schemaDd3A, schemaDd3B, schemaSetsDdA, schemaSetsDdB,
schemaMix11A, schemaMix11B, schemaMix12A, schemaMix12B, schemaMix13A, schemaMix13B, schemaSetsMix1A, schemaSetsMix1B,
schemaMix21A, schemaMix21B, schemaMix22A, schemaMix22B, schemaMix23A, schemaMix23B, schemaSetsMix2A, schemaSetsMix2B,
poules.pouleId, poules.pouleLetter
FROM `schema`
INNER JOIN poules ON schema.schemaPouleId = poules.pouleId ".
$where."
ORDER BY `schemaId` ASC
En normaal is een beetje programmeur allergisch voor "select * from" (m.n. dat sterretje), maar ik vermoed dat het in dit geval toch wel handiger is:
Code (php)
1
2
3
4
5
2
3
4
5
SELECT schema.*, poules.pouleId, poules.pouleLetter
FROM `schema`
INNER JOIN poules ON schema.schemaPouleId = poules.pouleId ".
$where."
ORDER BY `schemaId` ASC
FROM `schema`
INNER JOIN poules ON schema.schemaPouleId = poules.pouleId ".
$where."
ORDER BY `schemaId` ASC
Meestal is het trouwens handiger om je datum opmaak gewoon in PHP te doen, dan kun je tot die tijd nog met een "goede" datum werken (sorteren, omzetten, enz).
@Rob. Ik sla zowiezo geen persoonlijke data op. Dat is is nl niet relevant.
Maar hier dan de uitleg van de velden:
schemaId spreekt voor zich..
schemaTeamA = Naam team A
schemaTeamB = Naam team B
schemaUitslagA = totaal teamuitslag team A (Dit zou dus berekend kunnen worden. Som van de uitkomst SchemaSets??A)
schemaUitslagB = totaal teamuitslag team B (Dit zou dus berekend kunnen worden. Som van de uitkomst SchemaSets??B)
--------------------------------------
schemaHd1A = uitslag HD team A set 1
schemaHd1B = uitslag HD team B set 1
schemaHd2A = uitslag HD team A set 2
schemaHd2B = uitslag HD team B set 2
schemaHd3A = uitslag HD team A set 3
schemaHd3B = uitslag HD team B set 3
schemaSetsHdA = score van de 3 gespeelde set (bij winst 1 punt, bij verlies 0. Dus niet de som van uitslagen.)
schemaSetsHdB = score van de 3 gespeelde set (bij winst 1 punt, bij verlies 0. Dus niet de som van uitslagen.)
-------------------------------------
Tussen de stippellijn wordt herhaald voor de Dd, Mix1 en Mix2
poules.pouleId, = spreekt voor zich. Het is ID veld van het poule tabel.
poules.pouleLetter = De Pouleletter waar de wedstrijd zich binnen heeft afgespeeld.
Dit is verklaring van de velden. en Guy.. jullie zijn voor mij de Masters hoor.. ik neem alles voor waar aan wat jullie zeggen en ik wil graag dingen anders doen hoor maar geen idee wat.
Dirk Huizinga op 14/10/2018 21:12:01:
dank jullie voor de reacties. begin wel achter mijn oren te krabben als ik het zo allemaal hoor. @Arien, ik snap niet helemaal je opmerking dat ik de kolommen in de database moet af laten hangen van aantallen. .... maar de kolommen die je noemt dat zijn de veldnamen waarin de uitslag wordt opgenomen.
De schema's kan je opslaan in een aparte tabel 'schema'. Daaraan koppel je de clubs. Je hebt dan een uit en thuis.
Terug naar de tekentafel voor een goede databaseopzet.
Quote:
De SQL injection snap ik al helemaal niet maar klink ernstig.. Maar ik wordt nu een beetje overspoelt met zaken die ik dus niet in het snotje heb...
Je invoer in je query is niet beveiligd net mysqli_real_escape_string().
Nu kan iedereen de query via de URL manipuleren.
Gewijzigd op 14/10/2018 21:32:18 door - Ariën -
begin een donkerbruin vermoeden te krijgen dat ik een foutieve weg ben ingeslagen.. Wat zou een logische eerste stap zijn?....
Helpt het als ik mijn DB opbouw toon:
- verenigingen
verenigingId
verenigingNaam
verenigingAdres
verenigingPostcode
verenigingPlaats
verenigingTelefoon
verenigingWebsite
verenigingLogo
verenigingCp
verenigingEmailCp
verenigingMobielCp
verenigingTelefoonCp
verenigingInfo
verenigingTeamId
- teams
teamId
teamNaam
teamCp CP = contactpersoon
teamEmailCp
teamMobielCp
teamTelefoonCp
teamStatus
teamInfo
teamVerenigingId
teamPouleId
- poules
pouleId
pouleLetter
- schema
schemaId
schemaSpeeldatum
schemaTeamAId
schemaTeamBId
schemaPouleId
schemaHd1A
schemaHd2A
schemaHd3A
schemaHd1B
schemaHd2B
schemaHd3B
schemaSetsHdA
schemaSetsHdB
schemaDd1A
schemaDd2A
schemaDd3A
schemaDd1A
schemaDd2A
schemaDd3A
schemaSetsDdA
schemaSetsDdB
schemaMix11A
schemaMix12A
schemaMix13A
schemaMix11A
schemaMix12A
schemaMix13A
schemaSetsMix1A
schemaSetsMix1B
schemaMix21A
schemaMix22A
schemaMix23A
schemaMix21A
schemaMix22A
schemaMix23A
schemaSetsMix2A
schemaSetsMix2B
schemaUitslagA
schemaUitslagB
- gebruikers
gebruikerId
gebruikerNaam
gebruikerEmail
gebruikerWachtwoord
gebruikerStatus
gebruikerDatum
Maar wat plaats je voor inhoud in die verschillende schema velden, en wat is SchemaDd,schemaHd, schemaSetsMix, en schemaMix? Hier valt zeker een hoop uit te splitsen.
als voorbeeld
in de velden:
schemaHd1A uitslag 1e set team A
schemaHd2A uitslag 2e set team A
schemaHd3A uitslag 3e set team A
schemaHd1B uitslag 1e set team B
schemaHd2B uitslag 2e set team B
schemaHd3B uitslag 3e set team B
schemaSetsHdA # gewonnen sets team A
schemaSetsHdB # gewonnen sets team B
al deze velden bevatten een numeriek waarden.
ik zou niet weten hoe ik dit verder moet uitsplitsen
Google anders eens naar 'wedstrijd schema's SQL' op Google. Er valt een hoop over te lezen.
Gewijzigd op 14/10/2018 22:15:25 door - Ariën -
ben duidelijk niet op de goede weg... en ik waardeer alle opmerkingen hoor maar het het heeft voor mij een te hoog 'wiskunde' gehalte...
ik hoop dat iemand meeleest en
Toevoeging op 14/10/2018 22:16:48:
me wegwijs wil maken en de stappen kan toeilchte die ik moet gaan zetten... die hoeft natuurlijk niet helemaal voor niks hoor. Je zou er een paar ouwe mensies mee helpen ;-) die graag een potje tennis spelen..
Google anders eens naar 'wedstrijd schema's SQL' op Google. Er valt een hoop over te lezen. Ook het genoemde artikel over Databasenormalisatie is handig om door te lezen.
Voor de ranking tel je dan gewoon de punten in die kolom op voor elk team.
Code (php)
1
2
3
4
5
2
3
4
5
select teams.*,
(select sum(schemaUitslagA) from schema where schemaTeamA = team.teamId) +
(select sum(schemaUitslagB) from schema where schemaTeamB = team.teamId) as score
from teams
order by score desc
(select sum(schemaUitslagA) from schema where schemaTeamA = team.teamId) +
(select sum(schemaUitslagB) from schema where schemaTeamB = team.teamId) as score
from teams
order by score desc
Ik tel dus de totaal score op voor het geval het team "A" is, en voor het geval ze "B" zijn. Vervolgens sorteer ik op die (totaal) score = de ranking (?).
Wat Ariën bedoelt is de data wat verder uit splitsen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
schema:
- schemaId
- schemaTeamAId
- schemaTeamBId
- schemaUitslagA
- schemaUitslagB
en dan in een aparte tabel "games"
- gameId
- gameSchemaId //verwijzing naar bovenstaande tabel
- gameType //type spel: Hd,Dd,X1,X2
- gameSetsA //voorheen dus schemaSetsHdA varianten
- gameSetsB //dito voor B
en dan nog weer een aparte tabel "sets"
- setId
- setGameId //verwijzing naar bovenstaande tabel
- setNummer //1,2 of 3
- setUitslagA //voorheen dus schemaHd1A varianten
- setUitslagB //dito voor B
- schemaId
- schemaTeamAId
- schemaTeamBId
- schemaUitslagA
- schemaUitslagB
en dan in een aparte tabel "games"
- gameId
- gameSchemaId //verwijzing naar bovenstaande tabel
- gameType //type spel: Hd,Dd,X1,X2
- gameSetsA //voorheen dus schemaSetsHdA varianten
- gameSetsB //dito voor B
en dan nog weer een aparte tabel "sets"
- setId
- setGameId //verwijzing naar bovenstaande tabel
- setNummer //1,2 of 3
- setUitslagA //voorheen dus schemaHd1A varianten
- setUitslagB //dito voor B
Dit maakt je data gestructureerder. En mocht je bijvoorbeeld een keer meer dan 3 sets spelen (volgens mij doen de pro's dat wel), dan hoef je niet weer een sloot extra kolommen aan je tabel toe te voegen, maar nummer je gewoon je setNummer door. Effectief sla je dus dezelfde data op, maar met wat meer structuur, en wat minder "in de breedte", en wat minder "groeiproblemen" als er een keer wat wijzigt.
Gewijzigd op 14/10/2018 22:27:19 door Rob Doemaarwat
Onwijs bedankt voor de toelichting. Als ik het zo lees kan ik het een beetje begrijpen.. .Echter het omzetten hoe ik die moet verwerken. dan blokt het bij me...
Ik denk dat ik er beter aan doe om te stoppen voor deze (nu blijkt) een veel te hoge gegrepen klus... Ik denk dat ze maar moeten overstappen naar een Excel sheetje of zo ...
Eer ik op het nivo ben dat ik kan toepassen wat jullie me nu allen vertellen ben ik een tijdje verder en die is er niet. Jammer maar helaas...
ik zal ze het nieuws overbrengen
Toen hebben ze mij benaderd. Ik heb de ruimte niet om het via de methode te doen. Nu heb ik wel de nodig HTML ervaring maar daar kom ik er niet mee.. HEb ook wel de nodige Joomla ervaring maar dat is wel heel erg overkill. Nu kan ik beetje php lezen.. Begrijp redelijk de codering wel als ik het lees maar ben dus klaarblijkelijk nog niet toe om zelfstandig wat te bouwen... Is er misschien iemand die bereid is om mij hierbij te helpen. Hier mag best een kleine vergoeding tegenover staan hoor als het maar niet zo heel veel is. Ze zijn nl total non-profit en alles moet uit eigen zak betaald worden.
Hoop op positieve reacties.
https://www.toernooi.nl/ (kant & klaar - tegen een kleine vergoeding)?
Is dit niks: Hoi Rob... thnx.. Daar werk ik al wee voor de eigen club. Is behoorlijk complicated.. vooral voor die oudjes. Deze optie is besproken. Daarnaast zit daar een jaarlijkse vergoeding aan vast zie je verplicht bent af te nemen. Anders houdt het op met werken. Het wordt bij officiele knltb verenigingen wel vaker gebruikt.
Heeft Toernooi.nl geen API zodat je dit kan integreren in je eigen site? Dan kan je het minder 'complicated' maken voor de oudjes.
helaas...