11.022015

HowTo: Fussball Ergebnisverwaltung

Heute richte ich mich an all diejenigen, die Fussball lieben und es gerne zusammen mit Kumpels zocken.

Spannende Spiele bis zur letzten Minute und dann doch wieder einen Fehler in der Abwehr gehabt, oder den lucky Punch vollbracht?

Wer ist aber über all die packenden Spiele der bessere von euch?Eine Möglichkeit dies herauszufinden, möchte ich euch heute vorstellen. Was ihr dazu benötigt?

Einfach nur ein paar einfache Werkzeuge der Webentwicklung wie PHP, MySQL und Bootstrap.

Als erstes erstellen wir uns in MySQL die notwendigen Tabellen, damit wir zum einen die Spieler vorliegen haben

CREATE TABLE IF NOT EXISTS `opponents` (
   `opponent_id` int(11) NOT NULL AUTO_INCREMENT,
   `opponent` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
   PRIMARY KEY (`opponent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

und zum Anderen die Spielpaarungen speichern können

CREATE TABLE IF NOT EXISTS `fixtures` (
   `fixtures_id` int(11) NOT NULL AUTO_INCREMENT,
   `home_opponent_id` int(11) NOT NULL,
   `home_goals` int(11) NOT NULL DEFAULT 0,
   `away_opponent_id` int(11) NOT NULL,
   `away_goals` int(11) NOT NULL DEFAULT 0,
   `created` timestamp NULL DEFAULT NULL,
   `modified` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
   PRIMARY KEY (`fixtures_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
ALTER TABLE `fixtures` ADD INDEX(`home_opponent_id`);
ALTER TABLE `fixtures` ADD INDEX(`away_opponent_id`);
ALTER TABLE `fixtures` ADD CONSTRAINT `fixtures_ibfk_1` FOREIGN KEY (`home_opponent_id`) REFERENCES `opponents` (`opponent_id`) ON DELETE CASCADE;
ALTER TABLE `fixtures` ADD CONSTRAINT `fixtures_ibfk_2` FOREIGN KEY (`away_opponent_id`) REFERENCES `opponents` (`opponent_id`) ON DELETE CASCADE;

Damit haben wir dann schonmal die erste Grundlage geschaffen, um die Spielpaarungen speichern zu können.

Nun brauchen wir ein Interface, um die Spielpaarungen eingeben bzw. bearbeiten zu können.

Hierfür verwenden wir Bootstrap. Der Vorteil von Bootstrap liegt hier klar darin, dass es zum einen gut Dokumentiert ist und mit seiner Hilfe recht schnell ein gut aussehendes und responsives Interface geschaffen werden kann. Also auch ideal für diejenigen, die sich nicht alltäglich mit der Erstellung von Userinterfacen beschäftigen ;-)

So könnte die Maske für die Aufnahme/Bearbeitung von Ergebnissen aussehen:add_match Mit PHP realisiert man nun die Logik, um die Ergebnisse zu Speichern bzw. zu Aktualisieren. Zusätzlich rate ich dazu, dass man auch noch die eingegebenen Daten validieren sollte. Vielleicht hat ihr in euren Reihen auch den ein oder anderen Spassvogel, dass mal testen will, welche Ergebnisse so möglich sind ;-)

 

Der Rest ist dann ein simples INSERT- bzw UPDATE-Statement.

INSERT INTO fixtures (created, home_opponent_id, home_goals, away_opponent_id, away_goals) VALUES (now(),HOME_OPPONENT_ID,HOME_GOALS,AWAY_OPPONENT_ID,AWAY_GOALS);

bzw.

UPDATE fixtures SET home_goals = HOME_GOALS, away_goals = AWAY_GOALS, modified=now() WHERE fixtures_id = FIXTURES_ID;

 

Zum Schluss erstellen wir uns jetzt noch eine Übersichtsseite der bisher abgehaltenen Spielpaarungen, die wir uns zuvor mittels PHP aus der Datenbank ausgelesen haben

match_plan

Mit dieser Übersicht schließe ich auch meinen ersten Teil "Ergebnisverwaltung" ab. Den interessanten Teil, die Auswertung der Spielpaarungen, werde ich in einem weiteren Blog separat vorstellen.