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 でドロップダウン ボックスのデータを取得するものです。JavaScriptでこれを理解してくれた@NickSlashに感謝します。

<?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

コメントで述べたように、表示の書式設定を目的として div を使用すると、javascript を使用するフォーム内で使用すると悪影響があるようです。

于 2013-03-26T22:20:18.047 に答える