PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Browsergame PHP Mysql


Bald123
05.01.2004, 13:28:56
Ich weiß zwar nit ob es hierreingehört aber ich frag ma hier.
Ich versuch seit ner Zeit en Browsergame zu kreiren..
Man kann sich bereits registrieren aber weiter weiß ich auchnicht..
Wo speichert man die ganzen daten wie Rohstoffe, Punkte, Schiffe, Gebäude? Speicher ich die irgendwie mit Variablen in ner php datei oder muss ich da ne SQL Tabelle anlegen, wenn ja müsste die ja riesig sein? also all die informationen die da rein müssen? oda gibs auch ne möglichkeit für jede sache ne eigene tabelle also eine für gebäude eine für schiffe und all sowas? Aber dann kommt die DB sicherlich durchenander da se nit weiß wer nun welche Gebäude hat..
Kann man da irgendwie nem benutzer ne ID geben die dann weitergeleitet wird während man online is?


Nur so nebenbei Browsergames sind sowas wie War of Galaxy (http://www.warofgalaxy.com)
Galaxy Wars (http://www.galaxywars.de)

c4
05.01.2004, 13:49:52
Lies Dir den Thread mal gut durch: http://www.selfphp.com/forum/showthread.php?threadid=4368

EyeDacor
05.01.2004, 13:53:52
ja, sql wäre angebracht. und für deine probleme "wem gehört was" kannst du tabellen mit ids verknüpfen etc und zusammenhänge aufbauenen (dafür gibt es ja auch die primärschlüssel)

Bald123
05.01.2004, 14:14:57
Original geschrieben von _c_4_
Lies Dir den Thread mal gut durch: http://www.selfphp.com/forum/showthread.php?threadid=4368

Du meinst damit das ich alleine so oder so nichts auffe reihe kriege???
ich wollt das nur so aus spaß machen, halt ne herausforderung.. auch wenns länger dauert..

Aber trotzdem danke das ihr nit sofort sagt das das nichts wird..
Ich werd des mal versuchen mit den ID's

c4
05.01.2004, 14:26:44
Oh nein, ich wollte Dein Vorhaben doch nicht zum Scheitern verurteilen.

Eigentlich war der Link gar nicht mal so passend, schließlich suchst Du ja niemanden, der Dir hilft. Passiert. ;)

Was ich damit eher zu verstehen geben wollte, war, dass Du Dich vielleicht erst einmal an kleineren Dingen probieren solltest. Ein kleines Forum oder Newssystem mit Kommentarfunktion zum Beispiel. Besonders bei letzterem wird das Prinzip von Primär- und Fremdschlüsseln sehr gut klar.

EyeDacor
05.01.2004, 14:39:54
Ein kleines Forum oder Newssystem mit Kommentarfunktion zum Beispiel. Besonders bei letzterem wird das Prinzip von Primär- und Fremdschlüsseln sehr gut klar.hehe, genau damit hab ich das gelernt :) (nur mal so als feedback, dass sowas auch echt was bringt)

Bald123
05.01.2004, 15:44:43
sowas muntert auf ! danke
Naja wenn ihr meint das ich mit kleineren sáchen anfangen soll dann mach ich des mal ^^ man kann nie zuviel lernen

EyeDacor
05.01.2004, 16:05:13
ein newsscript wäre gut, das könntest du dann auch für dein spiel gebrauchen. ein forum halte ich schon für zu komplex um damit sowas zu lernen. :)

Bald123
05.01.2004, 16:46:32
So dann hab ich mich gleich mal drann gesetzt en klenes einschreib php ding zu machen..Bin aber nu wieder stecken geblieben.
Hier ausschnitt aus der Ersten datei:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Eintragen</title>
</head>
<body>
<hr>
<h1 align="center">Schreiben</h1>
<table border align="center"><tr><td>
<form action="schreiben.php" method="post">
<table align="center" cellpadding="3">
<tr>
<td align="right">Name</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td align="right">Text</td>
<td><input type="text" name="text"></td>
</tr>
<tr>
<td align="right"></td>
<td><input type="submit" name="submit" value="Ab dafür"></td>
</tr>

