PHP Formular - bei Fehleingabe Formular-Seite an bestimmter Stelle (Anker) laden

  • Hallo, wegen mangelnder PHP-Kenntnisse nutze ich unten angefügtes Script für ein Formular von 4Webmaster.net. Ich finde mich ein wenig darin zurecht, aber nicht ausreichend.
    Leider wusste ich auf meine Fragen nicht so recht, was ich bei der Suche eingeben soll. Bestimmt sind sie irgendwo geklärt, sorry.

    Zu meinem Problem:
    Wenn jemand vergisst bestimmte Angaben beim Ausfüllen zu machen, wird die Seite neu geladen und die entsprechenden Felder werden rot markiert.
    Da das Formular unten auf der Seite angezeigt wird, kann man es dann beim Neuladen nicht sehen. Somit könnte es passieren, dass der Benutzer annimmt, dass das Formular abgeschickt ist.

    Ich möchte also, dass sie Seite im Falle einer Fehlangabe an der Stelle (also an dem Anker) geladen wird, wo das Formular sitzt.

    Kann mir jemand sagen, an welcher Stelle ich das Script dann ergänzen muss?

    Danke,
    Gruß Josi

    Über dem Head:

    CSS-Styles ausgelassen.

    Im Body:

    PHP
    <?phpif ($error || empty($_POST)) {?><form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>" method="post"><fieldset>
    <div class="formulargenerator-4webmaster"><?php if ($error) { ?><div class="error_msg">Bitte alle mit * markierten Felder ausfüllen.</div><?php } ?><div>    <label for="Name"<?php echo !empty($errors['Name']) ? $errors['Name'] : null ; ?>>Name</label>    <input tabindex="1" type="text" id="Name" name="Name" value="<?php echo $_text_Name; ?>" /></div><div>    <label for="Vorname"<?php echo !empty($errors['Vorname']) ? $errors['Vorname'] : null ; ?>>Vorname</label>    <input tabindex="2" type="text" id="Vorname" name="Vorname" value="<?php echo $_text_Vorname; ?>" /></div><div>    <label for="Strasse"<?php echo !empty($errors['Strasse']) ? $errors['Strasse'] : null ; ?>>Straße</label>    <input tabindex="3" type="text" id="Strasse" name="Strasse" value="<?php echo $_text_Strasse; ?>" /></div><div>    <label for="PLZ"<?php echo !empty($errors['PLZ']) ? $errors['PLZ'] : null ; ?>>PLZ</label>    <input tabindex="4" type="text" id="PLZ" name="PLZ" value="<?php echo $_text_PLZ; ?>" /></div><div>    <label for="Ort"<?php echo !empty($errors['Ort']) ? $errors['Ort'] : null ; ?>>Ort</label>    <input tabindex="5" type="text" id="Ort" name="Ort" value="<?php echo $_text_Ort; ?>" /></div><div>    <label for="Bundesland"<?php echo !empty($errors['Bundesland']) ? $errors['Bundesland'] : null ; ?>>Bundesland</label>    <input tabindex="6" type="text" id="Bundesland" name="Bundesland" value="<?php echo $_text_Bundesland; ?>" /></div><div>    <label for="Telefon"<?php echo !empty($errors['Telefon']) ? $errors['Telefon'] : null ; ?>>Telefon</label>    <input tabindex="7" type="text" id="Telefon" name="Telefon" value="<?php echo $_text_Telefon; ?>" /></div><div>    <label for="Fax"<?php echo !empty($errors['Fax']) ? $errors['Fax'] : null ; ?>>Fax</label>    <input tabindex="8" type="text" id="Fax" name="Fax" value="<?php echo $_text_Fax; ?>" /></div><div>    <label for="Mobiltelefon"<?php echo !empty($errors['Mobiltelefon']) ? $errors['Mobiltelefon'] : null ; ?>>Mobiltelefon</label>    <input tabindex="9" type="text" id="Mobiltelefon" name="Mobiltelefon" value="<?php echo $_text_Mobiltelefon; ?>" /></div><div>    <label for="EMail"<?php echo !empty($errors['EMail']) ? $errors['EMail'] : null ; ?>>E-Mail *</label>    <input tabindex="10" type="text" id="EMail" name="EMail" value="<?php echo $_text_EMail; ?>" /></div><div class="controlset">    <span<?php echo !empty($errors['Appartement']) ? $errors['Appartement'] : null ; ?>>Folgendes Appartement wäre für mich interessant</span>    <input tabindex="11" type="checkbox" id="Untergeschoss_Wohnung" name="Appartement[]" value="Untergeschoss_Wohnung"<?php echo $_checkbox_Appartement_Untergeschoss_Wohnung; ?> /><label for="Untergeschoss_Wohnung">Untergeschoss-Wohnung</label>     <input tabindex="12" type="checkbox" id="Obergeschoss_Wohnung" name="Appartement[]" value="Obergeschoss_Wohnung"<?php echo $_checkbox_Appartement_Obergeschoss_Wohnung; ?> /><label for="Obergeschoss_Wohnung">Obergeschoss-Wohnung</label> <br>    <input tabindex="13" type="checkbox" id="Reihenhaus" name="Appartement[]" value="Reihenhaus"<?php echo $_checkbox_Appartement_Reihenhaus; ?> /><label for="Reihenhaus">Reihenhaus</label> </div> <br style="clear: both;" /><div>    <label for="Buchungszeitraum1"<?php echo !empty($errors['Buchungszeitraum1']) ? $errors['Buchungszeitraum1'] : null ; ?>>Ich interessiere mich für folgenden Buchungszeitraum</label>    <input tabindex="14" type="text" id="Buchungszeitraum1" name="Buchungszeitraum1" value="<?php echo $_text_Buchungszeitraum1; ?>" /></div><div>    <label for="Buchungszeitraum2"<?php echo !empty($errors['Buchungszeitraum2']) ? $errors['Buchungszeitraum2'] : null ; ?>>Alternativer Buchungszeitraum</label>    <input tabindex="15" type="text" id="Buchungszeitraum2" name="Buchungszeitraum2" value="<?php echo $_text_Buchungszeitraum2; ?>" /></div><br><br><label for="Mietwagen"<?php echo !empty($errors['Mietwagen']) ? $errors['Mietwagen'] : null ; ?>>Mietwagen oder Sonstiges</label><textarea tabindex="16" id="Mietwagen" name="Mietwagen" rows="5" cols="20"><?php echo $_textarea_Mietwagen; ?></textarea><div style="text-align: center; margin: 5px;">    <input type="submit" value="Absenden" /></div><p style="text-align: center; margin: 0px;">Mit * gekennzeichnete Felder müssen ausgefüllt werden.</p></div></fieldset></form><?php} else {    $body = '';    $body .= 'Name: '.htmlspecialchars(!empty($_POST['Name']) ? $_POST['Name'] : '', ENT_QUOTES, 'UTF-8').'<br>';    $body .= 'Vorname: '.htmlspecialchars(!empty($_POST['Vorname']) ? $_POST['Vorname'] : '', ENT_QUOTES, 'UTF-8').'<br>';    $body .= 'Strasse: '.htmlspecialchars(!empty($_POST['Strasse']) ? $_POST['Strasse'] : '', ENT_QUOTES, 'UTF-8').'<br>';    $body .= 'PLZ: '.htmlspecialchars(!empty($_POST['PLZ']) ? $_POST['PLZ'] : '', ENT_QUOTES, 'UTF-8').'<br>';    $body .= 'Ort: '.htmlspecialchars(!empty($_POST['Ort']) ? $_POST['Ort'] : '', ENT_QUOTES, 'UTF-8').'<br>';    $body .= 'Bundesland: '.htmlspecialchars(!empty($_POST['Bundesland']) ? $_POST['Bundesland'] : '', ENT_QUOTES, 'UTF-8').'<br>';    $body .= 'Telefon: '.htmlspecialchars(!empty($_POST['Telefon']) ? $_POST['Telefon'] : '', ENT_QUOTES, 'UTF-8').'<br>';    $body .= 'Fax: '.htmlspecialchars(!empty($_POST['Fax']) ? $_POST['Fax'] : '', ENT_QUOTES, 'UTF-8').'<br>';    $body .= 'Mobiltelefon: '.htmlspecialchars(!empty($_POST['Mobiltelefon']) ? $_POST['Mobiltelefon'] : '', ENT_QUOTES, 'UTF-8').'<br>';    $body .= 'EMail: '.htmlspecialchars(!empty($_POST['EMail']) ? $_POST['EMail'] : '', ENT_QUOTES, 'UTF-8').'<br>';    $body .= 'Appartement: ';    if(!empty($_POST['Appartement'])) {        foreach ($_POST['Appartement'] as $value) {            $body .= htmlspecialchars($value, ENT_QUOTES, 'UTF-8').', ';        }    }    $body .= '<br>';    $body .= 'Buchungszeitraum1: '.htmlspecialchars(!empty($_POST['Buchungszeitraum1']) ? $_POST['Buchungszeitraum1'] : '', ENT_QUOTES, 'UTF-8').'<br>';    $body .= 'Buchungszeitraum2: '.htmlspecialchars(!empty($_POST['Buchungszeitraum2']) ? $_POST['Buchungszeitraum2'] : '', ENT_QUOTES, 'UTF-8').'<br>';    $body .= 'Mietwagen:<br>'.htmlspecialchars(!empty($_POST['Mietwagen']) ? $_POST['Mietwagen'] : '', ENT_QUOTES, 'UTF-8').'<br><br>';    if(send_email('ferienhausnerja.de Anfrage', $body, $receiver)) {echo "<script type='text/javascript'>document.location='danke.html';</script>";    } else {        echo "<script type='text/javascript'>document.location='fehler.html';</script>";    }}?>
  • Hallo Bandit,

    entschuldigung, da habe ich meine Frage wohl etwas falsch formuliert.
    Mir würde es auch reichen, wenn ich nur einen Lösungsansatz hätte, dann würde ich selber schauen, wo das reinkommt. Das Problem ist eben, dass ich nicht genau weiß, was ich bei der Suche eingeben muss (Xeretic witzigerweise auch). Ich werde nun versuchen, den Ansatz von Xeretic aufzugreifen.

  • Okay, ich scheine jetzt eine Lösung gefunden zu haben. Gute Suchworte sind übrigens: "formular php anker" - .

    Habe meinen schon gesetzten Anker verwendet und dann:

    PHP
    <form action="testkontakt.php?#kontaktformular" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>" method="post">

    Nun ist action ja doppelt. Leider ist mir die Bedeutung von dem Php-Teil nicht ganz klar. Wenn ich es ganz rausnehme, funktioniert das Formular trotzdem. Wenn ich es wieder reintue, so wie oben, dann auch.

    Mag mir das jemand erklären bzw. mutmaßen, ob es so wie es jetzt steht Probleme geben könnte?

    edit:
    Geht es auch so? (ja es funktioniert, aber ist es richtig)?

    PHP
    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>#kontaktformular" method="post">

    Einmal editiert, zuletzt von Josifine (1. Februar 2012 um 12:52)