Ich hab ma ne frage wie ihr die gebäude in die db (mysql) speichert
ich habe methoden gesehen wo jedes gebäude eines users eine eigene zeile hat (1 table)
dann hab ich einmal gesehen das für jedes gebäude eine table angelegt war, und jeder user eine zeile hatte (x tables)
und die methode ich benutze jeder user hat eine zeile wo alle gebäude drinne sind (1 table)
ich wollt fragen was ihr bevorzugt udn was welche vorteile hat
Gebäude(datenbank)
gepostet vor 18 Jahre, 6 Monate von Kapsonfire
gepostet vor 18 Jahre, 6 Monate von Flint
So pauschal, eine Tabelle mit einer Zeile pro Gebäude eines Spielers.
Im Idealfall brauchst du nur in der Legende/Lookup Tabelle ein neues Gebäudes einzutragen und es steht im Spiel zur Verfügung.
Im Idealfall brauchst du nur in der Legende/Lookup Tabelle ein neues Gebäudes einzutragen und es steht im Spiel zur Verfügung.
gepostet vor 18 Jahre, 6 Monate von Xfer
hi,
du solltest eine Tabelle mit allen Gebäuden anlegen wo du z.B. Name, Kosten, etc. speicherst.
Dann brauchst du nur noch eine Tabelle (Referenztabelle) in der die SpielerID, die GebäudeID und die Anzahl der Gebäude steht um die Gebäude einem Spieler zuzuordnen.
Mehr ist es eigentlich nicht.
cu
Xfer
du solltest eine Tabelle mit allen Gebäuden anlegen wo du z.B. Name, Kosten, etc. speicherst.
Dann brauchst du nur noch eine Tabelle (Referenztabelle) in der die SpielerID, die GebäudeID und die Anzahl der Gebäude steht um die Gebäude einem Spieler zuzuordnen.
Mehr ist es eigentlich nicht.
cu
Xfer
gepostet vor 18 Jahre, 6 Monate von Kapsonfire
ich hab meins so
gibt nur das baumenü an xD
$gebaude2 = mysql_query("SELECT * FROM db_bauen");
while($gebaude = mysql_fetch_array($gebaude2))
{
?>
images/" width="250" height="250">
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->$gebaude[dbname];
?>Momentane Stufe:
$lvl = $lvl + 1;
$lvl = $lvl * 1.5;
$gold = $lvl * $gebaude[gold];
$stein = $lvl * $gebaude[stein];
$holz = $lvl * $gebaude[holz];
$nahrung = $lvl * $gebaude[nahrung];
echo 'Gold:'.$gold.'';
echo 'Stein:'.$stein.' ';
echo 'Holz:'.$holz.'';
echo 'Nahrung:'.$nahrung.''; ?>
Bauzeit:
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->$gebaude[dbname];
$lvl = $lvl + 1;
$lvl = $lvl * 1.5;
$time = $gebaude[time] * $lvl;
$lvl = "SELECT * FROM gebaud where besitzer = '$a[user]'";
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->haupthaus;
if($gebaude[dbname] != "haupthaus")
{
$time = $time / ($lvl / 2);
}
$time = $time * 2;
$std = $time/3600;
$rest = explode('.', $std);
$std = $rest[0];
$rest = "0.".$rest[1];
$rest = $rest * 60;
$min = $rest;
$rest = explode('.', $min);
$min = $rest[0];
$rest = "0.".$rest[1];
$sek = $rest * 60;
$sek = round($sek);
if($std < 10)
{
$std = "0".$std;
}
if($min < 10)
{
$min = "0".$min;
}
if($sek < 10)
{
$sek = "0".$sek;
}
$time = $time + time();
$test = "SELECT * from bauen where user = '$a[user]'";
$test = mysql_query($test);
$time2 = time();
echo $std.":".$min.":".$sek;
?>
$test2 = mysql_fetch_object($test);
$test2 = mysql_fetch_object($test);
$lvl = "SELECT * FROM gebaud where besitzer = '$a[user]'";
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->haupthaus;
if($gebaude[dbname] == "haupthaus" and $lvl == 20)
{
}
else
{
if(mysql_num_rows($test) == 0)
{
echo ' ';
}
}
?>
}
und zum ausführen des bauens:
$was = $_POST["haus"];
$wieviel = mysql_query("SELECT * FROM res WHERE user = '$a[user]'");
$wieviel = mysql_fetch_object($wieviel);
$test = "SELECT * from bauen where user = '$a[user]'";
$test = mysql_query($test);
$time = time();
$gebaude2 = mysql_query("SELECT * FROM db_bauen WHERE dbname = '$was'");
while($gebaude = mysql_fetch_array($gebaude2))
{
$lvl = "SELECT * FROM gebaud where besitzer = '$a[user]'";
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->$gebaude[dbname];
$lvl = $lvl + 1;
$lvl = $lvl * 1.5;
$gold = $lvl * $gebaude[gold];
$stein = $lvl * $gebaude[stein];
$holz = $lvl * $gebaude[holz];
$nahrung = $lvl * $gebaude[nahrung];
$lvl = "SELECT * FROM gebaud where besitzer = '$a[user]'";
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->$gebaude[dbname];
$lvl = $lvl + 1;
$lvl = $lvl * 1.5;
$time = $gebaude[time] * $lvl;
$lvl = "SELECT * FROM gebaud where besitzer = '$a[user]'";
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->haupthaus;
if($gebaude[dbname] != "haupthaus")
{
$time = $time / ($lvl / 2);
}
$time = $time * 2;
$std = $time/3600;
$rest = explode('.', $std);
$std = $rest[0];
$rest = "0.".$rest[1];
$rest = $rest * 60;
$min = $rest;
$rest = explode('.', $min);
$min = $rest[0];
$rest = "0.".$rest[1];
$sek = $rest * 60;
$sek = round($sek);
if($std < 10)
{
$std = "0".$std;
}
if($min < 10)
{
$min = "0".$min;
}
if($sek < 10)
{
$sek = "0".$sek;
}
$time = $time + time();
$test = "SELECT * from bauen where user = '$a[user]'";
$test = mysql_query($test);
$time2 = time();
$test2 = mysql_fetch_object($test);
$test2 = mysql_fetch_object($test);
$lvl = "SELECT * FROM gebaud where besitzer = '$a[user]'";
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->haupthaus;
}
if(mysql_num_rows($test) == 0)
{
if($wieviel->gold >= $gold and $wieviel->holz >= $holz and $wieviel->stein >= $stein and $wieviel->nahrung >= $nahrung)
{
$insert = "INSERT into bauen VALUES ('','$a[user]','$was','$time')";
mysql_query($insert);
$update = "UPDATE res SET gold = (gold - '$gold'), holz = (holz - '$holz'), stein = (stein - '$stein'), nahrung = (nahrung - '$nahrung') WHERE user = '$a[user]'";
mysql_query($update);
echo "Gebäude erfolgreich in Produktion gegeben";
}
else
{
echo "Nicht genügend Ressourcen vorhanden";
}
}
else
{
echo "Derzeit ist schon ein Gebäude in Produktion";
}
und zum fertigstellen
$time = time();
$cronjob2 = "SELECT * FROM bauen WHERE time < '$time'";
$cronjob2 = mysql_query($cronjob2);
while($cronjob = mysql_fetch_object($cronjob2))
{
$select = "SELECT * FROM gebaud WHERE besitzer = '$cronjob->user'";
$select = mysql_query($select);
$select = mysql_fetch_object($select);
$temp = $cronjob->gebaud;
if($temp == "bauhaus")
{
$temp = "haupthaus";
}
$select = $select->$temp;
$select = $select + 1;
$update = "UPDATE gebaud Set $temp = '$select' WHERE besitzer = '$cronjob->user'";
mysql_query($update);
$delete = "DELETE FROM bauen WHERE id = '$cronjob->id'";
mysql_query($delete);
}
gibt nur das baumenü an xD
$gebaude2 = mysql_query("SELECT * FROM db_bauen");
while($gebaude = mysql_fetch_array($gebaude2))
{
?>
images/" width="250" height="250">
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->$gebaude[dbname];
?>Momentane Stufe:
$lvl = $lvl + 1;
$lvl = $lvl * 1.5;
$gold = $lvl * $gebaude[gold];
$stein = $lvl * $gebaude[stein];
$holz = $lvl * $gebaude[holz];
$nahrung = $lvl * $gebaude[nahrung];
echo 'Gold:'.$gold.'';
echo 'Stein:'.$stein.' ';
echo 'Holz:'.$holz.'';
echo 'Nahrung:'.$nahrung.''; ?>
Bauzeit:
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->$gebaude[dbname];
$lvl = $lvl + 1;
$lvl = $lvl * 1.5;
$time = $gebaude[time] * $lvl;
$lvl = "SELECT * FROM gebaud where besitzer = '$a[user]'";
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->haupthaus;
if($gebaude[dbname] != "haupthaus")
{
$time = $time / ($lvl / 2);
}
$time = $time * 2;
$std = $time/3600;
$rest = explode('.', $std);
$std = $rest[0];
$rest = "0.".$rest[1];
$rest = $rest * 60;
$min = $rest;
$rest = explode('.', $min);
$min = $rest[0];
$rest = "0.".$rest[1];
$sek = $rest * 60;
$sek = round($sek);
if($std < 10)
{
$std = "0".$std;
}
if($min < 10)
{
$min = "0".$min;
}
if($sek < 10)
{
$sek = "0".$sek;
}
$time = $time + time();
$test = "SELECT * from bauen where user = '$a[user]'";
$test = mysql_query($test);
$time2 = time();
echo $std.":".$min.":".$sek;
?>
$test2 = mysql_fetch_object($test);
$test2 = mysql_fetch_object($test);
$lvl = "SELECT * FROM gebaud where besitzer = '$a[user]'";
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->haupthaus;
if($gebaude[dbname] == "haupthaus" and $lvl == 20)
{
}
else
{
if(mysql_num_rows($test) == 0)
{
echo ' ';
}
}
?>
}
und zum ausführen des bauens:
$was = $_POST["haus"];
$wieviel = mysql_query("SELECT * FROM res WHERE user = '$a[user]'");
$wieviel = mysql_fetch_object($wieviel);
$test = "SELECT * from bauen where user = '$a[user]'";
$test = mysql_query($test);
$time = time();
$gebaude2 = mysql_query("SELECT * FROM db_bauen WHERE dbname = '$was'");
while($gebaude = mysql_fetch_array($gebaude2))
{
$lvl = "SELECT * FROM gebaud where besitzer = '$a[user]'";
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->$gebaude[dbname];
$lvl = $lvl + 1;
$lvl = $lvl * 1.5;
$gold = $lvl * $gebaude[gold];
$stein = $lvl * $gebaude[stein];
$holz = $lvl * $gebaude[holz];
$nahrung = $lvl * $gebaude[nahrung];
$lvl = "SELECT * FROM gebaud where besitzer = '$a[user]'";
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->$gebaude[dbname];
$lvl = $lvl + 1;
$lvl = $lvl * 1.5;
$time = $gebaude[time] * $lvl;
$lvl = "SELECT * FROM gebaud where besitzer = '$a[user]'";
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->haupthaus;
if($gebaude[dbname] != "haupthaus")
{
$time = $time / ($lvl / 2);
}
$time = $time * 2;
$std = $time/3600;
$rest = explode('.', $std);
$std = $rest[0];
$rest = "0.".$rest[1];
$rest = $rest * 60;
$min = $rest;
$rest = explode('.', $min);
$min = $rest[0];
$rest = "0.".$rest[1];
$sek = $rest * 60;
$sek = round($sek);
if($std < 10)
{
$std = "0".$std;
}
if($min < 10)
{
$min = "0".$min;
}
if($sek < 10)
{
$sek = "0".$sek;
}
$time = $time + time();
$test = "SELECT * from bauen where user = '$a[user]'";
$test = mysql_query($test);
$time2 = time();
$test2 = mysql_fetch_object($test);
$test2 = mysql_fetch_object($test);
$lvl = "SELECT * FROM gebaud where besitzer = '$a[user]'";
$lvl = mysql_query($lvl); $lvl = mysql_fetch_object($lvl);$lvl = $lvl->haupthaus;
}
if(mysql_num_rows($test) == 0)
{
if($wieviel->gold >= $gold and $wieviel->holz >= $holz and $wieviel->stein >= $stein and $wieviel->nahrung >= $nahrung)
{
$insert = "INSERT into bauen VALUES ('','$a[user]','$was','$time')";
mysql_query($insert);
$update = "UPDATE res SET gold = (gold - '$gold'), holz = (holz - '$holz'), stein = (stein - '$stein'), nahrung = (nahrung - '$nahrung') WHERE user = '$a[user]'";
mysql_query($update);
echo "Gebäude erfolgreich in Produktion gegeben";
}
else
{
echo "Nicht genügend Ressourcen vorhanden";
}
}
else
{
echo "Derzeit ist schon ein Gebäude in Produktion";
}
und zum fertigstellen
$time = time();
$cronjob2 = "SELECT * FROM bauen WHERE time < '$time'";
$cronjob2 = mysql_query($cronjob2);
while($cronjob = mysql_fetch_object($cronjob2))
{
$select = "SELECT * FROM gebaud WHERE besitzer = '$cronjob->user'";
$select = mysql_query($select);
$select = mysql_fetch_object($select);
$temp = $cronjob->gebaud;
if($temp == "bauhaus")
{
$temp = "haupthaus";
}
$select = $select->$temp;
$select = $select + 1;
$update = "UPDATE gebaud Set $temp = '$select' WHERE besitzer = '$cronjob->user'";
mysql_query($update);
$delete = "DELETE FROM bauen WHERE id = '$cronjob->id'";
mysql_query($delete);
}
gepostet vor 18 Jahre, 6 Monate von Kapsonfire
achja ich weiss der code ist unsauber xD
ist ja auch noch vom anfang ... ich glaub mein 3. monat mit php
ist ja auch noch vom anfang ... ich glaub mein 3. monat mit php
gepostet vor 18 Jahre, 6 Monate von Klaus
ja sehr schön! Bist du nicht auf die Idee gekommen das zusammenzufassen?
Demnächst kommen User an: "Ich habe irgendwo ein Problem, hier sind alle meine Skripte".
Demnächst kommen User an: "Ich habe irgendwo ein Problem, hier sind alle meine Skripte".
gepostet vor 18 Jahre, 6 Monate von Kapsonfire
ich hab ja kein problem xD
funzt ja alleshab nru den code os gemacht xD
funzt ja alleshab nru den code os gemacht xD
gepostet vor 18 Jahre, 6 Monate von Flint
Verstehe auch nicht ganz was der Code mit Datenbank Design zu tun hat und darum gehts ja in der Eingangsfrage.
gepostet vor 18 Jahre, 6 Monate von Kapsonfire
erstmal zeigt es das ich alles in einer zeile ha(pro user)
und dazu edr zugehörige code
und dazu edr zugehörige code
gepostet vor 18 Jahre, 6 Monate von MrMaxx
und wen interessiert der Code? Geh mal einfach davon aus, das das hier das Fortgeschrittenenforum ist und jeder der hier mitlesenden schonmal Forschleifen, sql-querys und If-Abfragen gesehen hat.
gepostet vor 18 Jahre, 6 Monate von Kapsonfire
ist ein argument xD
aber man weiss ja nie
aber man weiss ja nie
gepostet vor 18 Jahre, 6 Monate von woodworker
an BGW:
wasn das fürn scheiss?
echo 'Nahrung:'.$nahrung.''; ?>
Bauzeit:
vorher 4 echos und dann doch nur wegen bauzeit php tag schliessen?
und Shortopen tags sind schon seit langem nicht mehr "in"
bringen nur probleme mit xhtml/xml
wasn das fürn scheiss?
// viel anderer code
echo 'Nahrung:'.$nahrung.''; ?>
Bauzeit:
vorher 4 echos und dann doch nur wegen bauzeit php tag schliessen?
und Shortopen tags sind schon seit langem nicht mehr "in"
bringen nur probleme mit xhtml/xml
gepostet vor 18 Jahre, 6 Monate von Kapsonfire
lol da sind eigentlich keine shorttags erkennt nur mein coder als solcher damit da nciht soviel code steht xD
und wiegesagt ist aus meinem 3. monat mit php xD
und wiegesagt ist aus meinem 3. monat mit php xD
gepostet vor 18 Jahre, 6 Monate von Mudder
Shortopentags sind Und die sind z.B. "dank" XML und XHTML nicht mehr "in" weil sie nämlich schnell verwechselt werden. Wenn dann solltest du PHP mit
gepostet vor 18 Jahre, 6 Monate von Kapsonfire
liest du was ich schreibe? habe doch gesagt das mein coder das automatisch beim speichern in
gepostet vor 18 Jahre, 6 Monate von Mudder
Entschuldige das ich dein Genuschel missverstanden habe. Da du weder Satzzeichen noch Gross/Kleinschreibung verwendest, habe ich das wirklich fehlgelesen.
gepostet vor 18 Jahre, 6 Monate von Kapsonfire
Ich muss mich Entschuldigen. Ich werde mich in Zukunft darum bemühen im Forum wieder ordentlich zu schreiben.
MfG BG-World
MfG BG-World
gepostet vor 18 Jahre, 6 Monate von Flint
Aber wo wir schon dabei sind den Code zu zerpflücken ^^
Warum machst du mehrfach exakt die selbe Abfrage mit dem selben Ergebniss? Ein Fetch würde imho durchaus reichen.
Warum machst du mehrfach exakt die selbe Abfrage mit dem selben Ergebniss? Ein Fetch würde imho durchaus reichen.
gepostet vor 18 Jahre, 6 Monate von Kapsonfire
ich sag doch ist länger her xD
gepostet vor 18 Jahre, 6 Monate von Flint
Original von Browser-Games World
ich sag doch ist länger her xD
Dann schreib doch dabei das das ein Beispiel sein soll wie mans nicht machen soll ^^
gepostet vor 18 Jahre, 6 Monate von Kapsonfire
lol.......
Wieso nicht?So machen es geht und allzu langsam ist es auch nicht xD
Wieso nicht?So machen es geht und allzu langsam ist es auch nicht xD
gepostet vor 18 Jahre, 6 Monate von Störti
Um Mal wieder zum Thema zu kommen:
Es kommt immer darauf an, wie du dein Gebäudesystem aufbaust. Hast du ein System wie in OGame oder so, dann kannst du ein einzelne Gebäude ja immer nur einmal bauen (pro Planet), nur die Stufe kann sich ändern. Da beitet es sich an, in der Planetentabelle Spalten wie "planet_gebaeude1", "planet_gebaeude2" etc. zu erstellen, wo dann fürd as Gebäude nur die Stufe gespeichert wird, da du für das Gebäude ja nur eine einzige Information ablegst.
Wenn die Gebäude noch andere Eigenschaften wie Zustand, POS-X, POS-Y, Restbauzeit etc. haben, musst du natürlich für ein gebäude in eine Tabelle einen eigenen Datensatz anlegen.
Sämtliche Werte, die man als Konfiguration bezeichnen kann, also welche während des Spielverlaufs NICHT geändert werden, würde ich nie in eine DB packen, da eine DB-Abfrage immer langsamer ist, als wenn man per Include die Daten reinzieht. Das gilt nach meiner Erfahrung auch für JOINS zur Kostentabelle.
Es kommt immer darauf an, wie du dein Gebäudesystem aufbaust. Hast du ein System wie in OGame oder so, dann kannst du ein einzelne Gebäude ja immer nur einmal bauen (pro Planet), nur die Stufe kann sich ändern. Da beitet es sich an, in der Planetentabelle Spalten wie "planet_gebaeude1", "planet_gebaeude2" etc. zu erstellen, wo dann fürd as Gebäude nur die Stufe gespeichert wird, da du für das Gebäude ja nur eine einzige Information ablegst.
Wenn die Gebäude noch andere Eigenschaften wie Zustand, POS-X, POS-Y, Restbauzeit etc. haben, musst du natürlich für ein gebäude in eine Tabelle einen eigenen Datensatz anlegen.
Sämtliche Werte, die man als Konfiguration bezeichnen kann, also welche während des Spielverlaufs NICHT geändert werden, würde ich nie in eine DB packen, da eine DB-Abfrage immer langsamer ist, als wenn man per Include die Daten reinzieht. Das gilt nach meiner Erfahrung auch für JOINS zur Kostentabelle.
gepostet vor 18 Jahre, 6 Monate von blum
man könnte auch alle gebäude als text speichern, etwa so:
0:2,1:1,2:1,3:0
(gebäudeId:level)
dann mit php exploden
0:2,1:1,2:1,3:0
(gebäudeId:level)
dann mit php exploden
gepostet vor 18 Jahre, 6 Monate von Flint
Original von blum
man könnte auch alle gebäude als text speichern, etwa so:
0:2,1:1,2:1,3:0
(gebäudeId:level)
dann mit php exploden
Das kann man natürlich machen, aber ob das so Sinnvoll ist ?
Beispiel Update einer Gebäudestufe. Die Bauzeit ist um und das Gebäude mit der ID 1 muß auf das nächste level erhöht werden:
select, explode, addieren, implode und dann update, gegenüber einem einfachen update bei anderer DB Struktur.
gepostet vor 18 Jahre, 6 Monate von blum
Original von Flint
Original von blum
man könnte auch alle gebäude als text speichern, etwa so:
0:2,1:1,2:1,3:0
(gebäudeId:level)
dann mit php exploden
Das kann man natürlich machen, aber ob das so Sinnvoll ist ?
Beispiel Update einer Gebäudestufe. Die Bauzeit ist um und das Gebäude mit der ID 1 muß auf das nächste level erhöht werden:
select, explode, addieren, implode und dann update, gegenüber einem einfachen update bei anderer DB Struktur.
ich weiss nicht, welches besser/schneller ist. aber ich denke mal, dass es die datenbank weniger belastet, eine spalte mit 30-40 zeichen abzufragen, als bei jedem aufruf mit select gebäude*spalten abzurufen.
ich versuch immer soviel wie möglich in php und so wenig wie nötig mit der datenbank zu arbeiten.
ist wahrscheinlich nur eine geschmacksfrage.
gepostet vor 18 Jahre, 6 Monate von abuzeus
Dir ist aber klar, dass explode() auch nicht für lau arbeitet, sondern teure Zeichenvergleiche durchführen muss ?
Ich glaube - ohne dass beweisen zu können, dafür fehlt mir die tiefergehende Kenntnis - dass die Abfrage in der Datenbank besser aufgehoben ist, dafür ist sie schliesslich ausgelegt.
Ich glaube - ohne dass beweisen zu können, dafür fehlt mir die tiefergehende Kenntnis - dass die Abfrage in der Datenbank besser aufgehoben ist, dafür ist sie schliesslich ausgelegt.
gepostet vor 18 Jahre, 6 Monate von Kapsonfire
Original von abuzeus
Dir ist aber klar, dass explode() auch nicht für lau arbeitet, sondern teure Zeichenvergleiche durchführen muss ?
Ich glaube - ohne dass beweisen zu können, dafür fehlt mir die tiefergehende Kenntnis - dass die Abfrage in der Datenbank besser aufgehoben ist, dafür ist sie schliesslich ausgelegt.
wollt ich auch grad schreiben
stimme voll und ganz hinzu
obwohl ich gehört haben soll das explode garnciht solangsam ist xD
ich nutze lieber mysql find ich praktischer....
ich benutze dateien eigentlich nur für permanente daten wie pagetitle/author/präfix etc....
also sachen die sich normaler weise nicht ändern sollten
gepostet vor 18 Jahre, 6 Monate von Störti
Original von blum
man könnte auch alle gebäude als text speichern, etwa so:
0:2,1:1,2:1,3:0
(gebäudeId:level)
dann mit php exploden
Das ist der Fall, in dem du jeden Gebäudetyp nur ein einziges Mal bauen kannst, nur der Level ist immer anders. Da kann man nun wirklich eine solche Tabelle erstellen oder die USER-TABELLE erweitern mit folgenden Spalten:
gebaeude_001 tinyint(2)
gebaeude_002 tinyint(2)
gebaeude_003 tinyint(2)
gebaeude_004 tinyint(2)
In den Spalten wird dann die jeweilige Gebäudestufe geschrieben. Dann kannst du mit "UPDATE [...] SET gebaeude_001 = gebaeude_001 + 1" auch die Stufe einzeln erhöhen.
Damit sparst du in den Datensätzen sogar noch Speicherplatz, da ein Tinyint nur 1 Byte verbraucht und keine weiteren Trennzeichen erforderlich sind.