[Guide] Simples PHP Tutorial

11/12/2010 13:40 Mijago#1
Hallo Community :)

Ich bin jetzt schons eit einiger zeit hier im Forum angemeldet, aber, wie ihr seht, habe ich noch nicht viel beigetragen.
Das möchte ich nun ändern.

Zum Anfang möchte ich euch nun ein kleines, aber ausführliches PHP-Grundtutorial anbieten mit dem Beispiel einer Rangliste für euren Server.

Vorraussetzungen:
  • einen Webserver, der PHP unterstützt. [Ein mit XAMPP installiertes Apache sollte reichen)
  • Einen MT2- PServer (Da wir ja eine Rangliste erstellen wollen)
  • Interesse am Thema & Freude am Lernen



Erst einmal eine kleine beschreibung von PHP, damit die, die nicht wissen, was PHP ist, es verstehen können:

So, das sollte nun klar sein. :)

Wie ist PHP aufgebaut?
Jedes PHP-Script hat einen vorbestimmten Aufbau:
PHP Code:
<?php

?>
Hier seht ihr, dass ein PHP-Code innerhalb einer *.php-Datei mit dem Syntax
PHP Code:
<?php
gestartet und mit dem Syntax
PHP Code:
?> 
wieder geschlossen wird.
Alles davor oder danach wird als normaler HTML-Text übernommen. Auf HTML möchte ich aber eigendlich nicht genau eingehen.
Eine der wichtigsten Regeln ist es, dass an fast jedem zeilende, also nach jedem beendetem Befehl, ein Semicolon, also ";", gesetzt werden muss. Ansonsten erhaltet ihr eine Fehlermeldung :D

Info´s zu If-Abfragen:

Noch eine kleine Info zu Kommentaren:

Unser erster Script
Wenn man eine neue Programmier- bzw. Scriptsprache erlernt, sollte man als erstes einen Script erstellen, der den text "Hello World" ausgibt.
Texte und HTML-Codes geben wir in PHP mit dem Befehl echo aus.
hier einmal der hello World-Script:
PHP Code:
<?php
echo "Hello World";
?>
Der Text, den echo ausgeben soll, muss in Anführugnszeichen, also " ", stehen. Auch das Semicolon dürfen wir nicht vergessen.

Der Datenbankzugriff
Um eine Rangliste zu erstellen, müssen wir natürlich auch auf die Datenbank des Spiels zugreifen.
Dies erfolgt über den Befehl
PHP Code:
mysql_connect(); 
Ein kleines Beispiel mit Standard-Passwort & Port:
PHP Code:
<?php
$db_host 
'192.168.0.100'// Host des MySQL-Servers festlegen
$db_user 'root'// Loginname  festlgen
$db_pass '123456'// Passwort für den Loginnamen
$link mysql_connect($db_host$db_user$db_pass); // Verbinden
if (!$link) { //Wenn keine Verbindung: Fehlermeldung ausgeben.
    
die('Could not connect: ' mysql_error());
}
?>
Wir sind nun zwar mit dem Server verbunden, doch wir müssen noch eine Datenbank auswählen. Das machen wir, indem wir folgende Zeile an den PHP-Code anhängen:
PHP Code:
mysql_select_db("player") or die ("Datenbank konnte nicht ausgewählt werden"); 
Wenn die Datenbank "player" nicht ausgewählt worden konnte, gibt erhält man eine Fehlermeldung.
Aber wir gehen davon aus, dass alles geklappt hat. Jetzt sind wir in der Datenbank.
Ich empfehle es, den oberen Block in eine extra *.php-datei einzubinden und in die Hauptdatei mit "include("datei.php");" einzubinden.
"include();" Befehle sollten imemr am Anfang des *.php-Dokuments stehen.

Doch wie beziehen wir die Dateien aus den einzelnen Tabellen?

Daten Lesen & Schreiben
Da wir nun mit der Datenbank verbunden sind, wollen wir auch unsere Dateien lesen.
Das machen wir wie folgt:
PHP Code:
<?php
$section 
"SELECT
*
FROM 
player"

# Dies geht natürlich auch in einer Zeile:
$section "SELECT * FROM player";
# Den Variablenname $section könnt ihr beliebig ändern

########## Erklärung ##########
# SELECT zeigt PHP, dass wir etwas auswählen wollen.
# Der Stern "*" sagt PHP, dass wir Alle Reihen der Tabelle auslesen wollen.
# Ihn kann man auch durch Reihennamen, mit Kommas getrennt, ersetzen,
# dann werden nur diese Reihen ausgelesen.
# FROM sagt PHP, aus welcher tabelle wir die Daten haben möchten
# nach FROM folgt der Tabellenname. Hier player :)
?>
Nun haben wir unsere Daten. Diese wollen wir aber nun auch ausgeben, dass man sie auf der Website sehen kann.
Folgender Code macht es möglich: [Ich bediene mich einer Tabelle]
PHP Code:
<html>
<body>
<table width="100">
<tr> //Hier erstelle ich die Erste Zeile der Tabelle
<td>Platz</td><td>Name</td><td>Exp</td><td>Level</td> 
</tr>
<?php //nun setzen wir die Schleife mitten in die HTML-Tabelle ein
$section "SELECT * FROM player ORDER BY exp DESC";
# Das "ORDER BY" sagt PHP, es soll die Daten der Tabelle nach EXP sortieren.
# natürlich könnt ihr auch nach Level sortieren lassen, wie es euch gefällt
$i "0" // i nutzen wir zum Zählend es Rangs
$query mysql_query($section); //einen query erstellen
while($fetch mysql_fetch_object($query))  // mit while eine Schleife starten
// Schleife öffnen
# Alles innerhalb dieser Schleife wird sooft wiederholt, bis alle zeilen der tabelle durchgegangen wurden.
$i $i ;
echo 
"<tr>
<td>
$i</td>
<td>
$fetch->name</td>
<td>
$fetch->level</td>
<td>
$fetch->exp</td>
</tr>
"
;
# mit $fetch->VAR lesen wir den jeweiligen Zeilenwert der Reihe VAR aus.
// Schleife Schließen
?>
</table>
</bod>
</html>
Fertig ist unsere Rangliste

