2014-06-27 25 views
1

的隱藏值我有一個形式與來自mysql查詢的變量,我從無線電和隱藏輸入的形式2值傳遞,沒有電臺的問題..但隱藏不傳遞正確的值,僅在頁面上傳遞第一個值。 我想電臺2值和隱藏起來,當我選擇當前選定的單選按鈕得到當前選定的單選按鈕

<input type="radio" name="radio" value="<?php echo $awardid ; ?>" /> 
<input type="hidden" name="point" value="<? echo $point ; ?>" /> 

後打印:

<input type="radio" name="radio" value="1"> 
<input type="hidden" name="point" value="3"> 

<input type="radio" name="radio" value="2"> 
<input type="hidden" name="point" value="5"> 

<input type="radio" name="radio" value="3"> 
<input type="hidden" name="point" value="8"> 

elc ... 

舉個例子,當我選擇第二無線電,傳遞正確的價值無線電2和傳遞隱藏3 - >「的值不正確的值,必須是5」。 每個和任何選擇的無線電,傳遞與它隱藏頁面上的第一個值 - > 3 ,當我更改隱藏輸入無線電輸入並選擇它,傳遞正確的值沒有任何問題... 所以這個問題發生時輸入被隱藏了。爲什麼?和解決方案?

+0

隱藏字段的問題是相同的名稱 – Ezhil

+0

是的這就是我認爲,我嘗試更改'名稱=「點」'爲'名稱=「點[]」',但不工作 – user3745594

+0

也許另一個原因:傳遞正確的值無線電becouse我選擇它,但隱藏我沒有選擇它..我想通過汽車與無線電 – user3745594

回答

1

無線電輸入共享一個名稱以定義組。

隱藏的輸入不能共享名稱,因爲它們是謹慎的實體。

我建議將$awardid附加到隱藏的輸入名稱。

<input type="hidden" name="point<?php echo $awardid; ?>" value="<?php echo $point ; ?>" /> 

然後,您可以根據所選的單選按鈕獲取該特定輸入的值。

$radio = $_POST['radio']; 
$point = $_POST['point'.$radio]; 
+0

一個好主意,效果很好,謝謝 – user3745594

0

相同輸入類型的所有表單元素共享相同的名稱。表單元素的name字段是表單提交中的鍵/值對的鍵。因此,當您有3個隱藏的輸入字段與name字段具有相同的值時,它必須選擇一個。請記住,隱藏的輸入字段與在代碼中彼此靠近的無線電輸入字段完全不相關。你的瀏覽器不知道你的點域與無線電領域有什麼關係。

你應該有你的所有輸入字段唯一的名稱,像這樣

<input type="radio" name="radio" value="1"> 
<input type="hidden" name="point1" value="3"> 

<input type="radio" name="radio" value="2"> 
<input type="hidden" name="point2" value="5"> 

<input type="radio" name="radio" value="3"> 
<input type="hidden" name="point3" value="8"> 

然後你就可以用

$_POST['radio'] 
$_POST['point1'] 

等retreive它們的值。

編輯:然而,這並不意味着每一個表單提交,所有隱藏字段的數據將每次發送,無論哪個無線電輸入選擇的。爲了解決這個問題,您可以使用事件偵聽器(例如.submit())攔截前端的表單提交,然後在允許表單提交通過之前禁用不希望提交的輸入字段。

+0

謝謝,找到了一個好的解決方案 – user3745594

0

上的評論所討論的,你可以重命名pointpoint[radio buttons value]

這樣,當你要求點作爲數組,你可以從它的價值是這樣的@$_REQUEST["point"][@$_REQUEST["radio"]];

+0

謝謝,找到了一個好的解決方案 – user3745594

+0

你總是受歡迎 – ameenulla0007

0

左右。我會展示我的方法。

所以當你提到你有一個MySQL查詢來創建你的輸入(點和廣播)我認爲是這樣的:

請disconsider syntaxe,因爲它已經有一段時間,因爲我編程上的PHP

$query = "select radio, point from someTable where someconditions_here "; 
while(/*there is some row*/){ 
    echo "<input type=\"radio\" name=\"radio\" value=\"".$row[radio]."\">"; 
    echo "<input type=\"hidden\" name=\"point\" value=\"".$row[point]."\">"; 
} 

我的建議是,你只是打印收音機,並提交後,你檢查與之相關的一點,是這樣的:

if (isset($_POST['radio'])){ 
    $qryToFindPoint = "select point from someTable where sameconditions_here AND radio = " . $_POST['radio'] ; 
    //do whatever you need here with the selected point 
}else{  
    $query = "select radio, point from someTable where someconditions_here "; 
    while(/*there is some row*/){ 
     echo "<input type=\"radio\" name=\"radio\" value=\"".$row[radio]."\">"; 
    } 
} 

這只是這個想法。當然你應該使用適當的mysqliPDO函數來做你的查詢並避免sql注入。

通過這種方法,您還可以避免HTML注入。說,在作爲另一個答案建議你的最終結果有這樣的:

<input type="hidden" name="point1" value="4" /> 

任何人都可以編輯HTML代碼和修改這個值來讓說:

<input type="hidden" name="point1" value="400000" /> 

然後提交。因爲你不檢查,它的價值不會是正確的。