2012-06-09 65 views
1

我正在嘗試創建庫存跟蹤器。我的問題是,廣告資源可能是從1項到1項公制的任何位置,但是可以處理(贈與或取)項目。其基本形式是這樣的:動態複選框和輸入到MySQL的文本字段

issue.e.php

<? // all the database crap 

if(is_array($kit_row)){ 
    foreach($_POST['kitrow'] as $key=>$val){ 
     $sn=$_POST['sn']; 
     $serial = $sn[$val]; 
     $qty = $_POST['qty']; 
     $quant = $qty[$val]; 

    mysql_query("INSERT INTO eq_issue SET issue_sn = '$serial', issue_qty = '$quant'")or die(mysql_error()); 

這非常適用:在接收端

eq.issue.php

<form name="form" method="post" action ="issue.e.php"> 
    <? 
     $kit_query = mysql_query("SELECT * FROM eq_kit"); 
     while($fetch_kits = mysql_fetch_array($kit_query){ 
     $kitId = $fetch_kits['kit_id']; 
     $kitSn = $fetch_kits['kit_sn']; 
     $kitQty = $fetch_kits['kit_qty']; 
    ?> 
    <tr> 
     <td> 
      <input type="checkbox" name="kit_row[]" value="<?=$kitId?>" id="<?=$kitId?>"> 
     </td> 
     <td> 
      <input name="qty[]" type="text" id="<?=$kitQty?>" value="<?=$kitQty?>"> 
     </td> 
     <td> 
      <input name="sn[]" type="hidden" id="<?=$kitSn?>" value="<?=$kitSn?>" 
     </td> 
    </tr> 
    <? } ?> 
    <input type="submit" name="Submit" id="Submit" value="Submit"> 
</form> 

對於單個項目以及連續項目。

隨着我的eq.issue.php形式的這樣一個例子:

|Check | Qty | SN | 
==================== 
| X | 100 |12345| 
|  | 1 |23456| 
|  | 1 |98765| 
| X | 999 |19283| 
==================== 
|Submit| 

我的問題是,如果我選擇了1號和4號例如選項,陣列現在出現這樣的:

kit_row => Array 
    0 => 4 
    1 => 3 

qty => Array 
    0 => 100 
    1 => 1 
    2 => 1 
    3 => 999 

sn => Array 
    0 => 12345 
    1 => 23456 
    2 => 98765 
    3 => 19283 

因此,當我的腳本發揮出來,我得到第四個選項的值爲kit_row => 3 qty => 1 sn => 23456,我希望它顯示kit_row => 3 qty => 999 sn => 19283.

任何sugg提到我如何做這項工作?爲了獲得更好的視覺參考,我嘗試使用複選框來說明與PHPMyAdmin的多值插入頁面相同的概念,以說明要插入的記錄組(或多行)。

+1

查看準備好的語句。使用預處理語句執行查詢的度量標準buttload會更快,並且您還擺脫了所有SQL注入問題。 – Mike

+0

會做。現在不關注SQL注入的概念。這是在一個開發機器W /沒有互聯網接入,所以我是唯一的虛擬現在可以攻擊它(....我希望....) – thebarless

回答

1

您可以對$_POST['qty']$_POST['sn']而不是$_POST['kit_row']進行預告。

或者使用kit_id作爲指數爲表單域,這將使它能夠在服務器端就知道什麼是什麼:

<input type="checkbox" name="kit_row[<?=$kitId?>]" value="1"> 
<input name="qty[<?=$kitId?>]" type="text" id="<?=$kitQty?>" value="<?=$kitQty?>"> 
<input name="sn[<?=$kitId?>]" type="hidden" id="<?=$kitSn?>" value="<?=$kitSn?>"> 

這樣,您就可以通過ID訪問服務器上的發佈數據從數據庫中,而不是使用0,1,2,...這樣的:

if (is_array($_POST['kit_row'])) 
{ 
    foreach ($_POST['kit_row'] as $kitId => $val) 
    { 
     $sn=$_POST['sn']; 
     $serial = $sn[$kitId]; 
     $qty = $_POST['qty']; 
     $quant = $qty[$kitId]; 

也有可能被加入了隱藏字段具有相同名稱和在各複選框的值前面0。你必須用雖然真正的指數來替代kit_row []:

<input type="hidden" name="kit_row[<?php echo $i; ?>]" value="0"> 
<input type="checkbox" name="kit_row[<?php echo $i++; ?>]" value="1"> 

這樣的價值被在這兩種情況下提交,勾選取消選中和。

+0

關於你的第二段,你是什麼意思,通過使用kit_id作爲指數?我不確定我明白你的意思。 – thebarless

+0

我已經更新了我的答案。 –

+0

謝謝!這有所作爲。 – thebarless

相關問題