Im Anhang die funktionierende Rangliste :D

Ich hoffe ich konnte ein paar Leuten weiterhelfen :)
Solltet ihr Fehler finden (was ihr sicher tun werdet), oder Verbesserungsvorschläge habt, bitte Posten :]
Ich bin jeden Tag hier Online also werde ich dieses Tutorial auch weiter ausbauen.
Und nehmt mich bitte nicht zu hart ran, ist mein Erstes Guide :)


Ich habe bereits die SuFu genutzt und kein anderes PHP-Tut im Forum gefunden, kann aber auch sein, dass ich nicht gründlich genug gesucht habe.

* EDIT1 *
VirusTotal-Scan
* EDIT 1 ENDE *
11/12/2010 13:41 jackdown9#2
Auch wenn ich mir das mittlerweile mühsam selber (google ist dein Freund) beigebracht habe, denke ich wird das hier vielen helfen :)

Bekommst nen THX für die Mühe

lg. jackdown
11/12/2010 13:43 3jfx#3
grob drüber geschaut: erster fehler: bei if immer == (im beispiel)
ansonsten nice
11/12/2010 13:45 fLaiRe#4
Danke
11/12/2010 13:45 Mijago#5
Danke gleich mal behoben :)
11/12/2010 13:48 °IceCold°#6
Juhu, wie gut das heute Wochenende ist, gleich mal lernen ^^
Wird das Thema noch weiter geführt?

Edit: Kleiner Fehler, es heißt Tabelle, nicht Tabekke ;)

Noch 2 kleine Fehler:
11/12/2010 13:49 Mijago#7
Natürlich
Einige Sachen wie Schleifen, If-Abfragen und ein paar kleine Fitzelchen möchte ich noch weiter erläutern, aber gerade eben hat mir dann doch der Nerv dazu gefehlt :D
Und nebenbei, auch am Wochenende darf man lernen :b

Edit: ja, was wäre das Leben ohne Tippfehler? :D ++ bearbeitet
11/12/2010 13:56 .Sh4rk#8
Em sowas kommt in die Coder Sektion :D
Davon gibts eig auch 100000 Tutorials aber naja Danke, für die, die es brauchen,..
11/12/2010 13:57 DasKuchen#9
Gutes tut aber unübersichtlich bischen udn springt einen nit an :D

edit: falsch gelesen
11/12/2010 14:15 Mijago#10
Ich weiß das es unübersichtlich ist.. leider :/
magst du mir einen Tipp geben wie ich dies ändern kann? :)
11/12/2010 14:19 oOEvolutionXiOo#11
GUtes Tut was du verbessern mußt weißte jah
11/12/2010 15:04 Gipha#12
Nice *
01/29/2011 11:48 blackdome002#13
giet es ne möglichkeit die player auf der hp anzeigen zu lassen die grade spielen also nicht nur die anzahl sonder acc namen
01/29/2011 12:13 Tookies#14
Also mal davon abgesehen, dass du in der falschen Sektion bist, muss ich
dir leider sagen, dass dein Tutorial nicht zu gebrauchen ist.

Du fängst schön mit dem Anfang an, Ausgaben tätigen etc. und dann
kommst du aufeinmal mit SQL an.
Wie wäre es wenn du noch genau auf if Strukturen eingehst oder
switch - case. Es gibt soviel dass du ausgelassen hast, darum ist dieses
Tutorial kein "Simples" PHP Tutorial.
01/29/2011 12:31 kimuraaa#15
Quote:
Originally Posted by blackdome002 View Post
giet es ne möglichkeit die player auf der hp anzeigen zu lassen die grade spielen also nicht nur die anzahl sonder acc namen
Ja, die gibt es.

Quote:
Originally Posted by Tookies View Post
Also mal davon abgesehen, dass du in der falschen Sektion bist, muss ich
dir leider sagen, dass dein Tutorial nicht zu gebrauchen ist.

Du fängst schön mit dem Anfang an, Ausgaben tätigen etc. und dann
kommst du aufeinmal mit SQL an.
Wie wäre es wenn du noch genau auf if Strukturen eingehst oder
switch - case. Es gibt soviel dass du ausgelassen hast, darum ist dieses
Tutorial kein "Simples" PHP Tutorial.
Und dein Post ist ebenso sinnlos.
Achte mal auf´s Datum.