</table>
</form>
</td></tr></table>



</body>
</html>

So nu will ich das in der Datei schreiben.php der Name und der Text in ner datei( feedback.txt) reingespeichert wird... aber womit mach ich des???
ich kenn nur den befehl fopen und fwrite.. aber wo mach ich das die Variablen von Name($name) und Text($text) in die dateien geschrieben werden... hab ma bei nem script von som andren ding gelesen das die da irgendwie
$text = fopen("feedback.txt", "w+");
gemach haben aber das tut nit bei mir.. der erstellt zwar ne neue datei durch des w+ aber schreibt nix rinne ^^


Ich dachte wenn wa schon über si klene sachen reden kann ichs hierrein tun

EyeDacor
05.01.2004, 17:13:11
du willst das jetzt mit dateien machen? das würde jetzt aber voll am ziel vorbeischießen, dich mit mysql und schlüsseln auseinanderzusetzen...

trotzdem: schau dir mal die funktionsreferenz an und schau was w+ und so bedeutet. :)

(btw, die variablen nicht mit $text usw ansprechen... nimm anstelle $_POST['text'])

c4
05.01.2004, 17:17:44
Nee Du, so geht das aber nicht. Du kannst doch nicht einfach so auf Textdateien ausweichen, wenn Du was mit mySQL üben willst. ;)
Wie es mit Textdateien geht, siehst Du an einem Beispiel da: http://php.net/fwrite - aber das ist jetzt eigentlich egal.

Das wichtigste auf dem Weg zu einem funktionierenden Projekt ist der Datenbankentwurf. Heißt, Du musst Dir im klaren darüber sein, welche Tabellen welche Felder welchen Typs enthalten sollen. Daten sollten nicht redundant (doppelt) gespeichert werden. Auch sollten sie nicht überflüssig sein.
Grübel eine Weile darüber und fang dann mit dem eigentlichen Programmieren an. Ist der Entwurf Mist, wirst Du es dann merken. :)

Bald123
05.01.2004, 17:21:28
ich habe gedacht des geht nicht..wenn ich ne my sql tabelle mach. nehmen wa ma an die heißt feedback oda so dann enthält die ja dann Name und TEXT... ich dachte mir das ein wert in der tabelle nur aus einem wort oder so bestehen kann und nit son ellen langer text ^^

was dieses w und so heißt weiß ich.. w+ is schreiben, und falls die datei nicht besteht wird sie erstellt...




Wegen den MySql tabellen.. hab in nem Buch gelesen das man sich gedanken über die Friendships und all sowas machen soll also auch erstmal auf nem blatt papier alles aufschreiben

c4
05.01.2004, 17:27:51
ich habe gedacht des geht nicht..wenn ich ne my sql tabelle mach. nehmen wa ma an die heißt feedback oda so dann enthält die ja dann Name und TEXT... ich dachte mir das ein wert in der tabelle nur aus einem wort oder so bestehen kann und nit son ellen langer text ^^ Nicht auszudenken! Ein Feld kann mehrere MB groß sein (wenn es denn sein muss)!
Wegen den MySql tabellen.. hab in nem Buch gelesen das man sich gedanken über die Friendships und all sowas machen soll also auch erstmal auf nem blatt papier alles aufschreiben Gutes Buch! ;)

Bald123
05.01.2004, 17:47:14
Das würd ich nich so voreilig sagen ^^ der teil is vielleicht gut geschrieben und erklärt aber der anfang des buches naja....
Installieren sie MySql nach D:Webmysql und öffnen sie dann die datei mysql.exe im verzeichnis C:Webmysqlbin...
gut das ich eigenständig denken kann und das nich komplett nach buch mach... Aber glaub mir das war nit der einzige fehler im buch

