Pagerankanzeige ohne Googletoolbar TM

Navigation

Paidmails

Geldverdienen

Service

Formel 1 Info

Kontaktformular - Kapitel 4 PHP MySQL Server - Dynamische Seiten

 

EinleitungPHP - Kurs für Einsteiger - 15 Kapitel | Beispiele

Hauptseite | Vorwort | Kapitel: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15

Seite: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8


Ein neues Script: HTML und PHP werden kombiniert

Obwohl wir uns zu unserer erfolgreichen dynamischen Webseite gratulieren dürfen,
ist deutlich, dass noch einige Schönheitsfehler auszubügeln sind. In der jetzigen Form
ist es sehr einfach. Aber im Ernstfall werden wir dafür sorgen wollen, dass das Formular
nur vollständig ausgefüllt abgeschickt wird, und der Besucher gegebenenfalls eine
entsprechende Aufforderung bzw. Bitte erhält. Dies wurde bisher nicht integriert und soll
nun nachgeholt werden.

Hier kommt nun eine entscheidende Überlegung hinzu: wenn das Formular unvollständig
abgeschickt wird, soll die Meldung erfolgen und der Surfer die Möglichkeit haben, in dem
Formular seine Angaben erneut einzugeben. Das heißt, PHP rekurriert auf und verarbeitet
bereits getätigte Eingaben, erzeugt die Fehlermeldung und soll anschließend das Formular
erneut anzeigen. Daher ist es nun sinnvoll bzw. erforderlich, nicht mehr Dateien zu arbeiten,
sondern HTML und PHP in einem Dokument zu kombinieren. (Eine andere Möglichkeit wäre
es, im PHP-Script die Felder des HTML-Formulars als Felder mit dem Typ Hidden wieder
aufzunehmen): Das Resultat wird dann eine Seite sein, die sowohl die Formularfelder zeigt
als auch die Feedback-Meldungen.

Wir machen uns am wenigsten Mühe, wenn wir das bisherige HTML-Script sowie das
PHP-Script kopieren, im Editor eine Datei beginnen und die Kopien in die neue Datei einfügen.

Danach wird es dann um die Elemente ergänzt, die notwendig sind, um den Besucher
auf eine fehlende Eingabe aufmerksam zu machen.

Wir benutzen dazu wieder eine if-Anweisung, denn es geht ja wieder um eine Bedingung,
die wahr oder falsch sein kann: ist das Feld ausgefüllt (true) oder nicht (false). Der im
nächsten Abschnitt vorgestellte Weg ist nicht der eleganteste, wird aber fürs Erste verwendet,
damit ie Eingaben nachvollziehbar bleiben, obwohl die Schreibweise im Prinzip zu umständlich ist.
In dem Kapitel, in dem ein Gästebuch programmiert wird, erfahren wir dann, wie eine ähnliche
Aufgaben geschickter gelöst werden kann.

Fehlende Eingaben im Script berücksichtigen

  1. Öffnen wir ein leeres Dokument im Editor und fügen wir die Kopie des HTML-Scripts
    und das PHP-Scripts in das neue Dokument ein.
  2. Der HTML-Teil kann fast so bleiben wie er ist. Das Attribut action im < form >-Tag
    braucht natürlichen einen anderen Wert, denn wir verweisen jetzt ja nicht auf eine
    zweite PHP-Datei, die die Daten verarbeitet. Geben wir also den Dateinamen dieser
    Datei ein.

<form action="aktuelle_Datei.php" >

Außerdem löschen wir vor dem Beginn des eingefügten PHP-Teil die Tags, die den
Body-Container und HTML schließen.

Es gibt auch die Variable $PHP_SELF . In dieser Variablen steht immer der Pfad zu der
aktuellen Datei. Wenn wir also über das action -Attribut das Script sich selbst aufrufen
lassen wollen, können wir diese Variable verwenden. Wir müssten dann Folgendes als action setzen:

action="<?php echo $PHP_SELF;?>".

Beachten wir, dass der Befehl, da $PHP_SELF eine PHP-Variable ist, durch die
PHP-Zeichen abgegrenzt werden muss.

  1. Der PHP-Teil wird mit <?php geöffnet. Die mit echo beginnenden Zeilen bleiben
    ebenfalls wie gehabt, also wie Listing 4.3.
  2. Erzeugen wir danach eine neue Zeile und schreiben eine if-Anweisung:

    if (!$vorname) {echo='Bitte geben Sie einen Vornamen ein<br>';}

