Hey,
wie Gastl gesagt hat. Man kann <br>-tags (zeilenumbrüche) mit einfügen.
Zu deinem Problem mit Ausgabe der Errors:
Es lag an diesem if block :
Falsch
else if (isset($errors) && count($errors) > 0) {
echo '<ul>';
foreach($errors as $error) {
echo '<li> $error </li>'; // hier liegt dein Fehler
}
echo '</ul>';
}
Alles anzeigen
Dort hast du bei der ausgabe mit der foreach schleiche die variable $error in html geschrieben. So erkennt der PHP-Interpreter auf dem Server nicht das $error eine php-variable ist.
Du erreichst es das dieser dies erkennt in dem du die php variable wieder mit dem verkettungsoperator mit den html tags verkettest. Siehe Beispiel:
Richtig
else if (isset($errors) && count($errors) > 0) {
echo '<ul>';
foreach($errors as $error) {
echo '<li> ' . $error . '</li>';
}
echo '</ul>';
}
Alles anzeigen
Ich würde dir raten für jedes input feld eine eigene Fehlermeldung zu machen.Dann erkennt auch der jenige der das Formular ausfüllt genau wo seine Fehler waren.
Ebenso rate ich dir immer bei dem hinzufügen der werte zu den variablen zuerst zu überprüfen ob diese werte vorhanden sind und wenn ja speichere die werte in die variablen wenn nicht setze die variable auf null.
Siehe Beispiele:
Fehlermeldungen:
if(empty($name)){
$errors[] = 'Bitte Name angeben!';
}
if(empty($email)){
$errors[] = 'Bitte Email-Adresse angeben!';
} else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$errors[] = 'Bitte eine gültige Email-Adresse angeben!';
}
if(empty($phone)){
$errors[] = 'Bitte Telefonnummer angeben!';
}
if(empty($betreff)){
$errors[] = 'Bitte ein Betreff angeben!';
}
if(empty($message)){
$errors[] = 'Bitte eine Nachricht angeben!';
}
Alles anzeigen
Überprüfung der Eingabe des Users:
// Hier sofort prüfen ob die User eingabe exsestiert und wenn ja diese der variable hinzufügen wenn nicht ist die variable null
// Kurschreibweise : wenn ? dann : sonst;
$name = isset($_POST['name']) ? $_POST['name'] : null;
$email = isset($_POST['email']) ? $_POST['email'] : null;
$phone = isset($_POST['phone']) ? $_POST['phone'] : null;
$betreff = isset($_POST['betreff']) ? $_POST['betreff'] : null;
$message = isset($_POST['message']) ? $_POST['message'] : null;
Natürlich kann man die Fehlermeldungen noch besser machen aber vorerst nur als Veranschaulichung gedacht.
Gruß,
Stef