2011-09-02 97 views
0

我正在使用一些驗證規則的PHP窗體。PHP窗體錯誤驗證

如果某些字段留空即需要表單將報告和錯誤消息並要求用戶填寫該字段。

表單當前保留$ _POST數據的值,以便在發生錯誤時保留字段中的數據。

我有兩個字段(下拉列表)有填充數據庫中的數據的問題。 如果我完成這些字段,但其他地方出現錯誤,則表單顯示下拉列表中的值,但是當我糾正錯誤並嘗試提交表單時,它會告訴我下拉列表字段爲空。

這裏是他們

<! Drop Down Menu to get student names from database !> 
<SELECT NAME=studentName > 
<OPTION VALUE=0 selected="selected" > 
<?php if(isset($_POST['studentName'])) echo $_POST['studentName'];?> 
<?php echo $options1?> 
</SELECT> 

代碼的任何想法就是爲什麼這是怎麼回事?

+0

什麼是<!下拉菜單從數據庫中獲取學生姓名> ...? – Smar

回答

1

對於初學者,<選項值= 0 selected =「selected」>意味着選項0將始終被選中。

你可以做類似下面,原諒我,如果這個片段中有錯誤,但它應該給你的,你怎麼能實現你想要的總體思路:

<?php 
    $myOptions = array(
     '0' => ' --- nothing selected ---', 
     '1' => 'Apples', 
     '2' => 'Bananas', 
     // ... 
    ); 
?> 
<select name="studentName"> 
    <? php 
    foreach($myOptions as $key => $value) { 
     $selected = isset($_POST['theOption']) && $_POST['theOption'] == $key ? 'selected="selected"' : ""; 
     echo '<option value="' . $key . '" '. $selected . '>' . $value . "</option>"; 
    } 
    ?> 
</select> 

您可以清除上面的有些使用替代PHP語法:

http://php.net/manual/en/control-structures.alternative-syntax.php

這不是你的錯誤的一部分,但只是一個好習慣的考慮,一些你的HTML標籤和屬性都大寫,並且它的共同時下使用降低案件。這種方式更標準。

+0

感謝您的意見。我會嘗試這個,看看我如何繼續。 PS:是的,我知道關於代碼看起來很糟糕,但是在我做家務之前就集中精力讓它工作 – Mattrsa

1

你不應該回聲$_POST['studentName'];您應該根據每個選項的值(它應該是PHP中的數組,並將其轉換爲foreach循環中的<option> s列表)的值,並在匹配時設置selected屬性。

在旁註中,您的HTML無效;一些屬性沒有被引用,並且評論應該在<!-- ... -->中,而不是<! ... !>