stand berekenen

Door Robert Deiman, 17 jaar geleden, 4.217x bekeken

Ik heb dit script gebruikt op de site die ik voor de voetbal bijhoudt. Omdat ik niet de enige ben met rechten heb ik het zo gedaan dat een bepaalde wedstrijd maar 1 keer per seizoen voor kan komen.
Ik had het eerst zo dat wanneer je een uitslag invoerde, dat de stand werdt berekend, maar wanneer je dan een uitslag aan zou passen, dan klopte de hele stand niet meer. (is ook wel wat voor te maken, maar dit is denk ik handiger)

Op de manier zoals het nu is is het gemakkelijk om een team bijvoorbeeld uit de competitie te halen (indien nodig natuurlijk :P). Ik weet niet wie er nog meer zelf een sportsite met een eigen lijst uitslagen en een eigen stand (komt zo nu en dan wel eens voor dat die stand actueler is dan op knvb :P) bijhouden, maar ik wil het wel met jullie delen hoe dat gaat.

Deze pagina kan je includen in de pagina waarin je de stand weergeeft, dan wordt die elke keer wanneer iemand kijkt ververst. Je kan hem ook ergens neerzetten en na het vullen van een paar nieuwe uitslagen even openen.

CREATE TABLE `wedstrijden` (
`id` tinyint(4) NOT NULL auto_increment,
`thuis` varchar(15) NOT NULL default '',
`uit` varchar(15) NOT NULL default '',
`doelthuis` tinyint(2) default NULL,
`doeluit` tinyint(2) default NULL,
`datum` date NOT NULL default '0000-00-00',
PRIMARY KEY (`id`)
) ;

CREATE TABLE `stand` (
`id` smallint(6) NOT NULL auto_increment,
`team` varchar(15) NOT NULL default '',
`punten` tinyint(4) NOT NULL default '0',
`wedstrijden` tinyint(2) NOT NULL default '0',
`winst` tinyint(2) NOT NULL default '0',
`gelijk` tinyint(2) NOT NULL default '0',
`verlies` tinyint(2) NOT NULL default '0',
`voor` tinyint(3) NOT NULL default '0',
`tegen` tinyint(3) NOT NULL default '0',
PRIMARY KEY (`id`)
) ;


Je kan als je dat wilt, (ik heb het zo gedaan omdat het dan gemakkelijker is de teamnaam in de pagina waar de stand in staat weer te geven) ipv WHERE team= werken met WHERE id is, moet je alleen ff de variabele ook aanpassen zodat die variabele de id geeft die bij het team hoort die in de tabel met de stand staat.

Gesponsorde koppelingen

PHP script bestanden

  1. stand-berekenen

 

Er zijn 16 reacties op 'Stand berekenen'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen


17 jaar geleden
 
0 +1 -0 -1
Je hebt de database structuur niet weergegeven, dus als iemand het script wil gebruiken, zal hij het niet kunnen omdat ie niet weet hoe de tabel in elkaar moet zitten!

En bij $*_SQL_update kan je beter de waardes tussen de quotes zetten, variablen erbuiten houden of met { en } erin en spaties gebruiken. Zoiets dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
//eerste update query
thuis_SQL_update="UPDATE stand SET wedstrijden = 0, punten = 0, voor = 0, tegen = 0, winst = 0 gelijk = 0, verlies = 0 WHERE id = '{$thuis['id']}'";

//tweede...
$thuis_SQL_update="UPDATE stand SET wedstrijden = wedstrijden+1,
punten = punten+{$puntenthuis}, voor = voor+{$thuisdoel}, tegen = tegen+{$uitdoel}, winst = winst+{$thuiswinst}, gelijk = gelijk+{$gelijk},verlies = verlies+{$uitwinst} WHERE team='{$thuisteam}'"
;

//en derde
$uit_SQL_update="UPDATE stand SET wedstrijden = wedstrijden+1, punten = punten+{$puntenuit}, voor = voor+{$uitdoel}, tegen = tegen+{$thuisdoel}, winst = winst+{$uitwinst}, gelijk = gelijk+{$gelijk}, verlies = verlies+{$thuiswinst} WHERE team='{$uitteam}'";
?>
Robert Deiman
Robert Deiman
17 jaar geleden
 
0 +1 -0 -1
Ik heb wel laten zien hoe die DB eruit ziet, maar ik zal er voor wat meer duidelijkheid ook een sql_dump schema'tje bijzetten.


17 jaar geleden
 
0 +1 -0 -1
Je moet de veldtypes weten. Je moet dus de complete query geven van de DB tabel.
Robert Deiman
Robert Deiman
17 jaar geleden
 
0 +1 -0 -1
hoe bedoel je dat sebastiaan? Ik heb er ondertussen al een DB query in staan van de tabel stand en van de tabel wedstrijden
Han eev
Han eev
17 jaar geleden
 
0 +1 -0 -1
Wat heb je hier aan....
Alleen als je er echt naar op zoek bent *-)
Nouwjah tis wel leuk..!
Robert Deiman
Robert Deiman
17 jaar geleden
 
