0

我正在开发一个发票系统。我正在使用 javascript 根据需要添加行项目,但是当我单击提交时,添加的行项目没有发布。我认为这可能是 div 某处的问题,但我似乎无法找到它或让它工作。我正在发布我的代码以寻求帮助。谢谢。

这是我的表格。

<?php

include $_SERVER['DOCUMENT_ROOT']."/connect.php";
include $_SERVER['DOCUMENT_ROOT']."/includes/header.php";

$result = mysql_query("SELECT company, first, last FROM customer") or die (mysql_error());
?>

<script type="text/javascript">
var counter = 1;
     function addInput(div){
        xmlhttp=new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
         if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
          var newdiv = document.createElement('div');
          newdiv.innerHTML = " Entry " + (++counter) + " <br /><table><tr><td>Item: <select name='item[]'>" + xmlhttp.responseText + "</select></td><td>Qty: <input name='quantity[]' type='text' size='5' /></td></tr></table><br />";
         }
          document.getElementById(div).appendChild(newdiv);
     }

xmlhttp.open("GET", "dropdownquery.php", false);
xmlhttp.send();
}
</script>

<form id="createInvoice" method="post" action="docreateinvoice.php">
<table>

<tr><td>Customer</td><td><select name="company">
<?php while($row = mysql_fetch_array($result)) {
  echo "<option value=\"".$row['company']."\">".$row['company']." (".$row['first']." ".$row['last'].")</option>";
}
?>

</select></td></tr>
</table>

</div>
</div>

<div id="container">
<div class="content">

<div id="dynamicInput">
          Entry 1<br /><table><tr><td>Item: <select name="item[]"><?php $result = mysql_query("SELECT * FROM salesitem"); while($row = mysql_fetch_array($result)) { echo "<option value=\"".$row['name']."\">".$row['name']."</option>";} ?></select></td><td>Qty: <input name="quantity[]" type="text" size="5" /></td></tr></table><br />
     </div>
     <br /><input type="button" value="Add Line Item" onClick="addInput('dynamicInput');">

</div>
</div>

<div id="container">
<div class="content">

<input type="submit" name="submit" value="Create Invoice" />

</form>

<?php
include $_SERVER['DOCUMENT_ROOT']."/includes/footer.php";
?>

下一段代码是 dropdownquery.php。这就是在 javascript 中获取下拉框数据的内容。非常感谢 @NickSlash 在 javascript 中解决这个问题。

<?php
include $_SERVER['DOCUMENT_ROOT']."/connect.php";
$result = mysql_query("SELECT * FROM salesitem");
while($row = mysql_fetch_array($result)) {
    echo "<option value=\"".$row['name']."\">".$row['name']."</option>";
}
?>

最后,这是我发布到的 docreateinvoice.php。

<?php

include $_SERVER['DOCUMENT_ROOT']."/connect.php";

$company = mysql_real_escape_string($_POST['company']);

foreach($_POST['item'] as $i => $item)
{
  $item = mysql_real_escape_string($item);
  $quantity = mysql_real_escape_string($_POST['quantity'][$i]);

//mysql_query("INSERT INTO invoice (company, item, quantity) VALUES ('$company', '".$item."', '".$quantity."') ") or die(mysql_error());
print_r ($company);
print_r ($item);
print_r ($quantity);
}

//echo "<br><font color=\"green\"><b>Invoice added</b></font>";

?>

您可能会注意到表单中的第一个条目不是 javascript。这确实发布了,只是没有从 javascript 函数生成的任何其他行项目。

谢谢你的帮助。

4

1 回答 1

0

正如我在评论中所说,在使用 javascript 的表单中使用时,用于显示格式目的的 div 似乎会产生负面影响。

于 2013-03-26T22:20:18.047 回答