2010-05-24 66 views
0

我正在使用帶有一些輸入字段的小表來發布頁面。 我想檢索用戶填寫特定儀器編號的數據。檢索動態發佈值

我的代碼

<form name="frmDeposit" action="paymentdeposited.php" method="post"> 
    <table cellpadding="0" cellspacing="0" border="0" id="table" class="tinytable" style="width:700px;"> 
     <thead> 
      <tr> 
       <th><h3>Email</h3></th> 
<th><h3>Amount Paid</h3></th> 
<th><h3>Instrument Type</h3></th> 
<th><h3>Instrument No.</h3></th> 
<th><h3>Date Paid</h3></th> 
<th class="nosort"><h3>Date Deposited</h3></th> 
<th class="nosort"><h3>Bank Name</h3></th> 
<th class="nosort"><h3>Slip No.</h3></th> 
<th class="nosort"><h3>Submit</h3></th> 
      </tr> 
     </thead> 
     <tbody> 
<?php 
foreach($paymentsdeposited as $paymentdeposited) 
{ 


?> 
      <tr> 
       <td><?php echo $paymentdeposited[email];?></td> 
       <td><?php echo $paymentdeposited[amount];?></td> 
<td><?php echo $paymentdeposited[instrument];?></td> 
       <td><?php echo $paymentdeposited[instrumentnumber];?></td> 
<td><?php echo $paymentdeposited[dated];?></td> 
<td><input type="text" name="txtDateDeposited_<?php echo $paymentdeposited[pk_paymentinstrumentid];?>" class="field date-pick"/></td> 
<td><input type="text" name="txtBankName_<?php echo $paymentdeposited[pk_paymentinstrumentid];?>" class="field"/></td> 
<td><input type="text" name="txtSlipNo_<?php echo $paymentdeposited[pk_paymentinstrumentid];?>" class="field"/><input type="hidden" name="txtPaymentInstrumentNo_<?php echo $paymentdeposited[pk_paymentinstrumentid];?>" value="<?php echo $paymentdeposited[pk_paymentinstrumentid];?>" class="field"/></td> 
<td><input type="submit" name="btnSubmit1" value="Submit"/></td> 

      </tr> 
<?php 
} 
?> 

     </tbody> 
    </table> 

的print_r的命令輸出

Array 
(
[txtDateDeposited_57] => 2010-05-07 
[txtBankName_57] => pnb 
[txtSlipNo_57] => 121 
[txtPaymentInstrumentNo_57] => 57 
[btnSubmit1] => Submit 
[txtDateDeposited_51] => 
[txtBankName_51] => 
[txtSlipNo_51] => 
[txtPaymentInstrumentNo_51] => 51 
[txtDateDeposited_52] => 
[txtBankName_52] => 
[txtSlipNo_52] => 
[txtPaymentInstrumentNo_52] => 52 
[txtDateDeposited_45] => 
[txtBankName_45] => 
[txtSlipNo_45] => 
[txtPaymentInstrumentNo_45] => 45 
[txtDateDeposited_47] => 
[txtBankName_47] => 
[txtSlipNo_47] => 
[txtPaymentInstrumentNo_47] => 47 
) 

我要檢索的值,爲此他已經進入價值ID 57。但我無法構建檢索此值的邏輯。我想讓它變得動態。

回答

2

使用explode。例如: -

foreach ($POST AS $key => $value) { 
    if (strpos ($key, '_') !== false) { 
     list($field, $id) = explode ('_', $key, 2); 

     if ($value) { 
      var_dump ($field, $id, $value); 
     } 
    } 
} 

或者,如果你知道ID:

var_dump ($_POST['txtPaymentInstrumentNo_'.$Id]); 

編輯

簡單的代碼。 thx不要吉姆。

+2

我想你想'explode('_',$ key,2);'作爲最後一個參數指定返回數組中元素的數量。你可以使用'list($ field,$ id)= explode('_',$ key,1);'以避免'$ tmp',fyi。最好確保下劃線先存在! – notJim 2010-05-24 08:20:07

+0

是的,你是對的。 thx指出這一點。 – 2010-05-24 08:22:55

+0

我想根據用戶爲特定儀器所做的條目更新表格。該代碼會給我所有的ID,但我想要他已經進入的ID。 – 2010-05-24 08:48:33

1

我會用數組符號格式化輸入名稱:

<td><input type="text" name="txtDateDeposited[<?php echo $paymentdeposited[pk_paymentinstrumentid];?>]" class="field date-pick"/></td> 

讓您得到的數據可以得到訪問的

$_REQUEST['txtDateDeposited']['57'] 

更新:

foreach($_POST as $key => $value) { 
    $keyPieces = explode("_", $key); 
    $field = implode("_", array_slice($keyPieces, 0, count($keyPieces)-1)); 
    $id = $keyPieces[count($keyPieces)-1]; 
    // txtDateDeposited_57 becomes 
    // $id -> 57 
    // $field -> txtDateDeposited 
} 

如果您確定你只用一個下劃線,然後:

foreach($_POST as $key => $value) { 
     $keyPieces = explode("_", $key); 
     $field = $keyPieces[0]; 
     $id = $keyPieces[1]; 
     // txtDateDeposited_57 becomes 
     // $id -> 57 
     // $field -> txtDateDeposited 
    } 

也可以工作。

請注意,對於任何使用上述方法,我發現把數字/標識符放在第一位更好,這樣你就可以做$ pieces [0]而不是對數組進行計數。另外,你的array_slice($ pieces,1)會在沒有額外計數的情況下爲你取出。

+0

嗨丹謝謝,但這$ _REQUEST ['txtDateDeposited'] ['57']是靜態我想使它動態 – 2010-05-24 08:11:07

+0

更新的答案顯示解析數組鍵 – 2010-05-24 08:23:29

+0

我想根據條目進行更新表用戶爲特定的儀器。代碼將會是所有ID,但是我想要他已經輸入的ID。 – 2010-05-24 08:24:41