php
2014-01-24 76 views 0 likes 
0

我有一個表單來更新MySQL數據庫表中的多個動態生成的輸入字段。更新多個動態生成的輸入字段

下面的命令生成輸入:

<?php 
while ($row_exon = mysql_fetch_assoc($result_exon)){ 
    echo "<input name='exon_start[]' type='text' id='". $row_exon['exon_pk'] . "' value='" . $row_exon['start'] . "' />"; 
} ?> 

如何可以修改foreach循環來更新使用WHERE子句中$row_exon['exon_pk']每個輸入字段?

foreach($_POST['exon_start'] as $start){  
$query_exon = "UPDATE exon SET start = '$start' WHERE exon_pk = ''"; 
$result_exon = mysql_query($query_exon, $connection) or die(mysql_error()); 
} 
+0

什麼問題? – Yani

+1

閱讀問題... – IlludiumPu36

回答

1

這工作...

<?php 
while ($row_exon = mysql_fetch_assoc($result_exon)){ 
    echo "<input name='exon_start[". $row_exon['exon_pk'] . "]' type='text' value='" . $row_exon['start'] . "' />"; 
} ?> 

,並與循環:

foreach($_POST['exon_start'] as $key => $value){  
$query_exon = "UPDATE exon SET start = '$value' WHERE exon_pk = '$key'"; 
$result_exon = mysql_query($query_exon, $connection) or die(mysql_error()); 
+0

*作品,如果'exon_pk'每次都是唯一的 –

+0

是的,它們是獨一無二的,它的工作原理。謝謝你的回答,但; - > – IlludiumPu36

+0

不用擔心,如果你的方法是唯一的,所以你不必連接任何數據。 –

0

你需要通過形式價值,以及(假定這是一個POST形成)。現在,當您發佈的變量,只有名稱和每個字段的值將被傳遞,所以你的情況:

// pseudo/example 
exon_start[] => each_value (start) 

所以你需要exon_pkstart,你必須串聯在一起,他們作爲價值傳遞。我將使用|作爲分隔符,你可以使用任何你喜歡的,但要確保它永遠不會在任何這些變量:

while ($row_exon = mysql_fetch_assoc($result_exon)){ 
    echo "<input name='exon_start[]' type='text' id='". $row_exon['exon_pk'] . "' value='" . $row_exon['exon_pk'] . '|' . $row_exon['start'] . "' />"; 
} 

現在,當您通過後,您的數據將是:

// pseudo/example 
exon_start[] => each_value (exon_pk|start) 

所以,你可以把它分解得到的每個變量:

foreach($_POST['exon_start'] as $each_var){  
    list($exon_pk, $start) = explode('|', $each_var); 
    $query_exon = "UPDATE exon SET start = '$start' WHERE exon_pk = '$exon_pk'"; 
    $result_exon = mysql_query($query_exon, $connection) or die(mysql_error()); 
} 

旁註:備案,mysql_*分機多年來一直被棄用,未來可能會完全消除。您應該開始使用mysqli_*PDO擴展。我認爲這不是一個理想的事情,因爲你通過將分隔符與事物連接在一起而丟失了大致結構化的數據,正如我所說的,如果你在任何一個分隔符中都有你的分隔符變量在任何點 - 通過工作腳本。

文檔:

相關問題