【问题标题】:Post Javascript Form into mysql将 Javascript 表单发布到 mysql
【发布时间】:2013-03-26 02:31:31
【问题描述】:

我正在开发一种发票系统。我正在使用 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 函数生成的任何其他行项目。

感谢您的帮助。

【问题讨论】:

  • 你试过在 docreateinvoice.php 中 var_dump($_POST[]) 吗?
  • 它只转储在javascript中找不到的表单的第一行。
  • 尝试 var_dump($_POST["item"])。如果它只给您第一行,请尝试注释掉实际的提交操作,而不是回显您将发布的内容。
  • 我想我看到了一些问题。我多次使用 div 来显示视觉方面的表单,但在关闭显示 div 时不会被其他 div 关闭。
  • 另外,忘记在我的表单中添加数组括号,现在就添加。

标签: php javascript mysql forms invoice


【解决方案1】:

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

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签