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.


dit is de bedoeling!
kan iemand mij hiermee helpen?
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.
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?
Dat kan ik zonder je huidige code niet zeggen, heb je een voorbeeld van hoe je nu de standen ophaalt / berekent?

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?
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.
hoe kan je code posten?
@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?
@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.
er moet toch een standaart code zijn om zoiets te doen? dan kan ik het zelf in mijn code stoppen
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?



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;




Reageren