0

私は出荷フォームを作成しており、mysql データベースに販売注文を照会し、その注文内の各項目を表示するための php ページを作成しました。私ができるようにしたいのは、ボックス番号 (製品が入っている物理的なボックスの番号) を各項目に追加することです。たとえば、品目番号 1 は 15 単位の製品 A 用です。1 つの箱に 2 単位の製品 A が入っていて、8 つの部品または 4 つの箱を出荷する場合、行を追加できるようにしたいので、箱番号を入力し、広告申込情報 2 についても同様のことを行います。

これが私がこれまでに持っているものです:

<script language="javascript">
      // Last updated 2006-02-21
function addRowToTable()
{
  var tbl = document.getElementById('tblSample');
  var lastRow = tbl.rows.length;
  // if there's no header row in the table, then iteration = lastRow + 1
  var iteration = lastRow + 1;
  var row = tbl.insertRow(lastRow);

  // Item cell
  var cellLeft = row.insertCell(0);
  var textNode = document.createTextNode(iteration);
  cellLeft.appendChild(textNode);

  // Cust PN cell
  var cellBox_Num = row.insertCell(1);
  var el = document.createElement('input');
  el.type = 'text';
  el.name = 'Box_Num[]';
  el.id = 'Box_Num' + iteration;
  el.size = 18;

  el.onkeypress = keyPressTest;
  cellBox_Num.appendChild(el);
}
function keyPressTest(e, obj)
{
  var validateChkb = document.getElementById('chkValidateOnKeyPress');
  if (validateChkb.checked) {
    var displayObj = document.getElementById('spanOutput');
    var key;
    if(window.event) {
      key = window.event.keyCode; 
    }
    else if(e.which) {
      key = e.which;
    }
    var objId;
    if (obj != null) {
      objId = obj.id;
    } else {
      objId = this.id;
    }
    displayObj.innerHTML = objId + ' : ' + String.fromCharCode(key);
  }
}
function removeRowFromTable()
{
  var tbl = document.getElementById('tblSample');
  var lastRow = tbl.rows.length;
  if (lastRow > 1) tbl.deleteRow(lastRow - 1);
}

    </script>

//define variables and some other form stuff

$i=0;
$n=1;

while($i < $num1) {

$SO_Line_Item=mysql_result($result1,$i,"SO_Line_Item");
$My_PN=mysql_result($result1,$i,"My_PN");
$My_PN_Rev=mysql_result($result1,$i,"My_PN_Rev");
$Cust_PN=mysql_result($result1,$i,"Cust_PN");
$Cust_PN_Rev=mysql_result($result1,$i,"Cust_PN_Rev");
$Description=mysql_result($result1,$i,"Description");
$SOItemQty=mysql_result($result1,$i,"Qty");
$UOM=mysql_result($result1,$i,"UOM");
$Program=mysql_result($result1,$i,"Program");
$Required_Date=mysql_result($result1,$i,"Required_Date");   
$SOItemShipQty=mysql_result($result2,$i,"count(My_SN)"); 

?>
<tr>
<td width="3px" valign="top" align="center"><?php
echo "$SO_Line_Item";?>
</td>
<td nowrap="nowrap" valign="top" align="center"><?php
echo "$Cust_PN - $Cust_PN_Rev";?>
</td>
<td nowrap="nowrap" valign="top" align="center"><?php
echo "$My_PN - $My_PN_Rev";?>
</td>
<td nowrap="nowrap" valign="top" align="center"><?php
echo "$Description";?>
</td>
<td nowrap="nowrap" valign="top" align="center">
<?php
echo "$SOItemQty";?>
</td>
<td nowrap="nowrap" valign="top" align="center">
<?php
echo "$UOM";?>
</td>
<td nowrap="nowrap" valign="top" align="center">
<?php
echo $SOItemQty - $SOItemShipQty;?>
</td>
<td nowrap="nowrap" valign="top" align="center">
<input size="2" align="right" type="text" name="Qty">
</td>
<td nowrap="nowrap" valign="top" align="center">
<?php
echo "$Required_Date";?>
</td>
<td nowrap="nowrap" valign="top" align="center">
<?php
echo "$Program";?>
</td>
</tr>
<tr>
<td colspan="10">
<p>
<input type="button" value="Add" onclick="addRowToTable();" />
<input type="button" value="Remove" onclick="removeRowFromTable();" />
<!-- 
<input type="button" value="Submit" onclick="validateRow(this.form);" />
<input type="checkbox" id="chkValidate" /> Validate Submit  
-->
<b><font color="RED">Add/Remove Box Number For This Line Item</font></b>
</p>
</td>
</tr>

<tr>
<td></td>
<td>
<table id="tblSample">
<tr>
    <td>1</td>
    <td><input type="text" name="Box_Num[]"
     id="Box_Num1" size="18" onkeypress="keyPressTest(event, this);" /></td>

  </tr>
</table>
</td>
</tr>
<?php



$i++;
}

フォームは問題なく作成できますが、追加ボタンと削除ボタンはすべてループの最初のインスタンスに影響を与えます。ループ内のすべてのインスタンスのテーブル ID が「tblSample」であるため、これは理解できます。ループのインスタンスごとに Javascript を動的にする方法がわかりません。

4

0 に答える 0