Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Wie verarbeite ich <radio> und <select> - Felder in einem PHP-Formular?





Frage

Hallo, ich habe jetzt ein normales Formular erstellt. Es funtioniert auch. Nun möchte ich das Formular um ein <radio> und ein <select>- Feld erweitern. Wie muss ich da den PHP-Code für diese Felder schreiben? Muss ich da Array´s erstellen? Wenn ja, wie soll das dann aussehen? Außerdem möchte ich wenn die E-Mail ankommt, das die einzelnen Formularelemente folgendermasen angezeigt werden: Name: blabla E-Mail: blabla@bla.de Telefon: 9328562346 Woher kommst du?: Deutschland usw... Habe ich das bisher im Script richtig eingetragen? Hier ist das Script: <?php if (isset($_POST[´submit´])) { if (!empty($_POST[´email´])) { $mailbody = $_POST[´Name´] . " hat folgendes geschrieben\n\n"; $mailbody .= " Name: " . $_POST[´Name´] . " \n "; $mailbody .= " E-Mail: " . $_POST[´email´] . " \n "; $mailbody .= " Telefon-Nr.: " . $_POST[´Telefon´] . " \n "; $mailbody .= " Betreff: " . $_POST[´Betreff´]; $mailbody = stripslashes($mailbody); $email = $_POST[´email´]; if (@mail("kontakt@meine-homepage.de", "feedback", $mailbody, "From: $email")) { header("Location: http://meine-homepage./betreff_dank.html"); } else { echo "<p>Leider gab es einen Sendefehler!</p>\n"; } } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Kontaktformular</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h2>Feedbackformular</h2> <form action="<?php echo $_SERVER[´PHP_SELF´]; ?>" method="post"> Name: <input type="text" name="Name" value="<?php if (isset($_POST[´Name´])) { echo htmlspecialchars(stripslashes($_POST[´Name´])); } ?>" /><br /> E-Mailadresse: <input type="text" name="email" value="<?php if (isset($_POST[´email´])) { echo htmlspecialchars(stripslashes($_POST[´email´])); } ?>" /><br /> <p>Deine Telefon-Nr.:<br> <input type="text" name="Telefon" size="35" value="<?php if (isset($_POST[´Telefon´])) { echo htmlspecialchars(stripslashes($_POST[´Telefon´])); } ?>" /></p> [b]<p>Woher kommst du?:<br> <select name="Land" size="1"> <option>bitte wählen</option> <option>Deutschland</option> <option>sterreich</option> <option>Schweiz</option> </select>[/b]</p> Kommentar:<br /> <textarea name="botschaft" cols="50" rows="5"> <?php if (isset($_POST[´Betreff´])) { echo stripslashes($_POST[´Betreff´]); } ?> </textarea><br /> [b]<p>Wie findest du die Seite?:<br> <input type="radio" name="Auftrag" value="opteins">Sehr gut<br> <input type="radio" name="Auftrag" value="optzwei">Gut<br> <input type="radio" name="Auftrag" value="optdrei">Geht so<br> <input type="submit" value="Abschicken"/> [/b] </form> </body> </html> Vielen Dank schon mal für eure Antworten. Struggle

Antwort 1 von rabies

Hi,

$_POST["Auftrag"] Kann nur einen Wert haben - da ein Radiobutton gleichen Namens nun einmal nur einen Wert haben kann.

Also bekommst Du, wenn Du $_POST["Auftrag"] ausgibst, auch das angeklickte.

Bei dem select-Feld ist es ähnlich, allerdings musst Du den options jeweils ein "value" geben. Also bspw.: <option value="deutschland">Deutschland</option>

Das kannst Du dann mit $_POST["Land"] auslesen.

--rabies.

Antwort 2 von Struggle

Hallo Rabies,

danke für deine schnelle Antwort.

Also bei dem select-Feld sieht es dann so aus, oder?:

<p>Woher kommst du?:<br>

<select name="Land" size="1">

<option value="keine_angabe">bitte wählen</option>

<option value="Deutschland">Deutschland</option>

<option value="Oesterreich">Österreich</option>

<option value="Schweiz">Schweiz</option>

</select></p>

Und dann im Script oben, dann folgendes eintragen:

$mailbody .= "Aus welchem Land komme ich?: " . $_POST[´Land´] . " \n ";

Liege ich da richtig?


Das mit den Radio-Buttons habe ich aber nicht so richtig verstanden :-(

Struggle

Antwort 3 von rabies

Ja, das mit dem Select ist soweit richtig.


Okay, zu den Radio-Buttons: Es gibt immer nur einen Wert eines Radiobuttons. Radio-Buttons werden mithilfe des "name"-Attributes im HTML zusammengefasst. Es bleibt einem bei einem Radiobutton nur die Möglichkeit, entweder gar nichts auszuwählen, oder einen der Werte - aber nicht mehrere.

Hast Du nun zum Beispiel wie in Deinem Script folgenden HTML-Quelltext:

<input type="radio" name="Auftrag" value="opteins">Sehr gut<br>

<input type="radio" name="Auftrag" value="optzwei">Gut<br>

<input type="radio" name="Auftrag" value="optdrei">Geht so<br>


Dann kannst Du bei der PHP-Ausgabe nur folgende Werte bekommen:

opteins, wenn der User auf den Radio-Button vor "Sehr gut" geklickt hat.
optzwei, wenn der User auf den Radio-Button vor "Gut" geklickt hat.
optdrei, wenn der User auf den Radio-Button vor "Geht so" geklickt hat.

Und im Falle, dass der User gar nichts ausgewählt hat, wird die POST-Variable "Auftrag" halt nicht gesetzt.

(Dies lässt sich unterbinden, wenn man einem der Input-Felder das Attribut "selected" gibt. - Für XHTML wäre das selected="selected")


Wie liest Du das ganze nun per PHP aus?!

Ganz einfach: $_POST["Auftrag"];


--rabies.