Monika: focus auf leeres formularfeld

Hallo Forum,
in hätte in meinem Formular gerne einen Abfrage drin, dass wenn das Formularfeld (beispiel: Name) leer ist, soll die Seite nochmal angezeigt werden, und der Cursor in diesem Feld stehen (nach Möglichkeit noch der rot markierte Text neben disem Feld, dass man doch bitte seinen Namen eintragen soll.

Leider weiss ich nicht, wie ich das in mein Script einbauen soll, dass die Ursprungsseite nochmal angezeigt wird, bis das Feld ausgefüllt sind. ).
Kann mir jemand bitte helfen:

Vielen Dank im Voraus,
Monika

<?php

Konfiguration

$strEmpfaenger = 'testi@test.com';
$strFrom       = '"Formmailer" Kontaktanfrage@test.de';
$strSubject    = 'Kontakt';
$strReturnhtml = 'http://www.test.com/Kontaktiert.html';
$strDelimiter  = ":\t";

Ende Konfiguration

if($_POST)
{
 $strMailtext = "";

while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

//mein
 if(empty($_POST['Name']))
{
    echo ("bitte Namen eintragen");
 exit;
}
else
{
 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}
//ende mein

}

?>

//////////////////////////////////////////
HIER DAS FORMULAR:
////////////////////////////////////////////

<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post" name="kontakt">
            <table width="363" height="364" border="0" class="text" style="margin-left: 0px">

<tr>
    <td valign="top" nowrap>Ihre Nachricht</td>
    <td><textarea name="Nachricht" style="width:220px; height:70px" rows="7" cols="50"></textarea></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr><tr>
    <td>Name*</td>
    <td><input name="Name"  type="text" value="" style="width:220px;" /></td>
  </tr>

<tr>
    <td height="26">&nbsp;</td>
    <td><input type="submit" value="Senden"/>
</td>
  </tr>
</table>

</form>

  1. Mahlzeit,

    Leider weiss ich nicht, wie ich das in mein Script einbauen soll, dass die Ursprungsseite nochmal angezeigt wird, bis das Feld ausgefüllt sind. ).

    Durch Nutzung eines Affenformulars.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Hello,

    das mit dem Focus ist nicht so sicher möglich.
    Dazu müsstest Du JavaScript bemühen oder darauf vertrauen, dass der Browser die vorgegebene  Tabulator-Reihenfolge beachtet.

    Für die Anzeige eines Warntextes baust Du Dein Affenformular entsprechend um

    Erstmal muss im reinen HTML-Dokument ein Platz dafür vorhanden sein.

    Dann kannst Du im Script prüfen

    $_errormsg = array();

    if (empty($_POST['name']))
       {
           $_errormsg['name'] = 'bitte geben Sie einen Namen an';
       }

    und das dann nachher mit ausgeben lassen

    if(!empty($_errormsg[$feldname]))
       {
           echo "<td class="errormsg">".htmlspechialchars($_errormsg[$feldname])."</td>\r\n";
       }

    echo "<td class="errormsg"><input
                 type="text"
                 size="\50"
                 name="$feldname"
                 value="".htmlspechialchars($_POST[$feldname]).""></td>\r\n";

    Aus dem Ganzen kannst Du Dir dann eine Funktion oder Methode für die Feldausgabe bauen, sodass Du pro Feld nur noch ein paar Argumente übergeben musst, und das ganze HTML- und CSS-Gesummse nur einmal schreiben musst.

    Solange Fehlertexte vorhanden sind, wird dann einfach nicht abgespeichert, sondern immer wieder vorgelegt.

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  3. Hallo,

    in hätte in meinem Formular gerne einen Abfrage drin, dass wenn das Formularfeld (beispiel: Name) leer ist, soll die Seite nochmal angezeigt werden, und der Cursor in diesem Feld stehen

    if ( !$_POST['Name'] )
    {
      $f_name  = "Bitte Ihren Namen";
      $focus   = "document.kontakt.Name.focus()";
    }
    else if ( !$_POST['Vorname'] )
    {
      $f_vname = "Bitte Ihren Vornamen";
      $focus   = "document.kontakt.Vorname.focus()";
    }
    ...
    <body onLoad="<? echo $focus; ?>">
    ...
    <td>Name* <b><? echo $f_name; ?></b></td>
    ...

    Die Meldung und der Focus steht dann auf dem ersten von mehreren möglichen Fehlerfeldern. Wandle das Beispiel so um, dass _alle_ Fehlerfelder mit Nachrichten belegt werden, die "Salamitaktik" (haha, und noch ein Fehler gefunden) ist was für Erstklässler.

    MfG Kalle