Erklärungsbedürftig ist das Ausrufezeichen vor der Variablen $vorname. Um es zu
verstehen, machen wir uns am besten noch einmal klar, was eine if-Anweisung auf gut
deutsch sagt: wenn die Bedingung true (wahr) ist, dann soll ein bestimmtes Ereignis eintreten.
If($vorname) ist true , wenn in der Variablen beliebiger Text enthalten ist. Wir wollen aber
ein Ereignis eintreten lassen, wenn die Bedingung nicht wahr ist, was der Fall ist, wenn das Feld
leer bleibt. Das Zeichen für den logischen Operator NOT ist das Ausrufezeichen. Der Wert der
Bedingung wird umgedreht: aus true wird false und aus false wird true. Durch die if-Anweisung
in Kombination mit dem Setzen des Ausrufezeichens vor die Variable wird somit der Ausdruck true,
wenn kein Text in der Variablen gespeichert ist. Dadurch klappt dann wieder die gewünschte
Anweisung, die ja ausgeführt wird, wenn die Bedingung wahr ist.

•  In die nächsten Zeilen schreiben wir analog:

if (!$nachname) {echo='Bitte geben Sie einen Nachnamen ein<br>';}

if (!$email) {echo='Bitte geben Sie Ihre E-Mail-Adresse ein<br>';}

•  Wir können in der Klammer jetzt auch noch kombinieren, d.h. die Variablen verketten,
und für entsprechende Meldungen sorgen, wenn mehr als ein Feld nicht ausgefüllt wurde.
Dann hieße es beispielsweise:

if (!$vorname AND !$nachname) {echo='Bitte geben Sie einen Vor- und Nachnamen ein<br>';}

•  Nach diesen ersten if-Anweisungen folgen die if-Bedingungen, mit denen ausgedrückt wird, dass abhängig von dem Votum in der Auswahlliste, bestimmte Meldungen erscheinen sollen, sofern alle Felder ausgefüllt wurden. Wir sehen im Listing 4.3, dass hierfür AND-Verknüpfungen verwendet wurden.

Nach den if-Anweisungen schließen wir den PHP-Teil und dann denn Body-Container und HTML.

Einträge in den Formularfeldern stehen lassen

Wenn wir das Script weiter perfektionieren möchten, können wir nun noch dafür sorgen,
dass die Eingaben nach dem Abschicken in den Formularfeldern angezeigt bleiben. Das hätte
für den User den Vorteil, dass er, sofern er das Formular versehentlich mit einem Leerfeld
abschickt, nicht noch mal alles eingeben muss.

Wir erreichen dies damit, dass wir den Formularelementen einen value zuweisen, mit dem
der jeweilige Eintrag ausgegeben wird. Dies sind in dem Fall die Variablen, die den jeweiligen
Inhalt der Felder enthalten. Setzen wir den Cursor also in das erste Formularelement nach
name=vorname
und schreiben wir:

Value=“<?php echo $vorname;?>“

Die weiteren Formularelemente ergänzen wir dann analog.

Damit haben wir fürs Erste genug an dem Programm-Code gebastelt. Speichern wir die
Datei, aber denken wir daran, die Datei unter dem Namen zu speichern, den wir als Wert
des Attributs action angegeben haben. Wenn wir den obigen Tipp berücksichtigt haben,
sorgt PHP automatisch dafür, dass die Datei sich selbst aufruft. Wir sehen in
Listing 4.4, dass wir die Variable $PHP_SELF verwendet haben.

<html>
<head>
<title>Kontaktformular</title>
</head>
<body>
<form action="<?echo $PHP-SELF; ?>" method=post>
Vorname <br>
<input type=text name="vorname" value="<?php echo $vorname;?>" size=20> <br>
Nachname <br>
<input type=text name="nachname" value="<?php echo $nachname;?>"size=20> <p>
E-Mail <br>
<input type=text name="email" value="<?php echo $email;?>" size=30> <p>

<h4>Wie hat Ihnen die Seite gefallen?</h4><p>

<select size=1 name="rank">
<option value="keine Angabe">keine Angabe</option>
<option value="sehr gut">sehr gut</option>
<option value="gut"> gut</option>
<option value="nicht so gut">nicht so gut</option>
</select>
<input type=submit name="submit" value="abschicken">
</form>

<?php

