2010-11-21 80 views
0

這是我的HTML:問題與顯示正確的隱藏字段

<form method="POST" action=""> 
    <?php 
     $skillSubCategory = $skills->showSkills(24); 

     for ($i = 0; $i < count($skillSubCategory); $i++) { 
    ?> 

<input type="hidden" name="skillid" value="<?php echo $skillSubCategory[$i]['skill_id']; ?>" /> 

    <?php echo $skillSubCategory[$i]['title']; ?> 

<input type="submit" name="add" value="add" /><br /> 

    <?php } ?> 

</form> 

    <?php if (isset($_POST['add'])) { 
      echo $_POST['skillid']; 
    } ?> 

得到的源代碼:

<form method="POST" action=""> 

<input type="hidden" name="skillid" value="25" /> 

    Animal Grooming 
    25 
<input type="submit" name="add" value="add" /><br /> 


<input type="hidden" name="skillid" value="26" /> 

    Dog Trainer 
    26 
<input type="submit" name="add" value="add" /><br /> 


<input type="hidden" name="skillid" value="27" /> 

    Dog Walking 
    27 
<input type="submit" name="add" value="add" /><br /> 


<input type="hidden" name="skillid" value="28" /> 

    Vet 
    28 
<input type="submit" name="add" value="add" /><br /> 


<input type="hidden" name="skillid" value="29" /> 

    Beekeeping 
    29 
<input type="submit" name="add" value="add" /><br /> 


</form> 

它看起來像什麼:

alt text

我得到29號點擊任何按鈕。任何想法有什麼不對?爲什麼當我點擊添加時不會顯示正確的號碼?

回答

2

您還可以使用按鈕本身(不改變它們的值):

<input type="submit" name="skillid[25]" value="add" /> 
<input type="submit" name="skillid[26]" value="add" /> 
<input type="submit" name="skillid[27]" value="add" /> 

要(在這種情況下,它沒有價值,它的發佈數組的第一個鍵)檢索提交的值:

if(isset($_POST['skillid']) && is_array($_POST['skillid'])) 
{ 
    echo key($_POST['skillid']) 
} 
+0

非常感謝! – Jonathan 2010-11-21 03:11:45

1

變化:

<form method="POST" action=""> 

到:

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 

然後更改條件:

if (isset($_POST['add']) && isset($_POST['skillid'])) { 

編輯:使用<option>標籤,而不是

現在
<select name="skillid"> 
<option value="25">Animal Grooming</option> 
<option value="26">Dog Trainer</option> 
    ... 
</select> 

你的PHP代碼將是:

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
<?php 
$skillSubCategory = $skills->showSkills(24); 
<select name="skillid"> 
for ($i = 0; $i < count($skillSubCategory); $i++) { ?> 
    <option value="<?php echo $skillSubCategory[$i]['skill_id']; ?>"><?php echo $skillSubCategory[$i]['title']; ?></option> 
<?php } ?> 
</select> 
<input type="submit" name="add" value="add" /><br /> 
</form> 

if (isset($_POST['add']) && isset($_POST['skillid'])) { 
    echo $_POST['skillid']; 
} ?> 
+0

呃,不,這不是問題... – cdhowie 2010-11-21 02:53:00

+0

謝謝我剛剛那樣做,但即時消息仍然得到29點擊任何按鈕? – Jonathan 2010-11-21 02:53:01

+0

已編輯。使用'

2

因爲當你有一個形式相同name屬性多個字段,最後一個總是優先(帶提交按鈕除外 - 的一次點擊將是唯一考慮的)。因此,名稱爲skillid的最後一個隱藏輸入將始終發送到服務器。

使用這樣的表格時,通常必須爲每個按鈕使用不同的表單。或者,更改每個按鈕的value屬性並從PHP代碼中考慮該屬性。

+0

謝謝你解釋這個! – Jonathan 2010-11-21 03:12:33