2010-11-19 26 views
1

該標題可能並不意味着太多,但我擁有的是一種動態生成的表單。我鉤入產品表中,拉出名字。然後,我創建一個窗體,在其旁邊顯示覆選框和文本框。PHP:在多表單域共享相同名稱時使用post&id

<form id="twitter-feed" name="twitter-feed" action="<?php echo $this->getUrl('tweet/') ?>index/tweet" method="post"> 
<table><tr> 
<?php 

$model = Mage::getModel("optimise_twitterfeed/twitterfeed"); 

$products = $model->getProducts(); 

foreach ($products as $product){ 
    echo '<tr>'; 
     echo '<td>'; 
      echo '<label for="'. $product .'">' . $product . '</label>'; 
      echo '<br /><input type="text" class="hashtag" name="tags" id="tags" value="#enter, #product, #hastag"'; 
     echo '</td>'; 
     echo '<td><input type="checkbox" name="chk" id="'. $product .'"></td>'; 
    echo '</tr>'; 
} 
?> 

<tr><td colspan="2"><input type="submit" name="submit" value="tweet"></td></tr> 
</table> 
</form> 

正如你所看到的,每個記錄都有複選框和文本框。當我從表單中檢查$ _POST數據時,它只保留最後一條記錄的字段。

有沒有辦法將所有這些數據傳回給操作?

乾杯,

Jonesy

回答

12

使用name="chk[]",那麼PHP會爲你創建一個數組。

1

是的你可以,在名稱值的末尾設置括號。 例如: -

<input type="checkbox" name="chk[]" id="'. $product .'"> 

然後你得到一個數組作爲結果$_POST['chk']。 除此之外,ids應該始終是唯一的。你可以給出相同的名字,但你應該總是使用不同的ID。

0

所有的字段都具有相同的名稱,當發生在任何表單上時,最終只會看到最後一個值,因爲它被其他字段覆蓋。

而不是<input type="checkbox" name="chk" id="124123">這樣做<input type="checkbox" name="chk[124123]" value='1'>

在你的代碼,你會收到$ _ POST [「CHK」作爲值的數組,只有那些已檢查值。

3

改名字arrtibutes有這樣的開閉方括號:

name="tags" 
name="chk" 

name="tags[]" 
name="chk[]" 

這會變成像一個數組:

$_POST['tags'][0] = VALUE 
$_POST['tags'][1] = VALUE 

$_POST['chk'][0] = VALUE 
$_POST['chk'][1] = VALUE 
0

可以因爲我已經給出了下面的例子。我已經採取了一個新變量$ i = 0;然後你可以使用這個$我到foreach循環顯示所有的產品一個接一個.. 我認爲這可能會幫助你。

$i = 0; 
foreach ($products as $product){ 
echo '<td><input type="checkbox" name="chk" id="'. $product[$i] .'"></td>'; 
} 
相關問題