EyeDacor
05.01.2004, 17:58:32
Original geschrieben von _c_4_
Nicht auszudenken! Ein Feld kann mehrere MB groß sein (wenn es denn sein muss)!
Gutes Buch! ;) jo, oder halt entsprechend einstellen und dann mit blob bis zu 4GB ^_^ (nur mal so am rande was alles möglich ist)

Bald123
05.01.2004, 18:59:01
Leute ich hab mir ma gedanken gemacht was ich sinnvolles proggen könnt... Ich bin ja aktiver Dungeons and dragons rollenspieler und dacht mir ich mach ne tabelle in SQL mit den Zaubern also ab welchem grad man den kann und welche klasse den kann und dann mach ich ne art suchmaschine wo man zum beispiel Stufe 9 eingibt und dann gibt der einem alle stufe 9 zauber ^^

das is doch ma was sinnvollen :-)

c4
05.01.2004, 19:02:17
Dann lass Dir was einfallen, wie Du daraus mindestens 2 Tabellen machst, damit Dir das Prinzip von Fremd- und Primärschlüssel klar wird! :)

Bald123
05.01.2004, 19:17:08
wo kann ich was nachlesen über fremd und primarschlüssel ? hab davon keine ahnung

Bald123
05.01.2004, 19:32:58
Hab nochma in nem buch geschaut das is ne tabelle die en Attribut einer andren tabelle nutzt

Wichu
05.01.2004, 20:27:40
Beispiel Newstabellen von mir (Vereinfacht dargestellt):


Tabelle news Tabelle news_comment
----------------------- -------------------------------
|id|date |text|user | |id|date |text|user |fs_news|
======================= ===============================
|1 |1353515|bla |Wichu| |1 |1351235|ho |Wichu|1 |
----------------------- -------------------------------
|2 |3513525|hi |Wichu| |2 |1351356|hä |Wichu|2 |
======================= ===============================

mehr muss man eigentlich nicht machen um ein simples NewsScript auf die Beine zu stellen!

fs_news heisst, dass er die id (!!) in dieser Spalte speichert von der Tabelle news und dadurch kannst du sehr einfach die Comments einer News auslesen lassen aus der Tabelle news_comment

Bsp.: ich will die Comments der News nr. 1 (id=1), dann mach einfach

mysql_query ("SELECT * FROM news_comments WHERE fs_news=$id");

und das reicht!

Bald123
05.01.2004, 20:31:38
hmm aber wie binde ich des mit den Schlüsseln in meine Zauber tabellen ein... da gibs keine sinnige möglichkeit ^^ ausser..

wartet ma ^^ hab die idee ich mach das man wenn man den zauber rausgesucht hat auf nen knopf drücken kann und die beschreibung für den zauber angezeigt wird und die beschreibung is inner andren table

Wichu
05.01.2004, 20:41:03
ist zwar unnötig, weil man es einfach bei jedem Datensatz dazuschreiben könnte, aber wie wärs mit den Klassen, 9 Stück wenn ich mich richtig erinnere, haben die vielleicht irgendwelche Besonderen Eigenschaften, Namen usw...?

dann könntest du eine Tabelle machen, wo jede einzelne Klasse beschrieben ist, damit du das nicht in die "haupt"Tabelle schreiben musst, redundant!

das wär doch was, oder?

Bald123
05.01.2004, 21:10:04
ne es geht mir um die auflistung der zauber ^^ und da es nur 5 klassen gibt die zaubern können brauch ich dazu doch noch keine extra tabelle.. aber nu ne andre frage ^^ hab ma hier angefangen
Fehler

SQL-Befehl :

CREATE TABLE Zauber(

zauberID LONGTEXT,
Name LONGTEXT,
Schule LONGTEXT,
Grad LONGTEXT,
Komponenten LONGTEXT,
Zeitaufwand LONGTEXT,
Reichweite LONGTEXT,
Ziel/Effekt LONGTEXT,
Wirkungsdauer LONGTEXT,
Rettungswurf LONGTEXT,
Resistenz LONGTEXT
)

MySQL meldet:


#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '
Schule LONGTEXT,
Grad LONGTEXT,
Komponenten LONGTEXT,
Zeitaufw


