Formular-POST und Anker

Nexlamar

Erfahrenes Mitglied
Hi!

Ich habe eine Seite mit mehreren Formularen untereinander, sodass gescrollt werden muss. Wenn jetzt vom untersten Formular Daten abgeschickt werden und dort beispielsweise ein Fehler angezeigt wird, muss der User bisher nach dem erneuten Abruf der Seite wieder manuell runterscrollen. Wie kann ich ihn direkt dort hinschicken?

Danke, Nexlamar
 
Du hast es schon erraten: Setze einfach einen Anker:
HTML:
<form action="foobar#anker" method="post" id="anker">
…
</form>
 
Perfekt, funktioniert das auch bei schon bestehender "action"?
Den Anker hintendranbauen hat nicht geklappt ...

PHP:
<form action="<?php $_SERVER[URL] ?>" method="post">
 
Klar funktioniert auch das:
PHP:
<form action="<?php echo preg_replace('/#.*$/', '', $_SERVER['REQUEST_URI']); ?>#anker" method="post" id="anker">
Oder was genau meinst du?
 
Man sollte es vielleicht auch wie Du machen

PHP:
<form action="<?php $_SERVER[url] ?> #anker" method="post">
und nicht so
PHP:
<form action="<?php $_SERVER[url]#anker ?>" method="post">

;)

Funktioniert perfekt, danke!
 
Hallo leute habe ungefähr das gleiche Problem, nur weiss ich nicht wie ich das mit dem anker in meinem Script machen, bzw. weiss ich das schon aber es funktioniert nicht...

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
    <head>
             <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
                 <title>Willkommen im Café Kaulard!</title>
                 <meta name="keywords" content="Kaulard, Café, Monschau, Kaffee, Kuchen, Torten, Busreisen, Spezialitäten, Bäckerei, Konditorei, Pralinen, Printen, Monschauer Dütchen, Vennbrocken, Eis, Gebäck, Kaffeestube, Confiserie, Monschauer Vennbrocken, Marzipan, Eifel, Wandern">
                 <link rel="stylesheet" href="styles.css">
    </head>

<body>

