Voetbalstand berekenen via MySQL

Status
Niet open voor verdere reacties.

Ruultje

Gebruiker
Lid geworden
16 okt 2007
Berichten
39
Ik zit met de handen in het haar vanwege het volgende probleem wat ik maar niet opgelost krijg. Ook Google biedt geen oplossing.

In ieder geval: voor een voetbalwebsite wil ik de resultaten van een voetbalclub. Hierin moet het aantal gespeelde wedstrijden staan (in zijn totaal, één voor de thuiswedstrijden en eentje voor de uitwedstrijden) met de daarbij behorende statistieken. Dus hoeveel gewonnen, gelijk, verloren, gescoorde doelpunten en tegentreffers.

Nu lukt het aantal gespeelde wedstrijden goed (klopt ook) maar de rest wil niet gaan lukken. Zo berekent hij niet het aantal winstpartijen etc. ook het aantal doelpunten lukt niet. Weet iemand wat ik verkeerd doe en heeft degene ook een eerste opzetje? Als ik al een kleine opzet heb moet het verder wel goed komen. Uiteindelijk zal er ook per tegenstander een tabel komen, maar daar kom ik dan wel verder uit (neem ik aan).

Ik heb zelf dit geprobeerd:

PHP:
<?php
$query = "SELECT *, COUNT(wedstrijd_id) AS 'aantal_duels', thuisclub, uitclub, thuisscore, uitscore FROM wedstrijden WHERE thuisclub = 83";
 $result = mysql_query($query)
            or die ("Er is een fout opgetreden");

 while ($row = mysql_fetch_array($result))
        {
		
				$winst = $row['thuisscore'] > $row['uitscore'];
				$gelijk = $row['thuisscore'] == $row['uitscore'];
				$verlies = $row['thuisscore'] < $row['uitscore'];
				
				$overwinning = $winst * 3;
				$gelijkspel = $gelijk * 1;
		
						
		$thuisduels = $row['aantal_duels'];
		$winstpartij = $thuisduels * $overwinning;
		$gelijkgespeeld = $thuisduels * $gelijkspel;
		
		$punten = $gelijkgespeeld + $winstpartij;
		
		echo $thuisduels;
		echo "<br>";
		echo $row['thuisscore'];
		}
?>

Wanneer ik echo $punten pak zet hij hetzelfde neer als bij $thuisduels.
thuisteam en uitteam worden gekoppeld aan een tabel teams.

Ik heb verder geen tabel 'stand' in veel voorbeelden kwam ik deze wel tegen, maar deze lijkt mij lastig omdat je dan meerdere tabellen dient te veranderen bij een wijziging. Dus de php code zal het moeten uitrekenen.
 
Laatst bewerkt door een moderator:
Ik denk dat je even terugmoet naar het tekenbord... :)

PHP:
$winst = $row['thuisscore'] > $row['uitscore'];

Dit is een vergelijking; $winst bevat dus een Boolean (TRUE of FALSE)

PHP:
 $overwinning = $winst * 3;

Je vermenigvuldigd die boolean met 3 (PHP staat dit toe)
$overwinning bevat nu dus 3 (als de wedstrijd gewonnen is) of 0 (als de wedstrijd niet gewonnen is)

Wanneer je nu naar de volgende rij gaat, wordt dit stuk opnieuw uitgevoerd. Dat betekend dat dus de huidige inhoud van $overwinning (en dus wat je zojuist berekend hebt) overschreven wordt met de punten van de daaropvolgende wedstrijd.

Hetzelfde gebeurd met gelijkspel punten; die worden ook steeds overschrijven.

Bij $winstpartij vermenidvuldig je $overwinning (die bevat 3, of 0, afhankelijk van wat de laatst genomen wedstrijd uitkomst was, omdat hij steeds overschreven wordt, met het aantal duels.

Bij $gelijkgespeeld hetzelfde; die is gelijk aan $gelijkspel (1 of 0) x het aantal duels; afhankelijk van de uitkomst van de laatste wedstrijd.

$punten zal dus idd aantal_duels OF aantal_duels x 3 OF 0 bevatten; afhankelijk van wat de laatste wedstrijd was.

Daarnaast krijg je waarschijnlijk steeds maar 1 rij terug, omdat je query een COUNT bevat, en daardoor alle resultaten groepeert; alle andere resultaten worden weggegooid. Dat is een standaard stukje gedrag van SQL. Je zult dus die COUNT moeten laten vallen.
 
Ik zal inderdaad nog eens teruggaan naar de tekentafel ;)

Had zelf ook al een idee dat hier totaal niks van klopte (daardoor kom ik er ook niet uit momenteel) . Hij berekende overigens maar één rij ja (de laatste). De count heb ik er in ieder geval uitgehaald.

Ik zal er nog eens naar gaan kijken. Bedankt voor de tips!
 
Succes ermee :)

Als je weer vast komt te zitten, dan horen we het wel ;)
 
Bedankt.

Heb nu wel iets dat werkt, maar dat is ook niet de juiste methode. In ieder geval wordt er wederom gewerkt met een count, hij telt dan wel alles goed (in deze) maar voor elk stukje heb ik een aparte query. Onder aan de pagina voeg ik dan alles samen. De berekeningen zijn verder wel goed. Maar het is, denk ik, een beetje dubbelop. Maar in ieder geval kan ik daaraan verder bouwen zodat het beter staat.

Eén voorbeeldje

PHP:
// Winstpartijen thuis
$query = "SELECT COUNT(wedstrijd_id) AS thuiswinst FROM wedstrijden WHERE thuisscore > uitscore AND thuisclub = 83";
 $result = mysql_query($query)
            or die ("Er is een fout opgetreden");

 while ($row = mysql_fetch_array($result))
 
        {
		
		$thuiszeges = $row['thuiswinst'];
		$thuiswinst = $thuiszeges * 3;
		$thuistwee = $thuiszeges * 2;
		}

Dit werkt dus wel (maar komt dus wel de count weer voor). Maar voor elk item maak ik dan hetzelfde. Alleen dan nog voor verlies, uitwinst etc. Dus bovenstaande is een stukje uit het script.

Dan heb ik verderop dit staan.

PHP:
// Berekeningen Thuis
$thuispunten = $thuiswinst + $thuisgelijk + $thuisverloren;
$thuistweepunten = $thuistwee + $thuisgelijk + $thuisverloren;
$thuissaldo = $thuisgescoord - $thuistegen;

Bij verlies heb ik bijvoorbeeld de soms verlies - verlies gemaakt zodat het op 0 punten komt. Maar zoals ik al zei denk ik dat hiervoor een betere methode is. Ik zal hierin dan ook verder jouw tips meenemen.

Zou ik er niet uitkomen dan laat ik het zeker weten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan