Peter: Formular mit button absenden?

Hallo,

wie kann ich ein formular absenden, ohne dabei ein <input type="submit> zu benutzen, sondern stattdessen ein
<button type="submit">Senden</button>

Habe es mit button type="submit" und danach
if ($_POST['submit']) {...}
versucht, aber es funktioniert nicht.

  1. Hi,

    wenn der Button keinen Namen hat wird der Wert davon auch nicht übertragen:

    <button type="submit" name="submit">Senden</button>

    ~dave

    1. Hi,

      wenn der Button keinen Namen hat wird der Wert davon auch nicht übertragen:

      <button type="submit" name="submit">Senden</button>

      ~dave

      Hab ich hier nicht hingeschrieben, habs als selbstverständlich erachtet, sorry. Funktioniert aber trotzdem nicht, hier mein ganzer Code.

      <form action="test.php" id="form1" method="post">  
      <label style="padding-right:80px;" for="name">Name:</label>  
      <input type="text" name="name">  
      <br>  
      <br>  
      <label style="padding-right:80px; for="name">E-Mail:</label>  
      <input type="text" name="email">  
      <br>  
      <br>  
      <label style="padding-right:70px; for="webseite">Webseite:</label>  
      <input type="text" name="webseite">  
      <br>  
      <br>  
      <label style="padding-right:50px; for="kommentar">Kommentar:</label>  
      <textarea name="kommentar"></textarea>  
      <br>  
      <br>  
      <br>  
      <button type="submit" name="submit" id="submit">Senden</button>  
      </form>
      
      if ($_POST['submit']) {  
      	$name = $_POST['name'];  
      	$email = $_POST['email'];  
      	$webseite = $_POST['webseite'];  
      	$kommentar = $_POST['kommentar'];  
      	  
      blabla in db einfügen  
        
      echo 'Dein Kommentar wurde hinzugef&uuml;gt!';
      
      1. Hi Peter!

        if ($_POST['submit']) {

          
        Dein Button hat den Namen 'submit', es existiert also auch eine Variable $\_POST["submit"], hat sie aber nach dem Absenden auch den Wert TRUE bzw. 1 (was du hier offensichtlich überprüfst...)? Versuch es mal mit [isset()](http://php.net/manual/de/function.isset.php).  
          
        tschau  
        ichen
        
        -- 
        Halte deine Umwelt sauber!
        
        1. Dein Button hat den Namen 'submit', es existiert also auch eine Variable $_POST["submit"], hat sie aber nach dem Absenden auch den Wert TRUE bzw. 1 (was du hier offensichtlich überprüfst...)? Versuch es mal mit isset().

          tschau
          ichen

          Ah, danke. Es funktioniert mit isset, jedoch weiß ich nicht warum. xD

          1. Hallo,

            Ah, danke. Es funktioniert mit isset, jedoch weiß ich nicht warum. xD

            weil, wie dedlfix Dir zweimal gesagt hat, Dein Button kein value-Attribut hat - und daher, von gewissen Ausnahmen abgesehen, ein Leerstring übertragen wird. Ein Leerstring wird von PHP als der logische Wert false angesehen, siehe Handbuch.

            Nutze doch bitte endlich var_dump, um Dir den Inhalt von $_POST genau anzusehen.

            Freundliche Grüße

            Vinzenz

            1. Nutze doch bitte endlich var_dump, um Dir den Inhalt von $_POST genau anzusehen.

              Freundliche Grüße

              Vinzenz

              da steht jetzt
              ["submit"]=> string(22) "Kommentar hinterlassen" }  und als value hab ich auch kommentar hinterlassen, also dürfte jetzt alles passen?

      2. Tach!

        <button type="submit" name="submit" id="submit">Senden</button>

        Der Button hat kein value-Attribut. Außer bei IEs kleiner als 8, die als Bug den Inhalt vom Element und nicht den vom value-Attribut mitgesendet haben, bekommt der Server also nur ein Element namens submit mit keinem Inhalt.

        if ($_POST['submit']) {

        $name = $_POST['name'];
        $email = $_POST['email'];
        $webseite = $_POST['webseite'];
        $kommentar = $_POST['kommentar'];
        echo 'Dein Kommentar wurde hinzugef&uuml;gt!';

          
        Weder das Umkopieren noch das Verunstalten von Umlauten ist sinnvoll. Beim Umkopieren prüfst du noch nicht einmal, ob der Eintrag überhaupt vorhanden ist. Steck deine Energie lieber in das Erwerben von Debugging-Fähigkeiten. Lern das schon erwähnte var\_dump() kennen und ausgiebig zu nutzen.  
          
          
        dedlfix.
        
  2. Tach!

    wie kann ich ein formular absenden, ohne dabei ein <input type="submit> zu benutzen, sondern stattdessen ein <button type="submit">Senden</button>
    Habe es mit button type="submit" und danach if ($_POST['submit']) {...} versucht, aber es funktioniert nicht.

    Die Keys in $_POST (und $_GET) entsprechen weiterhin dem name-Attribut. Du hast in beiden Varianten keins gesetzt und obendrei auch kein value-Attribut angegeben (zumindest nicht hier gezeigt), also sollte bei keiner von beiden der Vergleich etwas anderes als eine Notice-Meldung bringen, wenn das error_reporting auf E_ALL gestellt wäre. Prüfen was wirklich ankommt, kann man zum Beispiel mit var_dump($_POST);

    dedlfix.