0 +1 -0 -1
Haha, staat er toch ook bij:
Ik weet niet wie er nog meer zelf een sportsite met een eigen lijst uitslagen en een eigen stand (komt zo nu en dan wel eens voor dat die stand actueler is dan op knvb :P) bijhouden, maar ik wil het wel met jullie delen hoe dat gaat.

haha, het is dus eigenlijk inderdaad bedoelt voor een sportsite. Het leuke is wel dat het te gebruiken is voor verschillende sporten, (alleen de puntaantallen aanpassen indien nodig)
Alfred -
Alfred -
17 jaar geleden
 
0 +1 -0 -1
Quote:
// zorgen dat voor de nieuwe berekening alles weer op 0 wordt gezet.
$SQL_thuis="SELECT id,team FROM stand";
$thuis_resultaat=mysql_query($SQL_thuis);
while ($thuis=mysql_fetch_array($thuis_resultaat)){
thuis_SQL_update="UPDATE stand SET wedstrijden = 0, punten = 0, voor = 0, tegen = 0, winst = 0 gelijk = 0, verlies = 0 WHERE id = '{$thuis['id']}'";
$thuis_update=mysql_query($thuis_SQL_update);
}


Mist hiet geen $ bij thuis_SQL_update?

En waarom een ganse loop om elk record te resetten?
Waarom niet gewoon
$thuis_SQL_update="UPDATE stand SET wedstrijden = 0, punten = 0, voor = 0, tegen = 0, winst = 0 gelijk = 0, verlies = 0";
?
Robert Deiman
Robert Deiman
17 jaar geleden
 
0 +1 -0 -1
Jah, je hebt gelijk Rafael, dat kan ook op jouw manier en die $ is een foutje met het kopieren denk ik (hij draait bij mij al).


17 jaar geleden
 
0 +1 -0 -1
Quote:
hoe bedoel je dat sebastiaan? Ik heb er ondertussen al een DB query in staan van de tabel stand en van de tabel wedstrijden
Toen ik postte zag ik dat nog niet ;)
Mahmood
Mahmood
16 jaar geleden
 
0 +1 -0 -1
Werkti goed mensen ?? :D
Frank -
Frank -
16 jaar geleden
 
0 +1 -0 -1
Het datamodel is niet goed. Hierdoor loop je grote kans op een corrupte database.

De doelpunten worden in beide tabellen opgeslagen, is nergens voor nodig. Verder heb je diverse kolommen opgenomen, die berekende gegevens bevatten. Je wint een wedstrijd wanneer je meer doelpunten maakt dan de ander. Winst hoef dus niet nogmaals op te slaan. Dat geldt uiteraard ook voor verlies en gelijk spel. Het aantal doelpunten voor en tegen, zijn gewoon de som van de doelpunten die tijdens de wedstrijden zijn gemaakt. Wederom iets wat je niet hoeft op te slaan.

Alle berekende gegevens, kun je met de juiste queries zo opvragen. Daar komt geen letter php aan de pas.
Robert Deiman
Robert Deiman
16 jaar geleden
 
0 +1 -0 -1
@Frank

Dat heb ik ondertussen ook bijgeleerd, dat wist ik nog niet op het moment dat ik het maakte. Ik ben met de hele voetbalsite opnieuw begonnen, en dit is een van de aanpassingen die in de database doorgevoerd gaan worden.
Normaliseren enzo kende ik toen nog niet zo goed, begon er net mee, en was allang blij dat het werkte.
Frank -
Frank -
16 jaar geleden
 
0 +1 -0 -1
Wanneer je iets meer dan 1x opslaat, is dat vrijwel altijd fout. Dit geldt ook berekende/afgeleide gegevens. Die sla je niet op, die bereken je op het moment dat je het nodig hebt.

Er zijn uiteraard uitzonderingen. Bijvoorbeeld een verkoopprijs sla je 1x op, maar de prijs waarvoor een artikel is verkocht, sla je ook op. Een verkoopprijs kan veranderen, een prijs waarvoor een artikel op de factuur is gezet, veranderd niet meer.
Robert Deiman
Robert Deiman
16 jaar geleden
 
0 +1 -0 -1
Ik weet het ondertussen Frank.. Heb het nog niet aangepast, omdat ik sowiezo al helemaal opnieuw ging beginnen. Ik volg de meeste topics hier wel, al reageer ik niet overal, en ik heb ook de tutorial over normaliseren gedaan en gelezen.
Veel wist ik niet toen ik de tabel in elkaar zette, maar veel heb ik wel al bijgeleerd. Het is wel goed dat je het hier even aanhaald, want mensen die het gebruiken willen, kunnen het beter wel goed hebben ;)
KJ Da
KJ Da
11 jaar geleden
 
0 +1 -0 -1
Heb je de script nog bijgewerkt? Ik ben reuze benieuwd naar de nieuwe script.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Pim -
Pim -
11 jaar geleden
 
0 +1 -0 -1
Zoals je (had kunnen) kan zien is dit vijf jaar oud en dus zwaar verouderd. Niet gebruiken.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. stand-berekenen

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

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.