PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP für Anfänger



wrtlprnft
26.05.2004, 02:48
Da es hier auch schon ein Tut für HTML gibt dacht ich mir, dass man das gleiche ja auch für PHP machen kann. Also:

Bemerkungen
Ich werde in diesem Tut manchmal Links als Fußnoten missbrauchen. Solche Links werden mit einem Gradzeichen (°) markiert. Fahrt über den Link, damit in der Statuszeile der Hinweis angezeigt wird, z.B.: Test° (Hier wird dann der Hinweis angezeigt)

Voraussetzungen:
Ich gehe davon aus, dass ihr euch etwas in HTML auskennt, eure Kenntnisse sollten vielleicht ein bisschen über dieses Tut (http://forum.rpg-ring.com/forum/showthread.php?s=&threadid=30555) hinausgehen.
Außerdem solltet ihr wissen, was eine Variable ist.
Zum Testen wäre ein PHP-Fähiger Webspace sinnvoll. PHP-Freewebspace wird u.a. von Lycos Tripod (www.tripod.lycos.de) angeboten.

Was ist PHP?
PHP ist im Prinzip nichts anderes als eine Scriptsprache, um HTML-Seiten zu erstellen. Eine Seite mit der Endung .php wird vom Server interpretiert, bevor sie zum Browser gesendet wird, der Browser kriegt also gar nicht mit, dass es sich um eine php-Seite handelt.

Erste Schritte
Eine Seite, die in PHP geschrieben ist, ist sehr ähnlich zu einer HTML-Seite aufgebaut, hat aber die Endung *.php. Der Server interpretiert nur das, was in <?php ?>-Tags steht. Der Rest wird vollkommen unverändert übernommen. Also:
<!--Hier ist HTML--!>
<?php
// Das ist PHP
?>
<--Hier ist wieder HTML-->Innerhalb der PHP-Tags kann Text ausgegeben werden, indem man
<?php
print("Hallo <b>Welt</b>!");
?>schreibt.
In diesem Beispiel würde
Hallo Welt!
ausgegben werden.
Man kann also auch normale HTML-Tags ausgeben, die dann vom Browser ausgewertet werden.
Zwischen zwei <?php ?> kann ganz normaler HTML-Code geschrieben werden. Der PHP-Code wird in diesem Fall an der Stelle fortgesetzt, an der er unterbrochen wurde.

PHP-Kommandos
Jeder PHP-Befehl endet mit einem Semikolon, was wohl C-Programmierern bekannt vorkommen wird (Das meiste in PHP ist ählich zu C). Wichtig ist nur, dass nicht das Zeilenende den Befehl abschließt, sondern das Semikolon. Ein Befehl kann also über mehrere Zeilen gehen, es können aber auch zwei Befehle in einer Zeile vorkommen.
Ein Befehl kann entweder ein Funktionsaufruf, eine Variablenzuweisung oder eine Mischung aus beidem sein. Eine wichtige eingebaute Funktion ist z.B. print(). Die Syntax eines Funktionsaufrufes schaut so aus:
funktionsname(Parameter1 [, Parameter2 [, Parameter3 [, ...]]]);
Die print()-Funktion nimmt nur einen Parameter an, nämlich den String, der ausgegeben werden soll (Strings sind Zeichenketten und werden in Anführungszeichen ("") angegeben, damit PHP auch weiß, dass es sich um einen String handelt. Dazu aber später).
Befehle werden von oben nach unten durchgearbeitet.

Variablen
In PHP sind alle Variablen Variants, d. h. sie können Ganze Zahlen, Floating-Point-Zahlen oder Zeichenketten sein.
Variablen müssen nicht definiert werden, wenn ein noch nicht verwendeter Variablenname im Quelltext auftaucht wird eine neue Variable dieses Namens erstellt und ihr der Wert 0 bzw. ""° (leere Zeichenkette) zugewiesen.
Variablennamen müssen mit dem $-Zeichen beginnen und dürfen Groß-und Kleinbuchstaben sowie den Unterstrich (_) enthalten.
Variablen sind z.B.
$foo
$test123
$dummheit_MAX

keine Variablen sind:
test //° (ein Kommentar wird durch zwei Schrägstriche eingeleitet und kommentiert die restliche Zeile aus.) diese Variable fängt nicht mit $ an.
$asdf äölk //Diese Variable enthält ein Leerzeichen.
$#*@! //Diese Variable enthält Sonderzeichen

Variablen in PHP sin case sensitive, d. h. dass die GOSS/kleinschreibung eine Rolle spielt.
$hallo ist also etwas anderen als $Hallo, $HALLO oder $hAlLo.

Um einer Variable einen Wert zuzuweisen kann der =-Operator° (Ein Operator ist ein spezielles Zeichen, das etwas an Variablen verändert, z.B. + oder -) verwendet werden:
$foo = 27;
oder
$zeug = 234.123432;
oder
$text = "Hallo";

Man kann auch sehr leicht mit Variablen rechnen:
$baz = 27-15;
In diesem Fall erhält die Variable $baz den Wert 13.
$test = $foo * 2;
Schon etwas komplizierter. In diesem Fall erhält $test den doppelten Wert von $foo.

Man kann in PHP die Operatoren +,-,*,/ und %° (Rest einer Division zweier Zahlen, also modulo) verwenden.
Es ist zu beachten, dass die Regel Punkt vor Strich gilt,
$foo = 2+2*3;
weist $foo also 8 zu, nicht 12. Um $foo den Wert 12 zuzuweisen kann man Klammern verwenden:
$foo = (2+2)*3;

Es gibt noch eine Reihe besonderer Operatoren:
$foo++; //Erhöht den Wert von $foo um 1, entspricht also $foo = $foo + 1;.
$foo--; //Verringert den Wert von $foo um 1.
$foo += 5; //Erhöht den Wert von $foo um 5, entspricht also $foo = $foo + 5;.
$foo -= 7; //Verringert den Wert von $foo um 7.
$foo *= 9; //Entspricht $foo = $foo * 9;.
$foo /= 6; //Entspricht $foo = $foo / 6;.
$foo %= 4; //Entspricht $foo = $foo % 4;.
Diese Kürzel ersparen einem einen Haufen Tipparbeit.

Diese Kürzel kann man auch mitten in Ausdrücken° (5+4 ist z.B. ein Ausdruck) verwenden.
$baz = 7;
$foo = ($baz += 3) + 10;
weist $baz den Wert 10 und $foo den Wert 20 zu.

Teste, ob du alles verstanden hast
Was gibt dieser Code aus?
<?php
$Ergebnis = 7;
$foo = ($ergbnis++) - 3;
$x = $foo + 12;
$x %= 3;
$Ergebnis += (2 * x);
print($Ergebnis);
?>Es wird "9" ausgegeben.
Mögliche Fehlerquelle:
$ergebnis ist etwas anderes als $Ergebnis. in der 3. Zeile wird daher eine neue Variable $ergebnis geschaffen, ihr Wert auf 0 gesetzt und dann um 1 Erhöht.

Operationen mit Zeichenketten
Wie schon im lezten Abschnitt angesprochen kann eine Variable auch Strings° (Englisch für Zeichenketten) annehmen. In PHP gibt es zwei Möglichkeiten, Strings einzusetzen. Man kann sie entweder in einfache ('') oder in doppelte ("") Anführungszeichen setzen. Um in einfachen Zeichenketten das ' anzuzeigen muss ein Backslash (\) davor gesetzt werden, also z.B. 'Bei \'Donaudampfschiffahrtelektromechanikerausbildungszentren\' handelt es sich um ein langes Wort.'.
Wenn der Backslash selber dargestellt werden soll muss folgendes geschrieben werden: 'c:\\ ist unter Windows die erste Festplatte'.
Die Möglichkeit, die doppelten Anführungszeichen zu benutzen sollte man nur wählen, wenn man einen Zeilenumbruch einfügen will: "1. Zeile\n2.Zeile". \n markiert hier den Zeilenumbruch. Bei dieser Methode muss " durch \", \ durch \\ und $ durch \$ ersetzt werden.
Man sollte nach Möglichkeit immer die einfachen Anführungszeichen verwenden, da diese sehr viel schneller verarbeitet werden als die doppelten.

Strings können auch aneinandergehängt werden, indem man sie durch Punkte trennt:
$string1 = $string2 . $string3;

Man kann auch Zahlen mit Strings verketten:
$ausgabetext = 'Die Summe von 5 und 4 ist ' . (5 + 4) . '.';
Man beachte das Leerzeichen zwischen "ist" und "'". Es dient dazu, dass die 9 nicht direkt an das "ist" drangeklebt wird.
Der Inhalt von $ausgabetext lautet dann "Die Summe von 5 und 4 ist 9.".

Man kann auch schreiben:
print('Die Summe von 5 und 4 ist ' . (5 + 4) . '.');
Auf diese Weise wird der Text direkt ausgegeben, ohne erst in einer Variable gespeichert zu werden:
Die Summe von 5 und 4 ist 9.

Codestrukturen
Bisher wurde unser PHP-Code immer so geschrieben, dass er von oben nach unten komplett durchgefürt wurde. Das ist aber in den meisten Fällen nicht das Ziel, z.B, wenn ein Username geprüft werden soll. Deshalb bietet PHP mehrere Möglichkeiten, den Ablauf des Codes zu beeinflussen:

a)Abbrechen des Programmlaufs
Wenn der Programmlauf an einer bestimmten Stelle abgebrochen werden soll kann dieser Befehl verwendet werden:
return;
Alles, was nach diesem Befehl kommt wird ignoriert, auch HTML-Code. Es sollte sichergestellt werden, dass sämtliche HTML-Tags geschlossen werden, bevor dieser Befehl aufgerufen wird, da sonst eine fehlerhafte Seite entstehen kann.

