| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: OnlineLiga howto im Forum Code Kitchen, in der Kategorie Software Home; Anzeige hi, also ich habe mir bereits ein paar Gedanken gemacht wie ich eine OnlineLiga (Rennliga) programmiertechnisch am Sinnvollsten gestalte. ...
![]() |
| | #1 (permalink) |
| Anzeige hi, also ich habe mir bereits ein paar Gedanken gemacht wie ich eine OnlineLiga (Rennliga) programmiertechnisch am Sinnvollsten gestalte. Nun hab ich folgendes Problem. Mysql: Tabelle "player_account" id, nickname, vehicleid, leagueid ( Da ein Fahrer nur in einer Liga aktiv mitfahren darf ist die Leagueid direkt hier eingetragen! ) Mysql: Tabelle "league" id, name, tracks, usw So nun soll ich die Tabelle "league" die Playerids rein. Dies könnte man zB so machen 3,6,3,7,12,65,43 und mit php könnte man diese Werte exploden. Nun soll aber auch die Punktezahl der Fahrer eingetragen werden und dazu eine Übersicht der letzten Rennen wer welchen Platz hatte usw. Mein Prob ist das ich nur ungern die explode Funktion nutzen möchte. | |
| | |
| | #2 (permalink) |
| Hast du ne persönliche Abneigung gegen explode? Als ich damals ne Liga programmiert hab, hab ich es auch mit explode gemacht, da du dann nur eine einzige Tabellenabfrage brauchst, anstatt wenn du mehrere Tabellen nutzt. greetz ph0x | |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Moderator ![]() Registriert seit: 17.10.01 ![]() Likes: 0 | also ich tippe mal auf ein schlechtes db design, wenn du die playerids so abspeicherst (mit komma getrennt) dann kannst du ja keine richtigen selects kreieren. kannst du mal ein wenig mehr infos posten....also db-schema und abfrage |
| | |
| | #4 (permalink) |
| Themenstarter | Hi, also danke das du mir helfen willst Also ich habe mir folgendes Überlegt Tabelle - player_account id, username, passwd, leagueid,vehicleid, Tabelle - vehicle id, name, imageurl, markid Tabelle - mark id,name, imageurl Tabelle - league id, name, .......... Und genau hier hakt es. Ich weiss nicht genau wie ich nun die Spieler hier einsortieren soll und die Punkte der Spieler eintragen soll. |
| | |
| | #5 (permalink) |
| Member of Honour ![]() Registriert seit: 28.05.03 ![]() Likes: 1 | also das mit dem explode ist wirklich ne schlechte lösung. wie soox schon sagte, es spricht nicht für ein gutes datenbankdesign mehrere werte in einer spalte zu haben. @spy wozu willst du die spieler eigentlich in "league" einsortieren? wäre doch doppelt gemoppelt, weil du hast doch schon die leagueid in "player" drin. also wenn du alle spieler der jeweiligen liga haben willst, brauchst du doch nur alle spieler aus "player" selektieren wo leagueid den entsprechenden wert hat. für die punktzahl und rennen geschichte würde ich es so machen das du eine tabelle "rennen" hast in der rennen-spezifische daten wie rennenID, leagueID, zeitpunkt und was du sonst noch so brauchst drin stehen. dazu würde ich für jede liga eine tabelle "PlatzierungenLigaX" (X=ID der Liga) erstellen (rennenId, platz, playerid, punktzahl) wobei rennenID && platz primärschlüssel sind, denn dadurch ist es unmöglich platzierungen doppelt einzutragen für ein rennen (könnte ja mal passieren). in diesen tabellen stehen dann also alle platzierungen aller rennen einer bestimmten liga. für die gesamtpunktzahlen würde ich dann funktionen schreiben, die entsprechende Selects ausführen. also für die gesamtpunktzahlen einer liga dann zB ne funktion die folgendes Select statement ausführt: "Select playerID, SUM(punkte) AS gesamtpunktzahl FROM PlatzierungenLigaX". einfacher wäre das gleich als sicht(view) in der DB zu machen, kommt aber drauf an ob deine DB sichten unterstützt (bei mysql erst ab version 5.0). das ist das was mir so spontan einfällt. vielleicht hat soox noch ne andere/bessere lösung.
__________________ http://livehabo.hackerboard.de | http://livebb.sourceforge.net |
| | |
| | #6 (permalink) |
| Moderator ![]() Registriert seit: 17.10.01 ![]() Likes: 0 | hab mir mal so meine gedanken schnell zusammengeklickt. das mit den mehreren tabellenxy (mit xy fuer platzhalter) macht in meinen augen wenig sinn... das mark zeugs interpretiere ich mal als (auto)marke. der ligaid in bei den accounts ist fuer die aktuell eingetragene liga..... Code: -- MySQL dump 9.11 -- -- Host: localhost Database: test -- ------------------------------------------------------ -- Server version 4.0.20 -- -- Table structure for table `liga` -- CREATE TABLE liga ( id int(11) NOT NULL auto_increment, liganame varchar(50) NOT NULL default '', firstgame timestamp(14) NOT NULL, lastgame timestamp(14) NOT NULL default '00000000000000', PRIMARY KEY (id) ) TYPE=MyISAM; -- -- Dumping data for table `liga` -- INSERT INTO liga VALUES (1,'meine liga',20050304184312,20060309000000); -- -- Table structure for table `mark` -- CREATE TABLE mark ( markid int(11) NOT NULL auto_increment, name varchar(100) NOT NULL default '', imageurl varchar(255) NOT NULL default '', PRIMARY KEY (markid) ) TYPE=MyISAM; -- -- Dumping data for table `mark` -- INSERT INTO mark VALUES (1,'sauber-petronas','http://www.wasbinich.com'); -- -- Table structure for table `player_account` -- CREATE TABLE player_account ( playerid int(11) NOT NULL auto_increment, ligaid int(11) NOT NULL default '0', username char(50) NOT NULL default '', passwd char(32) NOT NULL default '', PRIMARY KEY (playerid) ) TYPE=MyISAM; -- -- Dumping data for table `player_account` -- INSERT INTO player_account VALUES (1,1,'testuser','e22a63fb76874c99488435f26b117e37'); -- -- Table structure for table `rennen` -- CREATE TABLE rennen ( rennenid int(11) NOT NULL auto_increment, ligaid int(11) NOT NULL default '0', datum timestamp(14) NOT NULL, rennenname varchar(100) NOT NULL default '', PRIMARY KEY (rennenid) ) TYPE=MyISAM; -- -- Dumping data for table `rennen` -- INSERT INTO rennen VALUES (1,1,20050304184847,'grosser preis von honolulu'); INSERT INTO rennen VALUES (2,1,20050304184847,'grosser preis des habos'); -- -- Table structure for table `result` -- CREATE TABLE result ( userid int(11) NOT NULL default '0', rennenid int(11) default NULL, punkte int(11) NOT NULL default '0' ) TYPE=MyISAM; -- -- Dumping data for table `result` -- INSERT INTO result VALUES (1,1,30); INSERT INTO result VALUES (1,2,20); -- -- Table structure for table `vehicle` -- CREATE TABLE vehicle ( vehicleid int(11) NOT NULL auto_increment, vehiclename varchar(100) NOT NULL default '', imageurl varchar(255) NOT NULL default '', markid int(11) NOT NULL default '0', PRIMARY KEY (vehicleid) ) TYPE=MyISAM; -- -- Dumping data for table `vehicle` -- INSERT INTO vehicle VALUES (1,'mein f1 mobil','http://...',1); Code: mysql> select user.username, res.punkte from player_account as user LEFT JOIN result AS res ON (res.userid = user.userid); +----------+--------+ | username | punkte | +----------+--------+ | testuser | 30 | | testuser | 20 | +----------+--------+ 2 rows in set (0.00 sec) mysql> mysql> select sum(punkte), user.username, res.punkte from player_account as user LEFT JOIN result AS res ON (res.userid = user.userid) GROUP BY username; +-------------+----------+--------+ | sum(punkte) | username | punkte | +-------------+----------+--------+ | 50 | testuser | 30 | +-------------+----------+--------+ 1 row in set (0.00 sec) mysql> ...das mal so meine gedanken |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| anonyme emails --howto | Raptor | (In)security allgemein | 17 | 13.12.06 16:25 |
| [Howto] Doom3 und OSS | beko | Linux/*nix Tutorials | 0 | 07.10.04 20:05 |
| HowTo´s | KroaX | Windows | 1 | 29.02.04 19:40 |