2017-04-11 101 views
3

我附上一個數據庫表id號按鈕動態呈現,就像這樣:解析變數名稱作爲字符串字面量來分配字符串的一部分,新的變種

echo '</div><!-- close formRowDiv -->'; 
echo '<div class="buttonDiv">'; 
echo '<input type="submit" id="buttonUpdate_' . $row[ 'id' ] . '" name="buttonUpdate_' . $row[ 'id' ] . '" class="button" value="Update Trouble Log Entry">'; 
echo '</div><!-- closes updateDiv -->'; 

這樣可以在點擊,當我結束了$_POST[ 'buttonUpdate_1' ]爲例如在引用的DB表中的id#1。現在我想從$ _POST var名稱中提取

我假設我需要使用preg_replace,但無法考慮如何在模式中使用字面上的var名稱來提取附加的ID#。我一直在用谷歌搜索,似乎無法找到我所需要的。那麼如何在preg_replace中將一個var名稱解析爲文字字符串來提取並將它的一部分分配給一個新的var?

回答

4

雖然不是像您問的替代解決方案,但如果我正確地閱讀您的問題,您希望能夠使用附加的ID號對錶中的行進行操作。

如果是這樣,您可以先查詢表中最高值的id並將其用作for循環中的計數器。然後使用for循環,您可以遍歷表中的所有行,直到找到/匹配$ _POST ['buttonDisplay_1']變量中的附加ID。

一旦匹配,您就可以抓取返回的查詢行的ID號,並對抓取的ID號進行任意操作。可能類似於:

$sql_query_to_find_high_id = "SELECT * FROM table ORDER BY id DESC LIMIT 1"; 
    $result=mysqli_query(dbcon(), $sqlQHighId); 
    while ($row=mysqli_fetch_array($result)){high_id_number=$row['id'];} 

查找表中分配的最高ID。然後循環使用高ID號作爲你的計數器,你可以:

for($i=0; $i<$high_id_number; $i++){ // cycle thru all rows in table to find a match for ID appended to $_POST[ 'buttonDisplay_1' ] 
    if(isset($_POST["buttonUpdate_$i"])){ 
     $id=$i; 
     $sql_update_statement="UPDATE table SET column=value WHERE id='$id'"; 
} 
+0

這個工作。但超過我認爲應該需要。 – commnux

1

以數組形式命名輸入字段。我不知道它的正確名稱。無論如何,它看起來像這樣:

echo '<input type="text" name="myinput[' . $row[ 'id' ] . ']">'; 

如果你發佈的數據,你會得到一個數組與輸入字段的數據。所以如果你寫

foreach ($_POST['myinput'] as $id => $input) { 
    echo $id; 
    echo $input; 
} 

它會一行一行地返回輸入字段的數據。