2014-01-26 101 views
0

我正在爲一個網站製作一個聯繫頁面,並且所有的表單字段都粘在了下拉菜單的例外之外?我已經完成了代碼,就像我知道如何做到的,但對於PHP來說很新,並且不知道問題出在哪裏?代碼如下:粘滯菜單不粘?

<?php 
    $WebSearch = $SocialMedia = $WordOfMouth = $Other =""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") 
{ 

//Question 
    if (empty($_POST["question"])) 
    {$comment = "";} 
    else 
    {$comment = test_input($_POST["question"]);} 

//WebSearch 
    if (empty($_POST["WebSearch"])) 
    {$comment = "";} 
    else 
    {$comment = test_input($_POST["WebSearch"]);} 

//SocialMedia 
    if (empty($_POST["SocialMedia"])) 
    {$comment = "";} 
    else 
    {$comment = test_input($_POST["SocialMedia"]);} 

//WordOfMouth 
    if (empty($_POST["WordOfMouth"])) 
    {$comment = "";} 
    else 
    {$comment = test_input($_POST["WordOfMouth"]);} 

//Other 
    if (empty($_POST["Other"])) 
    {$comment = "";} 
    else 
    {$comment = test_input($_POST["Other"]);} 

} 
function test_input($data) 
{ 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
?> 

<form method="post" id="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
    <p id="info-req">How did you find about This site?</p> 
    <!--Question--><select id="marketing" name="question"> 
     <option value="----------" style="color:black">----------</option> 
     <option value="Web Search" style="color:black" name="WebSearch">Google Search</option><?php if(isset($_POST['WebSearch'])) {echo $_POST['WebSearch']; } ?> 
     <option value="Social Media" style="color:black" name="SocialMedia">Social Media</option><?php if(isset($_POST['SocialMedia'])) {echo $_POST['SocialMedia']; } ?> 
     <option value="Word of mouth" style="color:black"name="WordOfMouth">Word of mouth</option><?php if(isset($_POST['WordOfMouth'])) {echo $_POST['WordOfMouth']; } ?> 
     <option value="Other" style="color:black" name="Other">Other</option><?php if(isset($_POST['Other'])) {echo $_POST['Other']; } ?> 
    </select> 

    <div> 
     <input type="submit" value="Send" id="submit"> 
    </div> 
</form> 

我希望這是一個簡單的修復或我錯過了什麼?學習了幾個月後,我正在努力學習php。

非常感謝您的幫助,

馬蓋特

+1

您需要檢查需要選擇哪個選項,然後將選擇的屬性添加到該標籤的

+0

嗯...你的意思是「表單字段粘在一起,除了下拉菜單」。這是一個設計問題還是你有一些值沒有顯示出來的問題? –

+0

我在頁面上有其他的表單字段,並且當存在表單錯誤時,所有內容都會粘住。不粘的是下拉菜單。我沒有將其餘的代碼添加到我上面發佈的代碼中,因爲它工作正常。所有其他條目都顯示錯誤並堅持原樣。 – Margate

回答

0

我會去通過一行一行地看看我找到。不要以爲我是挑剔的。 :-)哈姆,讓我們來看看。我將從表單開始。我正在看一切。希望我們能找到一種方法來解決這個錯誤,並將未來的錯誤降到最低。 :-) 我很樂意提供幫助。

<form method="post" id="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 

1.是的,你試圖安全,但如果htmlspecialchars(),爲什麼不htmlentities()?只是在說。

PHP Manual: htmlentities()

<p id="info-req">How did you find about This site?</p> 

2.瞭解<label></label> HTML標籤,並用它來標記你的窗體控件。

W3C HTML 4.01: The label element.

(以下實際上是一個線,但我把它分成幾個項目。)

<option value="Web Search" style="color:black" name="WebSearch">Google Search</option> 

3.只是一種編碼風格的問題,但你可能要將value=""放在您的開頭<option>標記的閉合'>'附近。例如...

<option value="Web Search">Google Search</option> 

通知我刪除style="color:black",因爲你將在未來得到更好的服務,如果你把這種風格在外部樣式表爲一類。注意:在大多數用戶代理/瀏覽器中,選項文本的顏色默認爲黑色。例。

.optionTextColor{color:black;} 

然後,您的選項將不會嵌入任何CSS。當然,如果你這樣做......

option{color:black;} 

...您的頁面將繼承你想要的風格上的所有選項元素他們有沒有一個需要對class=""屬性。

<option class="optionTextColor" value="Web Search">Google Search</option> //using a specific class 

<option value="Web Search">Google Search</option>       //using a global, element level selector. 

此外,注意到name屬性了,因爲這不是一個<option>標籤的有效屬性。

W3C HTML 4.01: The Option Element

搜索頁OPTION屬性定義

在這裏,你會發現選擇=「」的<option>標記,這就是你需要做的 在<option>一個<select>控制粘性什麼屬性。您需要一個PHP條件語句,基於$_POST['question']的值來打印selected="selected"作爲<option>的一個屬性,您希望它變得粘滯。

首先處理這些事情。有很多PHP可以討論的東西,但正如你所說,你正處於學習階段。涼。

+0

我不知道爲什麼編號的項目變得如此之大。這不是故意的。 –