我正在开发一个基于 Web 的 erp 平台,但陷入了这种情况,我想保存某个文本框中的所有数据并选择标签,而不是将它们全部保存到数据库中。
这是一个简单的表格。页面加载完成后默认有一行用于插入数据。但是,如果(且仅当)买家想要购买比我希望用户插入更多行并将所有数据保存到数据库更多的 Material 时。
<form method="post" style="border:1px solid #ccc">
<div class="container"><label><b>Billing details</b></label><table border='1' id="myTable" class="myTable">`<form method="post" style="border:1px solid #ccc">
<div class="container">
<label><b>Billing details</b></label>
<table border='1' id="myTable" class="myTable">
<thead>
<tr>
<th>Sr. No</th>
<th>Particulars</th>
<th>QTY</th>
<th>RATE</th>
<th>DISCOUNT</th>
<th id="gt">AMOUNT</th>
</tr>
</thead>
<tbody>
<tr id="content">
<td></td>
<td><?php echo $select; ?></td>
<td><input type="text" name="qty" id="qty" class="qty" onKeyPress="sum()"/></td>
<td><input type="text" name="rates" id="rates" class="rates" onKeyPress="sum()"/></td>
<td><input type="text" name="dis" placeholder="0" class="dis" id="dis" onKeyPress="sum()"/></td>
<td><input type="text" name="amount" readonly class="amount" id="amount"/></td>
</tr>
</tbody>
</table>
<div><b>Total Amount</b><b><input type="text" name="total" id="gTotal" class="gTotal" readonly/></b></div><br/>
<div><b>Paid Amount</b><input type="text" name="paidamount" class="paidamount" id="paidamount"/></div><br/>
<div><b>Balance Amount</b><input readonly type="text" name="balance" class="balance" id="balance"/></div><br/>
<div id="addrow" style="width:50px;float: left;" onClick="addRow()">+</div>
<div id="remrow" style="width:50px;float: left;" onClick="remRow()">-</div>
<div class="clearfix">
<input class="signupbtn" type="submit" name="submit" value="Register"/>
</div>
</div>
</form>
PHP 部分
include "dbconnection.php";
$sql=mysqli_query($connection,"SELECT id,name FROM materials");
if(mysqli_num_rows($sql)){
$select= '<select class="mater" name="mate">';
while($rs=mysqli_fetch_array($sql)){
$select.='<option value='.$rs['name'].'>'.$rs['name'].'</option>';
}
}
$select.='</select>';
mysqli_close($connection);
if(isset($_POST['submit'])){
print_r($_POST['mate']);
echo count($_POST['mate']);
foreach($_POST as $name => $item){
echo count($_POST['mate']);
if($name != 'submit'){
for($m=0; $m < sizeof($item); $m++){
echo ($name.' '.$item[$m].'<br>');
//Insert something in db
}
}
}
}
print_r($_POST['mate']);
打印最后一行中选择的值(对于多行)或第一行中的值(如果用户没有添加额外的值)排)。这是我的表结构
id name address mobile material qty discount total balance
即使再添加一行,sizeof($item)
或 count()
也会返回 1。
我尝试过搞乱[0]之类的东西,但很困惑。我不太懂 php,这是我第一个与数据库相关的项目。
我想要的是,当用户单击注册时,文本框中可用的所有数据和选择元素都会保存在数据库中。每个表行应保存到一个单独的行。我搜索了很多,但无法使其工作。
最佳答案
您可以为每个选择元素(包括动态创建的元素)指定类似 mate[] 的名称。因此,在发布数据中,您将获得名为 mate 的数组。
<select class="mater" name="mate[]">
关于javascript - 无法访问 POST 中所有动态添加的表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47073691/