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...
@Rob gaf je al een goede voorzet: sla de informatie op zoals deze ook in de realiteit voorkomt: games, sets en matches.
Theoretisch gezien hoef je enkel de informatie van de games op te slaan, omdat de rest te berekenen is, maar dat maakt e.e.a. wel complexer.
In zekere zin is de informatie van de sets al redundant, deze is immers afleidbaar.
Op eenzelfde manier zou je ook de informatie wie een match gewonnen heeft apart kunnen opslaan, je hoeft deze dan maar één keer te bepalen/berekenen in plaats van elke keer opnieuw als je dit gegeven nodig hebt.
Vervolgens kun je hiermee makkelijker verder rekenen, omdat je eerder al alle relevante tussen- en eindresultaten waarin je geinteresseerd bent hebt berekend en opgeslagen.
Ik denk dus dat als je meer "afleidbare" informatie redundant/tussentijds opslaat, de rest ook makkelijker wordt.
Zoals altijd: verdeel en heers.
Je zou dus bijvoorbeeld een kolom "winnaar" kunnen toevoegen aan de tabel "matches". Vraag jezelf gewoon af wat moeite kost om (achteraf) te berekenen, en sla dit gewoon apart op in een of andere kolom.
Dat snap ik, maar reden te meer om stapsgewijs naar een oplossing te werken, in plaats van in 1x naar het eindresultaat te willen, zonder te weten hoe.
@Dirk: Zie je kans om je code (wat je tot nu toe hebt) op GitHub of zoiets te gooien, of een ZIP die we ergens kunnen downloaden (Google docs, WeTransfer, enz) (privé bericht mag ook). Dan kan ik er eens naar kijken. Ik heb het idee dat je het meeste werk al gedaan hebt (invoeren van de setstanden, enz), en ook in je datamodel al ruimte hebt om de (berekende) uitslagen op te slaan. We kunnen d'r nog wel een uur over lullen, maar misschien is het met 5 minuten op te lossen.
Een complete dump van je datamodel zou ook handig zijn.
Topic mag voor wat nu wel gesloten worden... het is uiteindelijk een pracht resultaat geworden. Alle lof naar Rob. hij dingen toegelicht, uitgelegd en geholpen als ik iets snapte (was/is best veel). Maar er zat wel een hele leercurve voor me.. en dat alleen al was de moeite waard. Ron thnx, man
De query is wel zo'n beetje geworden wat ik op 14/10/2018 22:25:58 al aangaf, alleen nog met een extra kolom "aantal gespeelde wedstrijden" en een join naar de "poules" tabel voor de poule letter.
SELECT t.teamNaam,p.pouleLetter,(
SELECT count(*) FROM `schema`
WHERE schemaPouleId = t.teamPouleId
AND (schemaTeamA = t.teamNaam OR schemaTeamB = t.teamNaam)
AND (schemaUitslagA > 0 OR schemaUitslagB > 0) //anders is de wedstrijd nog niet gespeeld
) AS aantal,
ifnull((SELECT SUM(ifnull(schemaUitslagA,0)) FROM `schema` WHERE schemaPouleId = t.teamPouleId AND schemaTeamA = t.teamNaam),0) +
ifnull((SELECT SUM(ifnull(schemaUitslagB,0)) FROM `schema` WHERE schemaPouleId = t.teamPouleId AND schemaTeamB = t.teamNaam),0) AS score
FROM teams t
JOIN poules p ON p.pouleId = t.teamPouleId
" . $where . "
ORDER BY pouleLetter ASC, score DESC
De team <-> schema koppeling is nu nog (steeds) op teamNaam, maar dat moet "ooit" (v 2.0) het teamId worden. Uiteraard kan dit allemaal nog veel mooier worden ingedeeld (over meerdere sub-tabellen), waardoor je ook flexibeler bent qua aantal wedstrijden (bijvoorbeeld ook enkelspel), of aantal sets - maar voor nu werkt dit.
De totaal-uitslag wordt gewoon in PHP berekend als de set-uitslagen worden ingevoerd/opgeslagen, en dan direct in de bestaande "multi-kolom" schema tabel opgeslagen (vandaar ook dat opslaan in de $_POST, zodat de rest van de code gewoon bleef werken zoals deze al deed toen de uitslag nog met de hand in aparte invoervelden moest worden ingevoerd):