0

目前我有以下联系表单验证代码,问题是当我按下提交按钮进行表单验证时,它只保存文本字段的值,而不是我目前拥有的“下拉列表”字段值选择。我希望它在表单出现错误时保存所有字段,而不是重置它们。

我对选择框使用与文本字段相同的方法。

关于如何实现这一目标的任何建议?

PHP

$error    = ''; // error message
$name     = ''; // sender's name
$email    = ''; // sender's email address
$subject  = ''; // subject
$message  = ''; // the message itself
$spamcheck = ''; // Spam check
$test = ''; // test
$telefon = ""; // telefon

if(isset($_POST['send']))
{
$name     = $_POST['name'];
$email    = $_POST['email'];
$subject  = $_POST['subject'];
$message  = $_POST['message'];
$spamcheck = $_POST['spamcheck'];
$test = $_POST['test'];
$telefon = $_POST['telefon'];
}

HTML

<input name="test" type="text" class="detail" id="test" value="<?=$test;?> />

<-- dropdownlist that isn't working --->

<select name="telefon" type="text" class="scroll" id="telefon" value="<?=$telefon;?>>
<option value="-"> </option>
<option value="Epost">E-post </option>
<option value="Telefon">Telefon </option>
</select>

演示

4

3 回答 3

1

您需要将selected="selected"属性应用于选择选项而不是选择输入本身。

由于用户已经发布了表单,因此“选定”值将在$_POST['telefon'].

这看起来有点乱,但应该可以:

<select name="telefon" type="text" class="scroll" id="telefon">
  <option value="-"> Please Choose&hellip;</option>
  <option value="Epost"<?php echo ($telefon == 'Epost') ? ' selected="selected"' : ''; ?>>E-post</option>
  <option value="Telefon"<?php echo ($telefon == 'Telefon') ? ' selected="selected"' : ''; ?>>Telefon</option>
</select>

这将选择用户先前发布的值。

于 2013-10-05T12:37:49.120 回答
0

更换你的

$telefon = $_POST['telefon'];

有了这个:

if ($_POST['telefon']) {
  if (isset($_POST['telefon'])) {
    //echo '1 Row Inserted';
    $telefon = $_POST['telefon'];
  }
}
于 2013-10-05T12:46:19.537 回答
-1

不应该

value="<?=$telefon;?>"

但例如

<option value="Epost" <? if($telefon = 'Epost') echo 'selected'; ?>>

http://www.w3schools.com/tags/att_option_selected.asp

于 2013-10-05T12:41:18.337 回答