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.
$_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
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.
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.

