2017-01-17 34 views
0

我試圖使下拉只讀數據庫中存在數據。但即使我只是隻讀,用戶可以更改我的意思是下拉值的值。所以我將它改爲禁用。但在此,我無法在提交後收到這些值。這裏是我的代碼使填充下拉值只讀

<select name="sign" <?php echo empty($row['sign']) ? '' : 'readonly' ?> class="form-control"> 
     <option value="<?php echo $row['sign']; ?>"><?php echo $row['sign']; ?></option> 
     <?php $m1 = mysqli_query($con, "SELECT * FROM signs"); 
     while($m2 = mysqli_fetch_array($m1)) { ?> 
     <option value="<?php echo $m2['sign']; ?>"><?php echo $m2['sign']; ?></option> 
     <?php } ?> 
     </select> 

我怎樣才能解決呢?

+0

客戶端上的任何代碼都可以被操縱。如果您想避免編輯它,那麼我強烈建議您在服務器上執行此操作。不要相信客戶的任何事情。 – McStuffins

+0

你的意思是說,我應該檢查它提交到數據庫? – user3368088

+0

是的。我強烈建議,並據說是「良好的做法」 – McStuffins

回答

0

我認爲這個問題是這樣的<?php echo empty($row['sign']) ? '' : 'readonly' ?> 也許ü可以做到這一點<?php echo (empty($row['sign']) ? '' : 'readonly'); ?>

0

一個解決辦法是,當你把它關閉,以相同的名稱和值添加另一個隱藏的輸入。

其他的解決辦法是,以防止用戶更改選擇,也有很多JavaScript選項,試試這個:

http://jsfiddle.net/qk2Pc/

HTML:

<select id="my_select"> 
    <option>Option 1</option> 
    <option>Option 2</option> 
</select> 

JS:

my_condition = true; 
var lastSel = $("#my_select option:selected"); 

$("#my_select").change(function(){ 
    if(my_condition) 
    { 
    lastSel.attr("selected", true); 
    } 
}); 

$("#my_select").click(function(){ 
    lastSel = $("#my_select option:selected"); 
}); 
+1

Stack不讓你在這裏使用URL的原因是它也需要它的代碼。所以請在下次建議jsfiddle的時候再補充一點;我不會一直在這裏;-)(我剛剛爲你添加了這個)。 –

+0

@Nikolay Ganovski:我通過一個名爲submit.php的頁面向數據庫提交數據。那我應該提一下呢? – user3368088

+0

我假設你的之後,添加