2013-10-05 102 views
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> 

Demo

+0

= $ telefon應該是echo $ telefon – tinybyte

+0

哪裏確切? –

+0

@tinyByte你可以使用這樣的短手回聲'<?= $ telefon;?>'(儘管short_tags需要打開ini設置) – AlexP

回答

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> 

這將選擇以前由用戶發佈的值。

+0

它有效,愛你<3 –

+0

我該怎麼做^^?第一次使用這個網站; P –

+0

@KurtBertil這是你[接受一個正確的答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – AlexP

-1

它不應該是

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

但例如

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

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

+0

這真的是h沒有解釋或回答什麼。加上鍊接到[臭名昭着的過時和不正確的網站](http://www.w3fools.com/)將不會贏得任何+1的 – AlexP

0

更換你的

$telefon = $_POST['telefon']; 

與此:

if ($_POST['telefon']) { 
    if (isset($_POST['telefon'])) { 
    //echo '1 Row Inserted'; 
    $telefon = $_POST['telefon']; 
    } 
} 
+0

問題解決,謝謝<3 –

相關問題