echo "Ihr Vorname ist <br>$vorname <br>";
echo "Ihr Nachname ist <br>$nachname <br>";
echo "Ihre E-Mail-Adresse ist <br>$email <br>";
echo "Ihre Note für unser Spiel ist <br>$rank<p>";
if (!$vorname) {echo 'bitte geben Sie einen Vornamen ein <br>';}
if (!$nachname) {echo 'bitte geben Sie einen Nachnamen ein <br>';}
if (!$email) {echo 'bitte geben Sie Ihre E-Mail-Adresse ein<p>';}
if ($vorname AND $nachname AND $email AND $rank=="keine Angabe")
{ echo"<b>Vielen Dank und bis bald</b>";}

if ($vorname AND $nachname AND $email AND $rank=="sehr gut")
{ echo "schön, dass Ihnen die Seitegefallen hat";}

if ($vorname AND $nachname AND $email AND $rank=="gut")
{ echo “schön, dass Ihnen diie Seite gefallen hat”;}

if ($vorname AND $nachname AND $email AND $rank=="nicht so gut")
{ echo "schade, dass Ihnen die Seite nicht gefallen hat";}


?>

</body></html>

Listing 4.4 : Das PHP-Script ,das die Formulardaten verarbeitet und eine Fehlermeldung ausgibt,
wenn die Felder nicht vollständig ausgefüllt werden.

Das Script testen

Testen wir nun das Script, indem wir es im Browser öffnen. Wir erhalten, ersichtlich im Bild 4.5,
das Formular, die Feedback-Meldungen und darunter die Aufforderungen, die Felder auszufüllen
(da sie beim Aufrufen der Seite naturgemäß alle leer sind). Wir gehen mal davon aus, dass wir
uns die Seite zu Recht etwas anders vorgestellt haben. Wir müssen also noch etwas mehr an dem
Script feilen.

 
 
  http://localhost/index.php
 
 

E-Mail

Wie hat Ihnen die Seite gefallen

Ihr Nahme ist
Ihr Nachname ist
Ihre E-Mail-Adresse ist
Ihre Note für unsere Seite ist
bitte geben Sie einen Vornamen ein
bitte geben Sie Ihren Nahmen ein

 
Bild 4.5: So soll die Seite beim Aufrufen eigentlich nicht aussehen!

Auf jeden Fall soll der Besucher nicht sofort mit den Meldungen konfrontiert werden,
seinen Namen etc. einzugeben. Hier gibt es eine Lösung. Zunächst können wir aber testen,
ob die eingebauten Fehlermeldungen klappen. Füllen wir die Felder aus bis auf eins, in das
wir nichts eingeben, wählen wir eine Option im Auswahlfeld und klicken auf abschicken .
Wir müssten nun eine entsprechende Meldung erhalten.

Welche Werte werden bei nicht ausgefüllten Formularelementen übertragen?

Die Frage, was eigentlich übermittelt wird, wenn leere Formularfelder abgeschickt werden,
lässt sich pauschal nicht beantworten, da dies je nach Art des Formularelements variiert.
Ein kurzer Überblick:

text/hidden/textarea : Wird nichts in das Textfeld eingetragen,
existiert zwar die entsprechende Variable, aber ihr ist kein Wert zugewiesen.

Checkbox/radio : Wird kein Wert mit Hilfe des value-Attributs gesetzt, wird on übertragen, sowie die checkbox/radio-Elemente aktiviert werden. Wird das Element nicht aktiviert, wird nichts übertragen, auch der Variablenname nicht.

 
 
  http://localhost/index.php
 
 

E-Mail


Wie hat Ihnen die Seite gefallen

Ihr Nahme ist
Hans
Ihr Nachname ist
Mustermann
Ihre E-Mail-Adresse ist
info@ihredomain.de
keine Angabe
Bitte geben Sie Ihren Nachnamen ein

 
Bild 4.6: Soweit hat es geklappt, die Meldung erscheint.

In dem Array $HTTP-POST-VARS gibt es in diesem Fall kein Element mit dem Namen der
checkbox/radio-Elemente.

Meldungen unterdrücken

Öffnen wir gegebenenfalls erneut das PHP-Script. Der Trick, die Meldung zu unterdrücken,
damit sie beim Aufruf der Seite nicht angezeigt werden, ist ein Hilfsfeld mit dem Typ hidden
und einem beliebigen Wert. Mit dem Wert des Feldes können wir eine if-Anweisung schreiben,
über die geprüft wird, ob das Formular bereits abgeschickt wurde. Wir müssen also den
< form >-Container um folgende Zeile ergänzen:

