Competitie met Pijltjes

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jelle Botman

Jelle Botman

04/05/2015 14:43:59
Quote Anchor link
Ik zoek naar een code in mysql die kan checken of de plaats van het team is gestegen, gelijk of gedaald is.
want daarmee wil ik nadat er een update in de database is uitgevoerd pijltjes weergeven ( omhoog als positie is gestegen , omlaag als is gezakt en een streepje als de positie van het team gelijk is gebleven.
de code van de competitie zelf heb ik al.
Afbeelding
Afbeelding
dit is de bedoeling!
kan iemand mij hiermee helpen?
 
PHP hulp

PHP hulp

25/04/2024 21:36:33
 
Henk de Vriep

Henk de Vriep

04/05/2015 14:47:58
Quote Anchor link
Ik zou het volgende doen. Altijd de laatst gegenereerde positie in de database opslaan. En dan bij een update checken of de nieuwe positie hoger, lager of gelijk is en op basis daarvan een pijltje weergeven. Daarna de nieuwe positie opslaan als laatste.
 
Jelle Botman

Jelle Botman

04/05/2015 14:49:55
Quote Anchor link
daar had ik niet aan gedacht zeg! XD
maar mijn vraag is hoe ik dat dan moet doen, het principe begrijp ik, maar hoe en welke code moet je gebruiken?
 
Henk de Vriep

Henk de Vriep

04/05/2015 16:28:37
Quote Anchor link
Dat kan ik zonder je huidige code niet zeggen, heb je een voorbeeld van hoe je nu de standen ophaalt / berekent?
 
John D

John D

04/05/2015 16:39:30
Quote Anchor link
Ik zou dat automatiseren met een database trigger op de update. Middels een database trigger is de :old en :new waarde bekend en bepaal je snel in de trigger code of het up of down moet zijn ten op zichte van de vorige waarde. Ik heb nog nooit een dergelijke trigger in MySQL gebouwd, wel in Oracle.
Uitvoering met php, eerst de waarde ophalen en dan uitrekenen of het up of down is en dan weer updaten is nodeloos extra werk. Misschien kan Ger iets van triggers zeggen?
Gewijzigd op 04/05/2015 16:42:20 door John D
 
Eddy E

Eddy E

04/05/2015 16:49:13
Quote Anchor link
Ik zou gewoon 'alle' scores opslaan. Gewoon met een datum erbij.
Dan kan je on-the-fly berekenen wat de vorige stand was en de huidige stand. Zo krijg iedereen (elke bezoeker) een jusit pijltje te zien.
Anders maar 1x, want dan is de 'stijging' al verwerkt.
 
Jelle Botman

Jelle Botman

04/05/2015 16:55:58
Quote Anchor link
hoe kan je code posten?
 
John D

John D

04/05/2015 18:19:52
Quote Anchor link
@Eddy: Nee, on the fly kost tijd en verder hangt het af wat TS qua presentatie doelstelling heeft. Wanneer alleen zichtbaar moet zijn dat de club of het team (deze week, dit weekend, deze maand) stijgende is kan je dit gewoon als status opslaan. En dat zie je dan niet 1x maar steeds wanneer je het team toont.
@Jelle: wat bedoel je met: hoe kan je code posten?
Gewijzigd op 04/05/2015 18:23:17 door John D
 
Thomas van den Heuvel

Thomas van den Heuvel

04/05/2015 21:19:47
Quote Anchor link
@Eddy E, @John D: of een combinatie van beide. Als je alles opslaat heb je een historie. Als je in een extra veldje het verschil bijhoudt (gestegen/gelijk/gezakt) hoef je deze slechts 1x te berekenen. Dit is wel redundante informatie natuurlijk, maar scheelt weer (wat) rekentijd.

Je kunt code plaatsen door deze in/tusen [code]...[/code] blokken te zetten.
Gewijzigd op 04/05/2015 21:20:50 door Thomas van den Heuvel
 
Jelle Botman

Jelle Botman

05/05/2015 12:07:44
Quote Anchor link
er moet toch een standaart code zijn om zoiets te doen? dan kan ik het zelf in mijn code stoppen
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/05/2015 20:08:07
Quote Anchor link
Wellicht is het handig dat je laat zien wat je nu hebt, en welke tabellen (met indeling) van toepassing zijn.

John D op 04/05/2015 16:39:30:
Misschien kan Ger iets van triggers zeggen?


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
DELIMITER $$

CREATE TRIGGER upd_ranking BEFORE UPDATE ON tabel_naam
FOR EACH ROW
BEGIN
    IF NEW.ranking > OLD.ranking THEN
        SET NEW.status = 1;
    ELSEIF  NEW.ranking = OLD.ranking THEN
        SET NEW.status = 0;
    ELSE
        SET NEW.status = -1;
    END IF;
END$$

DELIMITER;
 
Aad B

Aad B

05/05/2015 21:43:28
Quote Anchor link
Jelle Botman op 05/05/2015 12:07:44:
er moet toch een standaard code zijn om zoiets te doen? dan kan ik het zelf in mijn code stoppen
op basis van de inhoud uit het voorbeeld van Ger toon je het bijbehorende pijltje of een -
Bedoel je met een "standaard code" een html code voor de pijltjes? Ik vrees dat je gewoon je gifjes moet gebruiken.
Gewijzigd op 05/05/2015 21:46:10 door Aad B
 
Jelle Botman

Jelle Botman

06/05/2015 11:57:04
Quote Anchor link
nee ik bedoel waar haalt het systeem NEW.ranking vandaan? hoe weet sql nou hoeveelste elk team staat?
Het if-statement snap ik maar wat ik eigenlijk wil weten is hoe ik de ranking kan ophalen voor elk team.
is daar een standaard code voor om de positie van elk team op te halen?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

06/05/2015 12:13:16
Quote Anchor link
Ik heb in mijn vorige reactie ook al gevraagd om meer informatie.
Welke gegevens sla je op, waarvan is de positie allemaal afhankelijk?
 
Jelle Botman

Jelle Botman

06/05/2015 13:36:12
Quote Anchor link
de ranking is gebaseerd op aantal punten behaald.
ik geef de resultaten van de query ook weer door ORDER BY Punten.


Toevoeging op 06/05/2015 13:40:47:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
lol
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

06/05/2015 14:19:25
Quote Anchor link
Als punten een kolom is in de database:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT
    team,
    punten,
    FIND_IN_SET(punten, (SELECT punten FROM teams ORDER BY punten DESC)) rank
FROM
    teams
Gewijzigd op 06/05/2015 14:19:43 door Ger van Steenderen
 
Jelle Botman

Jelle Botman

06/05/2015 15:24:59
Quote Anchor link
de tabel bestaat uit:

TeamID
Naam
Gespeeld
Punten
Winst
Gelijk
Verlies
Goals voor
Goals tegen
Logo
Positie


hoe kan ik de positie van het team checken?
de kolom positie is nog leeg omdat ik niet weet hoe ik de positie kan checken
Gewijzigd op 06/05/2015 15:27:22 door Jelle Botman
 
John D

John D

06/05/2015 17:49:24
Quote Anchor link
==>> omhoog als positie is gestegen , omlaag als is gezakt en een streepje als de positie van het team gelijk is gebleven
Geeft aan dat je wil vergelijken tussen de huidige en vorige positie. In principe kan dat op basis van de trigger die Ger heeft aangegeven. (zie ranking als positie). Aansluitend is er dan wel de vraag: hoe wordt de ranking/positie bepaald op het moment dat je het record of meerdere records update. Wordt de ranking bijvoorbeeld 1x per week bepaald nadat alle teams gespeeld hebben? Om je verder te helpen is meer informatie nodig. Wanneer de ranking 1x per week wordt bepaald over een hele tabel doet de trigger de rest. De trigger maakt dan de up/down pijltjes erbij.
Gewijzigd op 06/05/2015 17:51:59 door John D
 
Jelle Botman

Jelle Botman

06/05/2015 18:30:32
Quote Anchor link
als ik code probeer te posten:
"You don't have permission to access /forum/reply/97838/ on this server."

in mijn code doe ik uiteraard als team 1 gewonnen heeft = punten +3
verloren +0 en gelijk beide teams +1


elke keer als ik een uitslag van een wedstrijd heb ingevoerd moet de ranking worden geupdate voor die wedstrijd en daarnaast een pijltje weergeven (omhoog als je in positie bent gestegen, omlaag als je bent gezakt en een streepje als je op dezelfde positie blijft.)
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

06/05/2015 19:41:11
Quote Anchor link
Dus dan wordt het lastig niet met een kolom in de tabel.
Want veronderstel het volgende:

Team A staat op derde plaats met 56 punten, en op de 4de plaats staat team X met 55 punten.
Je voert een uitslag in voor team X + 3 punten, dan geeft het aan dat team X gestegen is maar dat zou ook betekenen dat team A een positie gedaald is. Als je daarna hetzelfde hebt voor team A is het weer andersom, terwijl ze eigenlijk gelijk zouden moeten blijven.

Of zie ik dat verkeerd?
 
Jelle Botman

Jelle Botman

07/05/2015 11:12:03
Quote Anchor link
je hebt inderdaad gelijk, misschien zou het dan handig zijn om elke speelronde de pijltjes te doen, als alle wedstrijden zijn gespeeld
 

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.