<?php
    $arrPrinten = array(     "No120a" => "No120 a Kräuterprinten, 250g, 2,50 EUR",
                          "No121b" => "No121 b Kräutermöppchen*, 250g, 3,05 EUR",
                                  "No122c" => "No122 c Prinzessprinten, 250g, 2,65 EUR",
                                  "No123d" => "No123 d Prinzessmöppchen*, 250g, 3,20 EUR",
                                  "No124e" => "No124 e Schokoprinten, 250g, 3,05 EUR",
                                  "No125f" => "No125 f weiche Schokomöppchen*, 250g, 3,70 EUR",
                                  "No126g" => "No126 g Nussmöppchen*, weich, 250g, 4,35 EUR",
                                  "No128"  => "No128 gemischte Möppchen* gefüllt mit b. d. g. f. h., 450g, 7,10 EUR",
                                  "No129"  => "No129 Printen Präsentpackung weiche Möppchen* mit f. g. h., 750g, 16,35 EUR",
                                  "No130"  => "No130 Printen Geschenkdose mit b. f. h. gefüllt, 750g, 15,15 EUR",
                                  "No131"  => "No131 Klarsicht Zellophanpackung gefüllt mit b. d. f. g. h. , 13,75 EUR",
                                  "No136"  => "No136 Kräuter Printen Platte, 2,00 EUR",
                                  "No137"  => "No137 Prinzess Printen Platte, 2,10 EUR",
                                  "No138"  => "No138 Schoko Printen Platte, 3,40 EUR",
                                  "No139"  => "No139 Schoko Nuss Printen Platte, 4,05 EUR",
                                  "No140"  => "No140 Mandel Platte, 3,15 EUR",
                                  "No141"  => "No141 Zimt Platte, 2,15 EUR" );

    $arrPralinen = array(    "No142"  => "No142 Monschauer Vennbrocken in Edelmarzipan, 100g, 3,75 EUR",
                                  "No143"  => "No143 Monschauer Vennbrocken in Cointreau Trüffel, 100g, 3,75 EUR",
                                  "No144"  => "No144 Monschauer Vennbrocken in der Präsentpackung in Marzipan, 200g, 8,15 EUR",
                                  "No145"  => "No145 Monschauer Vennbrocken in Cointreau Trüffel, 200g, 8,15 EUR",
                                  "No146"  => "No146 Feinste, frische Pralinen, 100g, 3,75 EUR",
                                  "No147"  => "No147 gemischte Trüffel Pralinen, 100g, 3,75 EUR" );

    $arrDiabetiker = array(    "No148"  => "No148 Pralinen für Diabetiker, 90g, 4,05 EUR",
                                  "No149"  => "No149 Diabetiker Teegebäck, 125g, 4,20 EUR",
                                  "No150"  => "No150 Diabetiker Lebkuchen, 150g, 3,70 EUR");

         $arrHolzkiste = array(    "No132"  => "No132 Holzpräsentkiste, gefüllt mit b. f., 500g, 10,50 EUR",
                                  "No133"  => "No133 Holzpräsentkiste gefüllt mit b. f. g., 750g, 15,10 EUR",
                                 "No134"  => "No134 Holzpräsentkiste gefüllt mit b. d. f. g., 1000g, 18,35 EUR",
                                  "No135"  => "No135 Holzpräsentkiste gefüllt mit b. d. f. g. h. e., 1500g, 26,90 EUR");

         $arrWeihnachtspräsent = array(    "No1"  => "No1 Feinster Butterstollen 900g, Printen Sortiment 450g, gemischte Trüffel 110g,Marzipan Zimtsterne, 150g, 32,95 EUR",
                                      "No2"  => "No2 Besten Butterstollen 600g, Pralinen Bonbonniere 250g, Printen Sortiment 450g,Orangen Makronen 200g, 36,45 EUR",
                                      "No3"  => "No3 Gemischte Printen 450g, Marzipan Zimtsterne 150g, Vanille Kipferl 200g, 19,05 EUR",
                                      "No4"  => "No4 Kräuter-, Prinzess-, Schoko-, Mandel-, Nuss-Möppchen* zu je 250g, 22,30 EUR",
                                      "No5"  => "No5 Stollen 600g, Nuss Pangani 200g, Pralinen 100g, Marzpian Zimtsterne 150g,gemischte Möppchen* 200g, 33,45 EUR" );

         $arrWeihnachtszeit = array(     "No151" => "No151 Butterstollen mit Marzipan, 900g, 13,60 EUR",
                              "No152" => "No152 Butterstollen mit Marzipan, 700g, 10,55 EUR",
                                      "No153" => "No153 Butterstollen mit Marzipan, 1500g, 22,40 EUR",
                                      "No154" => "No154 Marzipan Zimtsterne, 150g, 3,90 EUR",
                                      "No155" => "No155 Nuss Mandel Zimtsterne, 200g, 4,35 EUR",
                                      "No156" => "No156 Marzipan Kartoffeln, 100g, 2,30 EUR",
                                      "No157" => "No157 Saftige Orangen Makronen, 200g, 4,35 EUR",
                                      "No158" => "No158 Vanille Kipferl, 200g, 4,05 EUR",
                                      "No159" => "No159 Nuss Pangani, 200g, 4,05 EUR");



  if ($_REQUEST['send']) {

      //Formular wird abgeschickt



      $error = '';

      if(isset($_REQUEST['name'])){
      if(strlen($_REQUEST['name']) > 0) {
      }else{
        $error = "<li>Vor - und Zuname</li>\n";
      }
    }

      if(isset($_REQUEST['strasse'])){
      if(strlen($_REQUEST['strasse']) > 0) {;
      }else{
        $error .= "<li>Straße, Hausnummer</li>\n";
      }
    }

      if(isset($_REQUEST['ort'])){
      if(strlen($_REQUEST['ort']) > 0) {
      }else{
        $error .= "<li>PLZ/Wohnort</li>\n";
      }
    }

      if(isset($_REQUEST['telefon'])){
      if(strlen($_REQUEST['telefon']) > 0) {
      }else{
        $error .= "<li>Telefonnummer</li>\n";
      }
    }

      if(isset($_REQUEST['liefertermin'])){
      if(strlen($_REQUEST['liefertermin']) > 0) {
      }else{
        $error .= "<li>Liefertermin</li>\n";
      }
    }


    if (empty($error)) {

      $mailBody = '';

      foreach ($arrPrinten as $key=>$val){
        if (intval($_REQUEST[$key]) > 0) {
          $mailBody .= "$_REQUEST[$key]". " x ".$val."\r\n";
        }
      }

            foreach ($arrPralinen as $key=>$val){
        if (intval($_REQUEST[$key]) > 0) {
          $mailBody .= "$_REQUEST[$key]". " x ".$val."\r\n";
        }
      }

            foreach ($arrDiabetiker as $key=>$val){
        if (intval($_REQUEST[$key]) > 0) {
          $mailBody .= "$_REQUEST[$key]". " x ".$val."\r\n";
        }
      }

            foreach ($arrHolzkiste as $key=>$val){
        if (intval($_REQUEST[$key]) > 0) {
          $mailBody .= "$_REQUEST[$key]". " x ".$val."\r\n";
        }
      }

            foreach ($arrWeihnachtspräsent as $key=>$val){
        if (intval($_REQUEST[$key]) > 0) {
          $mailBody .= "$_REQUEST[$key]". " x ".$val."\r\n";
        }
      }

            foreach ($arrWeihnachtszeit as $key=>$val){
        if (intval($_REQUEST[$key]) > 0) {
          $mailBody .= "$_REQUEST[$key]". " x ".$val."\r\n";
        }
      }

       echo "<pre>";
       echo $mailBody;
       echo "</pre>";



      ?>
      <br>
      <b>Vielen Dank, für Ihre Bestellung</b>
      <?
    }



  }



  if ($_REQUEST['send'] != 'true' || !empty($error))  {
    //Formular erstmalig angezeigt, oder Fehler vorhanden
?>
<form action="bestellung.php" method="post">
   <div id="main">



   <div id="navigation">
         <a href="index.html">
         <img border="none" src="images/logo.gif" class="logo">
         </a>
         <ul>
         <li><a class="chronik" href="chronik.html">&nbsp;</a></li>
    <li><a class="spezialitaeten" href="spezialitaeten.html">&nbsp;</a></li>
         <li><a class="praesente" href="praesente.html">&nbsp;</a></li>
         <li><a class="busreisen" href="busreisen.html">&nbsp;</a></li>
         <li><a class="bestellung" href="bestellung.php">&nbsp;</a></li>
         </ul>

   </div>


   <div id="content">
      <form name="Bestellformular" method="post" action="<?php $PHP_SELF; ?>">
    <div id="header_image">
        <p><img src="images/bestellung.gif"></p>
   </div>
        <p><img src="images/ornament.gif"></p>
        <p><span class="text_format5">Unser Angebot - Ihre Bestellung</span></p>
        <ul class="bestellung_form">
        <li>Mindestbestellwert: 16 EUR</li>
        <li>Mengenrabatt: ab 160 EUR Warenwert 5%, ab 520 EUR Warenwert 10%</li>
        <li>Rechnung zahlbar 14 Tage ohne Abzug. Preisliste gültig bis 1. 9. 2006</li>
        <li>Alle Preise zuzüglich Porto und Verpackungskosten. (Zahlung erfolgt per Rechnung.)</li>
        </ul>

         <p class="text_soLi">Hiermit bestelle ich folgende Artikel des Cafés Kaulard zur sofortigen Lieferung inkl. Porto
         (Auslandsbestellung auf Anfrage) und Verpackung:</p>

         <ul class="bestellung_form">
             <?php
                  foreach ($arrPrinten as $key=>$val){
                    if (intval($_REQUEST[$key]) > 0) $strValue = $_REQUEST[$key];
                else $strValue = '0';
                ?>
         <li><input type="text" value="<?php echo $strValue;?>" name="<?php echo $key;?>" size="2" maxlength="3"><?php echo $val;?></li>
    <?php
              }
        ?>
         </ul>
         <p><span class="text_format7">*(Möppchen= Bezeichnung für eine kleine Printe)</span></p>

         <p class="header_bestellung_format">Unsere taufrischen Pralinen Spezialitäten:</p>
         <ul class="bestellung_form">
             <?php
                  foreach ($arrPralinen as $key=>$val) {
                 if (intval($_REQUEST[$key]) > 0) $strValue = $_REQUEST[$key];
                else $strValue = '0';
                ?>
         <li><input type="text" value="<?php echo $strValue;?>" name="<?php echo $key;?>" size="2" maxlength="3"><?php echo $val;?></li>
         <?php
              }
        ?>
         </ul>

         <p class="header_bestellung_format">NEU - für Diabetiker:</p>
         <ul class="bestellung_form">
             <?php
                  foreach ($arrDiabetiker as $key=>$val) {
                 if (intval($_REQUEST[$key]) > 0) $strValue = $_REQUEST[$key];
                else $strValue = '0';
                ?>
         <li><input type="text" value="<?php echo $strValue;?>" name="<?php echo $key;?>" size="2" maxlength="3"><?php echo $val;?></li>
         <?php
              }
        ?>
         </ul>

         <p class="header_bestellung_format">Geschenk-Holzkisten:</p>
         <ul class="bestellung_form">
             <?php
                  foreach ($arrHolzkiste as $key=>$val) {
                 if (intval($_REQUEST[$key]) > 0) $strValue = $_REQUEST[$key];
                else $strValue = '0';
                ?>
         <li><input type="text" value="<?php echo $strValue;?>" name="<?php echo $key;?>" size="2" maxlength="3"><?php echo $val;?></li>
         <?php
              }
        ?>
         </ul>

         <p class="header_bestellung_format">Weihnachts-Geschenk-Packungen</p>
         <table class="bestellung_tabelle_weihnachtsgeschenk">
             <?php
              foreach ($arrWeihnachtspräsent as $key=>$val) {
                 if (intval($_REQUEST[$key]) > 0) $strValue = $_REQUEST[$key];
                else $strValue = '0';
                ?>
                 <tr>
        <td class="bestellung_weihnachtsgeschenk_form"><input type="text" value="<?php echo $strValue;?>" name="<?php echo $key;?>" size="2" maxlength="3"></td>
                 <td class="bestellung_weihnachtsgeschenk_beschriftung"><?php echo $val;?></td>
                 </tr>
                          <?php
                      }
                 ?>
         </table>
         <p><span class="text_format7">*(Möppchen= Bezeichnung für eine kleine Printe)</span></p>

         <p class="header_bestellung_format">Zur Weihnachtszeit ab November:<br>
               <span class="text_bestellung_format">letzter Versandtag 20. Dezember</span></p>
         <ul class="bestellung_form">
             <?php
              foreach ($arrWeihnachtszeit as $key=>$val) {
                 if (intval($_REQUEST[$key]) > 0) $strValue = $_REQUEST[$key];
                else $strValue = '0';
                ?>
         <li><input type="text" value="<?php echo $strValue;?>" name="<?php echo $key;?>" size="2" maxlength="3"><?php echo $val;?></li>
         <?php
              }
        ?>
         </ul>
  <?php


?>
        <?
          if (!empty($error)) {
           ?>
            <br>
            <b>Folgende Angaben sind nicht korrekt oder fehlen:</b><br>
            <? echo $error;?>

           <?
          }
          ?>
        <table class="bestellung_tabelle">
              <tr>
                 <td class="bestellung_beschriftung">Vor- und Zuname: </td>
                 <td class="bestellung_eingabe">  <input type="text" name="name" size="40" value="<? echo $_REQUEST['name'];?>"></td>
                 </tr>

                 <tr>
                 <td class="bestellung_beschriftung">Straße, Hausnummer: </td>
                 <td class="bestellung_eingabe"><input type="text" name="strasse" size="40" value="<? echo $_REQUEST['strasse'];?>"></td>

                 </tr>

                 <tr>
                 <td class="bestellung_beschriftung">Plz/Wohnort: </td>
                 <td class="bestellung_eingabe"><input type="text" name="ort" size="40"value="<? echo $_REQUEST['ort'];?>"></td>
                 </tr>

                 <tr>
                 <td class="bestellung_beschriftung">Telefon: </td>
                 <td class="bestellung_eingabe"><input type="text" name="telefon" size="24" value="<? echo $_REQUEST['telefon'];?>"></td>
                 </tr>

             <tr>
                 <td class="bestellung_beschriftung">Ihr gewünschter Liefertermin: </td>
                 <td class="bestellung_eingabe"><input type="text" name="liefertermin" size="24" value="<? echo $_REQUEST['liefertermin'];?>"></td>
                 </tr>

         </table>

         <p class="text_lieferadresse">Wünschen Sie die Lieferung an eine Geschenkadresse: </p>

                <table class="bestellung_tabelle">
              <tr>
                 <td class="bestellung_beschriftung">Vor- und Zuname: </td>
                 <td class="bestellung_eingabe"><input type="text" name="gname" size="40" value="<? echo $_REQUEST['gname'];?>"></td>
        </tr>

                 <tr>
                 <td class="bestellung_beschriftung">Straße, Hausnummer: </td>
                 <td class="bestellung_eingabe"><input type="text" name="gstrasse" size="40" value="<? echo $_REQUEST['gstrasse'];?>"></td>
        </tr>

                 <tr>
                 <td class="bestellung_beschriftung">Plz/Wohnort: </td>
                 <td class="bestellung_eingabe"><input type="text" name="gort" size="40" value="<? echo $_REQUEST['gort'];?>"></td>
        </tr>

                 <tr>
                 <td></td>
                 </tr>

         </table>
         <p class="button_abschicken">
         <input type="hidden" name="send" value="true">
         <input class="button" type="submit" value="Abschicken" name="submit">
         </p>
    <p><img src="images/ornament_kl.gif"></p>

    </div>
</form>
<?
}
?>
</body>
</html>

:rolleyes::suspekt:

So, wenn jetzt auf abschicken klicke und ein Fehler auftritt, weil ein Formularfeld nicht ausgefüllt wurde, öffnet sich die seite wieder und der Fehler erscheint oberhalb des Formulars. Allerdings muss man dan bis dahin wieder hinscrollen, hätte aber gerne einen Anker an der position wo der Fehler auftritt, nur wo muss ich den im code hinsetzen

Danke

Gruß Banni
 
Zurück