<input type=hidden name=sent value=1>

Gleich nach dem Öffnen des PHP-Teils beginnen wir die if-Bedingungen

If ($sent= =1) {

Diese Bedingung endet mit der geschweiften Klamme nach den if-Anweisungen
für die Meldung, dass bestimmte Eingaben fehlen, also vor dem ende des PHP-Teils.
Speichern wir unser Script nach diesen Ergänzungen ab und rufen wir es erneut auf.
Wir dürften jetzt nur ein leeres Formular erhalten, da wir mit der Variablen $sent
gesagt haben: Gib nur Meldungen aus, wenn das Formular abgeschickt wurde.

Die Reihenfolge des Scripts umkehren

Die Seiten sind immer noch nicht ganz nach Wunsch. Also störend empfinden wir
wahrscheinlich, dass man nun – durch die Kombination von HTML mit dem PHP-Teil ständig
das Formular vor Augen hat. Ansprechender wäre es, wenn das Formular nur erscheint, um es
auszufüllen oder um Fehler zu beheben und die Meldungen auf einer Seite ohne die
Formularfelder ( so wie es eingangs war). Diesem Problem können wir zu Leibe rücken,
indem wir zunächst die Reihenfolge umkehren und den PHP-Teil an den Anfang des Scripts
setzen, den PHP-Teil dann beenden und den HTML-Teil beginnen.

Dadurch können wir dann gleich zu Beginn die Programmzeilen für das Feedback und die

if-Befehle für die Fehlermeldungen in eine if-Anweisung stecken mit der Prüfbedingung
if(sent= =1) , mit der Folge, dass die Rückmeldungen als auch die Fehlermeldung nur
angezeigt werden, wenn das Formular abgeschickt wurde. Dann müssen wir auch den
gesamten Formularteil – also von <form action=... > bis </form> - in eine if-Anweisung
setzen, damit er nur angezeigt wird, wenn das Formular noch nicht abgeschickt wurde,
also $sent noch nicht existiert (if(!sent).

Beachten wir, dass der Block der if-Anweisung auch den Teil des Formulars beinhaltet
(obwohl der PHP-Teil beendet wurde). Deshalb muss nach </form> die if-Anweisung
geschlossen werden, vergessen wir also die schließende Klammer dieses Blocks nicht
und denken daran, diese Klammer vorher wieder als PHP zu kennzeichnen. Listing 4.5
zeigt das modifizierte Script:

<html>
<head>
<title>Kontaktformular</title>
</head>
<body>

<?php

if(sent==1) {
echo "Ihr Vorname ist <br>$vorname <br>";
echo "Ihr Nachname ist <br>$nachname <br>";
echo "Ihre E-Mail-Adresse ist <br>$email <br>";
echo "Ihre Note für unsere Seite ist <br>$rank<p>";

if (!$vorname) {echo 'bitte geben Sie einen Vornamen ein <br>';}
if (!$nachname) {echo 'bitte geben Sie einen Nachnamen ein <br>';}
if (!$email) {echo 'bitte geben Sie Ihre E-Mail-Adresse ein<p>';}
if ($vorname AND $nachname AND $email AND $rank=="keine Angabe")
{ echo " <b>Vielen Dank und bis bald</b>";}

if ($vorname AND $nachname AND $email AND $rank=="sehr gut")
{ echo "schön, dass Ihnen das Spiel gefallen hat";}

if ($vorname AND $nachname AND $email AND $rank=="gut“)
{ echo"schön, dass Ihnen das Seite gefallen hat”;}

if ($vorname AND $nachname AND $email AND $rank=="nicht so gut")
{ echo "schade, dass Ihnen die Seite nicht gefallen hat";}

}

if(sent= =1) {

?>

<form action="<?echo $PHP-SELF; ?>" method=post>
<input type=hidden name=sent value=1>
Vorname <br>
<input type=text name="vorname" value="<?php echo $vorname;?>" size=20> <br>
Nachname <br>
<input type=text name="nachname" value="<?php echo $nachname;?>"size=20> <p>
E-Mail <br>
<input type=text name="email" value="<?php echo $email;?>" size=30> <p>

<h4>Wie hat Ihnen die Seite gefallen?</h4><p>

<select size=1 name="rank">
<option value="keine Angabe">keine Angabe</option>
<option value="sehr gut">sehr gut</option>
<option value="gut"> gut</option>
<option value="nicht so gut">nicht so gut</option>
</select>
<input type=submit name="submit" value="abschicken">
</form>

<?php

echo "Ihr Vorname ist <br>$vorname <br>";
echo "Ihr Nachname ist <br>$nachname <br>";
echo "Ihre E-Mail-Adresse ist <br>$email <br>";
echo "Ihre Note für unser Spiel ist <br>$rank<p>";
if (!$vorname) {echo 'bitte geben Sie einen Vornamen ein <br>';}
if (!$nachname) {echo 'bitte geben Sie einen Nachnamen ein <br>';}
if (!$email) {echo 'bitte geben Sie Ihre E-Mail-Adresse ein<p>';}
if ($vorname AND $nachname AND $email AND $rank=="keine Angabe")
{ echo"<b>Vielen Dank und bis bald</b>";}

if ($vorname AND $nachname AND $email AND $rank=="sehr gut")
{ echo "schön, dass Ihnen die Seitegefallen hat";}

if ($vorname AND $nachname AND $email AND $rank=="gut")
{ echo “schön, dass Ihnen diie Seite gefallen hat”;}

if ($vorname AND $nachname AND $email AND $rank=="nicht so gut")
{ echo "schade, dass Ihnen die Seite nicht gefallen hat";}


?>

</body></html>

Listing 4.5: das Script ergänzt durch die Variable $sent bzw. die Negation der Variablen, sodass
das Formular nur beim ersten Aufrufen der angezeigt wird.

In vielen Beschreibungen zu PHP wird die Submit-Schaltfläche verwendet, um zu testen,
ob das Formular bereits gesendet wurde oder nicht. Dieses Verfahren spart das versteckte
Eingabefeld, allerdings können wir mit dem versteckten Eingabefeld geschickter durch das Script
navigieren, wenn wir z.B. Informationen zusammentragen möchten, die wir auf mehreren Seiten
in unterschiedlichen Formularen vom Surfer erfragen oder bei fehlerhafter Eingabe das Formular
erneut anzeigen möchten. Da wir beliebige Werte festlegen können und nicht nur auf true oder
false beschränkt sind, können wir mehrere Formulare nacheinander anzeigen lassen.

Auch dieses Script ist noch nicht ganz das Gelbe vom Ei , da das Formular nun nicht mehr
angezeigt wird, wenn Felder nicht ausgefüllt wurden. Dies liegt daran, dass $sent nach dem
Abschicken des Formulars immer 1 ist, das Formular aber nur angezeigt wird, wenn $sent nicht
existiert. Damit das Formular bei Fehlern wieder auftaucht, muss $sent gelöscht werden, sodass
die if-Bedingung (!$sent) zum Anzeigen des Formulars wieder zutrifft.

Eine Variable löschen wir mit dem Befehl:

unset ($Variablenname)

Diesen Befehl müssen wir also im Falle eines Fehlers/nicht ausgefüllten Feldes verwenden.
Schreiben wir in den if-Zweig der drei Fehlerprüfungen die zusätzliche Zeile:

unset ($sent)

Eine Fehlerprüfung sieht dann folgendermaßen aus:

if (!$vorname)

{

echo ‚Bitte geben Sie einen Vornamen ein<br>';

unset ($sent);

}

Listing 4.6 Scriptfragment mit Fehlermeldung und löschen der Variablen $sent.

int unset(mixed variablen)

Diese Funktion löscht eine Variable oder einen Array.

Weiter zu Strings bearbeiten>>>>

Kleiner Hinweis: Wir bieten auch ein Pagrenkservice an. <<Keine Angst anmelden kostet NIX!>>


RANKING CHARTS 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20
KW HS MG VD
Live Band | Portal4 Europa | Paidmail-Service | IHR LINK | IHR LINK | IHR LINK   . .

Pagerank dieser Seite: ::: www.sind-sie-bereit.de ::: Pagerank Anzeige ohne Toolbar

Sind Sie Bereit für den Urlaub den Sie sich VERDIENT haben? Portal für Europa oder hier auf unser Urlaubseite!
Informationen über Ungarn finden Sie auf der Seite Ungarn / Balaton.

Informationen über Paidmails finden Sie auch auf den Seiten Kowsky-Web, HS-SUPPORT und Verdient Schon.