b)Die if-Abfrage
eine If-Abfrage kontrolliert, ob eine bestimmte Bedingung erfüllt ist.
<?php
if ($alter > 70)
print('Sie sind zu alt für diese Seite. Progrannieren Sie ihre eigene.');
?>Beachte, dass hinter der 2. Zeile kein Semikolon° (Ahh, dieses Wort! Das ist, als ob man sich den ..... mit seide abwischt) ist. If ist auch kein Befehl, sondern eine Abfrage.

Der print-Befehl in der 3. Zeile wird nur ausgeführt, falls $alter > 99 ist.
Außer dem >° (größer als)-Zeichen gibt es noch:
< : Kleiner als
<=: Kleiner oder gleich
>=: Größer oder gleich
==: Gleich (Vorsicht! immmer == schreiben, da sonst dem linken Wert der rechte zugewiesen wird)
!=: ungleich

Zudem gibt es noch den !- oder Nicht-Operator.
!($x > $y) entspricht ($x <= $y)

Im oben genannten Code wird nur eine Codezeile von der Bedingung abhängig gemacht. Was aber, wenn mehrere Zeilen ausgeführt werden sollen. Was aber, wenn mehr als ein Befehl von der Bedingung abhängig gemacht werden soll? Natürlich könnte man schreiben:
<?php
if ($alter > 70)
print('Sie sind zu alt für diese Seite. Progrannieren Sie ihre eigene.<br>');
if ($alter > 70)
$zu_alt = $alter - 70;
if ($alter > 70)
print('Sie hätten ' . $zu_alt . ' Jahre früher kommen müssen.');
?>Das hätte aber viele Nachteile:
Es wäre viel Schreibarbeit
Es wäre extrem unübersichtlich
Es würde mehr Rechenleistung vom Server verbrauchen als nötig
Was wäre, wenn sich $alter wärend des Programmlaufs ändern würde?
Deshalb gibt es die Möglichkeit, eine Folge von Befehlen in geschweifte Klammern ({}) zu schreiben, sodass sie wie ein Befehl behandelt werden:
<?php
if ($alter > 70)
{
print('Sie sind zu alt für diese Seite. Progrannieren Sie ihre eigene.<br>');
$zu_alt = $alter - 70;
print('Sie hätten ' . $zu_alt . ' Jahre früher kommen müssen.');
}
?>
Es gibt auch die Möglichkeit anzugeben, was passieren soll, wenn die Bedingung nicht erfüllt ist:
<?php
if ($alter > 70)
{
print('Sie sind zu alt für diese Seite. Progrannieren Sie ihre eigene.<br>');
$zu_alt = $alter - 70;
print('Sie hätten ' . $zu_alt . ' Jahre früher kommen müssen.');
}
else
{
print('Gratulation! Sie dürfen diese Seite betrachten.<br>');
$jung_genug = 70 - $alter;
print('Sie haben noch ' . $jung_genug . ' Jahre, um sich diese Seite anzuschauen!');
}
?>Der Block nach dem else wird nur ausgeführt, falls die Bedingung nicht zutrifft.