Wieso kommt des??

EyeDacor
05.01.2004, 21:29:34
warum machst du alles longtext? schau dir am besten mal die doku für die feldtypen an... wenn zB. nur ne zahl reinkommt, nimm int oder am besten tinyint wenn sie kleiner als 128 und größer als -128 ist. tinytext ist für texte die kürzer als 255 zeichen sind usw... am besten mal die doku anschaun.

Bald123
05.01.2004, 21:33:29
Haltet ihr mich für jemanden der nit die doku liest?
Ich hab doch extra longtext genommen ^^ dann kann ich doch ellenlange sachen reintun ^^ is doch egal obs nur ne zahl is.. sicher is sicher...

aber eigentlich dürfte der fehler nit kommen!!!

EyeDacor
05.01.2004, 21:47:25
gewöhne dir solche sachen ab. das ist ein total schlechter stil.

feldtypendoku: http://www.mysql.com/doc/en/Column_types.html

ich habe keine ahnugn was in die felder soll, aber ich habs mal so gemacht wonach es sich anhört...

CREATE TABLE `zauber` (
`id` SMALLINT NOT NULL AUTO_INCREMENT ,
`name` TINYTEXT NOT NULL ,
`schule` TINYTEXT NOT NULL ,
`grad` SMALLINT NOT NULL ,
`komponenten` TINYTEXT NOT NULL ,
`zeitaufwand` BIGINT NOT NULL ,
`reichweite` INT NOT NULL ,
`zieleffekt` INT NOT NULL ,
`wirkungsdauer` BIGINT NOT NULL ,
`rettungswurf` TINYTEXT NOT NULL ,
`resisenz` INT NOT NULL ,
PRIMARY KEY ( `id` )
);


(jaja, ich mag phpmyadmin nunmal ^^)

tinytext für kurze stichworte und namen
smallint für große aber nicht riesige zahlen
int für etwas größere zahlen
big int für den unix timestamp :) (den du da wahrscheinlich auch verwenden wirst...?)

naja, musstest halt napassen wie du es brauchst

Bald123
05.01.2004, 22:03:44
trotzdem weiß ich immernochnit wieso da en fehler kommt ^^

Bald123
05.01.2004, 22:10:05
big int für den Unix Timestamp ^^ ne bei zeitaufwand brauch ich sowas nit.. mit Zeitaufwand is gemeint wielange der zauber wirkt oder so ^^ also da kommt was rein wie 1tag oder 2 stunden und sowas

EyeDacor
05.01.2004, 22:24:20
wenns nen onlinegame wird würde ich auf jedenfall den timestamp nehmen... dann kannst du nämlich die reale zeit damit verwenden und dann durch einfache rechnungen schaun ob die zeit erreicht ist oder nicht.

Wichu
05.01.2004, 22:53:51
habs jetzt selber nicht getestet, aber das was EyeDacor gepostet hat, SQL Code, sollte eifentlich funktionieren!

WICHTIG:
-id immer als int (big-, small ist eigentlich wurscht, hauptsache int)
-immer nen Primary Key setzen, in dem Fall: id
-und auch Auto_increment bei id machen

Bald123
06.01.2004, 11:30:51
ich hab nie gesagt das eye's sql dings nich tut ^^ ich meinte meinen ganz oben!

aber mal ne frage,, zum beispiel bei zeitaufwand, da muss ich hinschreiben "1 Aktion" << das is Zahl und buchstabe! soll ich da tinytext nehmen?

EyeDacor
06.01.2004, 14:00:57
du solltest echt mal deine datenbanken planen :)

