无法访问POST中所有动态添加的表元素

时间:2017-11-02 11:01:57

标签: javascript php jquery html mysql

我正在研究一个基于网络的erp有点平台,但是我想要保存一些文本框中的所有数据并选择标签,而不是将它们全部保存到数据库中。

这是一张简单的表格。页面默认完成加载后,有一行用于插入数据。但是,如果(并且仅当)买方想要购买更多材料而不是我希望用户插入更多行并将所有数据保存到数据库。

<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,这是我与dbs相关的第一个项目。

我想要的是当用户点击注册时,文本框中的所有可用数据和select元素都会保存在数据库中。每个表行应保存到一个单独的行。我经常搜索但是无法正常工作。

1 个答案:

答案 0 :(得分:1)

对于包含动态创建元素的每个select元素,您可以为mate []指定名称。因此,在发布数据中,您将获得名为mate的数组。

<select class="mater" name="mate[]">