c)Schleifen mit while
Falls ein bestimmter Code mehrfach ausgeführt werden soll kann man eine while-Schleife verwenden:
<?php
$x = 0;
while($x < 5)
{
print($x . "<br>\n");
$x++;
}
?>Diese Schleife wird so lange durchgeführt wie $x kleiner als 5 ist, also in diesem Fall 5 mal:
$x = 0, die Bedingung ($x < 5) ist erfüllt. 0 wird ausgegeben und $x wird auf 1 erhöht.
$x = 1, die Bedingung ($x < 5) ist erfüllt. 1 wird ausgegeben und $x wird auf 2 erhöht.
$x = 2, die Bedingung ($x < 5) ist erfüllt. 2 wird ausgegeben und $x wird auf 3 erhöht.
$x = 3, die Bedingung ($x < 5) ist erfüllt. 3 wird ausgegeben und $x wird auf 4 erhöht.
$x = 4, die Bedingung ($x < 5) ist erfüllt. 4 wird ausgegeben und $x wird auf 5 erhöht.

--. $x = 5, die Bedingung ($x < 5) ist nicht erfüllt. Die Schleife wird verlassen.
Eine Variante dieser Schleife ist
<?php
$x = 5; //Hier ist eine Änderung
do
{
print($x . "<br>\n");
$x++;
}
while($x < 5)
?>Der einzige Unterschied besteht darin, dass die erste Schleife 0 oder meherere Male durchgeführt wird und diese mindestens einmal.