wenn du z.B. jetzt als beispiel den zeitaufwand sepichern willst, dann mach das nicht so! schreib in die tabelle einfach 1,2 oder 3 oder was weiß ich! lass das "Aktion" weg! das kannst du später immernoch im script selbst ausgeben! zum beispiel:
"spalteninhalt" Aktionen ist viel besser als wenn du in jede spalte immer wieder "Aktion" stehen hast! dann hast du eine tabelle mit einen ganzen haufen nutzloser daten! und wenn du das mit zahlen machst, kannst du damit viel leichter weiterrechen... überleg doch mal, was einfacher ist: ob du deinen skript jetzt sagst, das ganze dauert "2 Aktionen" oder es dauert "2"... ich glaube letzteres ist 100% verständlicher! tinytext nur für namen und beschreibungen verwenden! (sollte es länger als 255 zeichen sein nehm text! longtext etc wirst du nie brauchen! wie c4 schon sagte: da passt dann ein ganzes buch rein!) alles was sich in zahlen ausdrücken lässt, auch NUR als zahl speichern!

:)

am besten gibts du sachen wie zielen auch zahlen, zb "du selbst" ist ne 0, "illusionen" ist ne 1 usw... das klingt jetzt kompliziert, ist aber einfacher als wenn du das spaeter den text wieder auseinander trennen willst. da kannst du dann lieber eine funktion nehmen die das umwandelt und kannst die dann auch überall benutzen wo du die daten brauchst. include() ownz :D

Bald123
06.01.2004, 14:48:49
hmm ^^ gibs denn überhaupt en ding was perfekt für en ding geeignet is wo man Zahlen und Buchstaben nutzt??
Also ich werd nu des machen wie dus gesagt has ^^


Hmm das man Aktion bei zeitaufwand weglässt geht nit..bei jedem zauber isses anners,,, es gibt zum beispile 10 Minuten, Halbe Aktion, 1 Stunde und 1 Aktion all sowas!

und glaub mir ich hab mir gedanken gemacht ^^ es geht glaubig nit anners als so wie es jetz is^^

EyeDacor
06.01.2004, 15:25:24
dann mach extra spalten. "minuten" und "aktionen"

=> wenn minuten = 0 dann nehme aktion

es geht alles! :P

by the way, halbe aktion, (bzw minute) geht doch auch: 0,5


deine tabelle wäre super uneffizient, würde sie so aussehen:
- Dauer
1 Aktion
2 Minuten
6 Aktionen
2 Aktonen
30 Minuten
halbe Aktion
etc... was willst du mit dem ganzen sachen wie aktion und minute? alles überflüssiger platzverbrauch!

mach besser so:
-minuten -aktionen
0 1
2 0
0 6
0 2
30 0
0 0,5
0 6

wir wollen dir hier ja nur helfen ;)

Bald123
06.01.2004, 15:28:08
fettes danke ^^

hoffe das ich heut wenigstens noch paar mehr zauber eintragen kann ^^ morgen is wieder schule :-(


nu hab ich 2 spalten... Aktion und Stunden... Aber wenn ich bei aktion reinschreibe 1 und bei stunden nichts dann macht der automatisch ne null obwohl ers weglassen soll!

EyeDacor
06.01.2004, 17:13:54
wahrscheinlich weil default wert auf 0 gesetzt ist, aber das ist auch ganz gut so. dann fragst du einfach so ab, wie ich dir oben schon vorgeschlagen habe:

=> wenn stunden == 0 dann nehme aktion

ich sehe gerade, das sich hier schon die dritte seite langsam dem ende nähert, und sowieso nur noch wir beide darüber diskutieren. kannst dich ja eben bei meinem forum anmelden (gerade neu aufgesetzt) hier der link (http://www.marcel-jovic.de/forum/)

Bald123
06.01.2004, 18:35:01
ich regg mich ma ^^ sons wird dies forum nacher proppen voll!

aber hassu nich ICQ oda so???

EyeDacor
06.01.2004, 18:35:34
icq? schonmal den speicherverbrauch von dem ding gesehen? ^^

Bald123
06.01.2004, 18:42:25
von icq minimal oda?? nie nachgeschaut ^^

c4
06.01.2004, 18:51:32
Darum nutzt man auch Miranda: http://miranda-im.org/ ;)

EyeDacor
06.01.2004, 19:18:16
mir reicht irc (und halt icq wenn ich doch mal win anhaben sollte)

aber egal