d)for-Schleifen
For-Schleifen sind im Prinzip umgeformte while-Schleifen.[php]<?php
for($x = 0; x < 5; x++)
print($x);
?>ist das gleiche wie
<?php
$x = 0;
while($x < 5)
{
print($x . "<br>\n");
$x++;
}
?>Grundsätzlich gilt also:
for(/*Aktion vor der Schleife*/; /*Bedingung für den erneuten Durchlauf*/; /*Aktion nach jedem Durchlauf*/)
//Befehl(e)
//Kommentare können auch innerhalb einer Zeile stehen, wenn sie zwischen /* und */ stehen.




Das wars vorerst. Edits werden folgen, ich werde in nächster Zeit mindestens noch folgende Themen hinzufügen:
Funktionen
Auswertung von Formularen
Schreiben/Lesen in/aus Dateien
Tipps und Tricks
Eigenes Gästebuch in PHP
Wichtige/interessante Funktionen
Andere Wünsche, Vorschläge und Kritik sind selbstverständlich willkommen.


Version 1.0, letzter Edit° (natürlich nur solche die auch etwas neues bringen, keine rechtschreibfehlerkorrekturen): Noch nicht:D

Akhâphurdam
26.05.2004, 03:20
"(c)2004 by wrtlprnft"

Mach das weg. Wenn du kein WAHRES Copyright hast, könntest du angezeigt werden. Bei mir war es so ;)
Für Copyrights musst du Geld bezahlen - viele wissen das nicht -

Ist nur gut gemeint :)

Remos
28.05.2004, 03:54
Progrannieren? :D
Soll der opa seine Nieren neu programmieren oder woran hast du daran gedacht ;)
Wen nicht verat mir mal was Progrannieren ist :D

Korei
28.05.2004, 07:12
fehlt hier




<?php
$Ergebnis = 7;
$foo = ($ergbnis++) - 3;
$x = foo + 12;
$x %= 3;
$Ergebnis += (2 * x);
print($Ergebnis);
?>

in der 4ten Zeile ein $ für die foo variable?

InXcess
28.05.2004, 15:33
§hiall

Hier ein Link (http://www.apachefriends.org/de/xampp-windows.html) die php auf Ihrem Rechner daheim zum laufen bringen wollen...

dadie
28.05.2004, 20:07
Geiles tut endlihc ferstehe ich was es mit diesen & auf sihc hat THX

wrtlprnft
28.05.2004, 21:14
Original geschrieben von Remos
Progrannieren? :D
Soll der opa seine Nieren neu programmieren oder woran hast du daran gedacht ;)
Wen nicht verat mir mal was Progrannieren ist :D

Hier (http://forum.rpg-ring.com/forum/showthread.php?s=&postid=520028#post520028) kannstes nachlesen.

@Korei: Danke:)