【问题标题】:Data tables form submit all records数据表形式提交所有记录
【发布时间】:2016-02-19 20:25:16
【问题描述】:

我正在使用 Jquery 数据表在表单中显示所有员工的详细信息,当我提交表单时,它只发布第一页表单值。但我需要发布所有表单值

这是我的代码

jQuery(document).ready(function(){
	jQuery('#emptable').dataTable();
	
});
<link rel="stylesheet" href="http://cdn.datatables.net/1.10.5/css/jquery.dataTables.min.css" type="text/css"  />
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min.js"></script>
<form name="emp" method="post">
<table cellpadding="0" cellspacing="0" border="0" class="stdtable" id="emptable">
    <thead>
      <tr>
        <th class="head0">S.No</th>
        <th class="head1">Name</th>
        <th class="head0">Dep Name</th>
        <th class="head1">Comments</th>
      </tr>
    </thead>
    <tr>
    <td>1<input type='hidden' name='serialno' value='1'></td>
    <td>xyz<input type='hidden' name='name[]' value='xyz'></td>
    <td>DE<input type='hidden' name='dep[]' value='DE'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <tr>
    <td>2<input type='hidden' name='serialno' value='2'></td>
    <td>abc<input type='hidden' name='name[]' value='xyz'></td>
    <td>DED<input type='hidden' name='dep[]' value='DED'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <tr>
    <td>3<input type='hidden' name='serialno' value='3'></td>
    <td>adc<input type='hidden' name='name[]' value='adc'></td>
    <td>EDE<input type='hidden' name='dep[]' value='EDE'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <!-- Like all 'N' records will display here -->
    <input type="submit" name="submit" value="submit">
</table> 
</form>

这是我的表单提交代码

<?php 
include_once("includes/dbConnect.inc.php");
if(isset($_POST['submit'])){
$serialno=$_POST['serialno'];
for($i=0; $i< $serialno;)
{
$name=$_POST['name'][$i];
$dep=$_POST['dep'][$i];
$comments=$_POST['comments'][$i];
$query=mysqli_query($con, "INSERT INTO xyz(......remaining code )");
$i++;
}
if($query){echo "Inserted";}
else{echo("Error description: " . mysqli_error($con));}
}
?>

当我运行此代码并提交表单时,只有第一页值(前 10 行记录)插入到数据库中。但是我需要将所有表记录插入数据库,任何人都可以帮助我,我该如何实现。

【问题讨论】:

  • 每页仅显示 10 项。需要更改架构,否则您必须提交每个页面然后移动到另一个页面
  • 输入所有cmets后有没有可能提交表单。
  • @Angel 你可以增加页面的记录限制。
  • @AmitRajput 不,实际上我们有将近 1000 条记录
  • 嗯..不合适。

标签: javascript php mysql ajax datatable


【解决方案1】:

试试这个:

 <?php 
    include_once("includes/dbConnect.inc.php");
    if(isset($_POST['submit'])){
  //  $serialno=$_POST['serialno'];
    for($i=0; $i< 1000)
    {
    $name=$_POST['name'][$i];
    $dep=$_POST['dep'][$i];
    $comments=$_POST['comments'][$i];
    $query=mysqli_query($con, "INSERT INTO xyz(......remaining code )");
    $i++;
    }
    if($query){echo "Inserted";}
    else{echo("Error description: " . mysqli_error($con));}
    }
    ?>

【讨论】:

  • 不,它不起作用,因为它正在插入前 10 条记录的表单数据,之后它将插入空值
  • 我建议您在插入数据库进行测试之前在调用页面上显示记录。
  • php 文件中 $serialno 的值是多少?
  • 这是一个记录计数,实际上我正在从数据库中显示员工详细信息,所以 $serialno 是一个行计数
  • 在您的帖子中,您说数据库中的记录插入问题较少。
【解决方案2】:

试试这个。这是有效的解决方案。

HTML:

<link rel="stylesheet" href="http://cdn.datatables.net/1.10.5/css/jquery.dataTables.min.css" type="text/css"  />
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min.js"></script>

<form id="formID" name="emp" method="post">
<table cellpadding="0" cellspacing="0" border="0" class="stdtable" id="emptable">
    <thead>
      <tr>
        <th class="head0">S.No</th>
        <th class="head1">Name</th>
        <th class="head0">Dep Name</th>
        <th class="head1">Comments</th>
      </tr>
    </thead>
    <tr>
    <td>1<input type='hidden' name='serialno[]' value='1'></td>
    <td>xyz<input type='hidden' name='name[]' value='name1'></td>
    <td>DE<input type='hidden' name='dep[]' value='dep1'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <tr>
    <td>2<input type='hidden' name='serialno[]' value='2'></td>
    <td>abc<input type='hidden' name='name[]' value='name2'></td>
    <td>DED<input type='hidden' name='dep[]' value='dep2'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <tr>
    <td>3<input type='hidden' name='serialno[]' value='3'></td>
    <td>adc<input type='hidden' name='name[]' value='name3'></td>
    <td>EDE<input type='hidden' name='dep[]' value='dep3'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <tr>
    <td>3<input type='hidden' name='serialno[]' value='4'></td>
    <td>adc<input type='hidden' name='name[]' value='name4'></td>
    <td>EDE<input type='hidden' name='dep[]' value='dep4'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <tr>
    <td>3<input type='hidden' name='serialno[]' value='5'></td>
    <td>adc<input type='hidden' name='name[]' value='name5'></td>
    <td>EDE<input type='hidden' name='dep[]' value='dep5'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <tr>
    <td>3<input type='hidden' name='serialno[]' value='6'></td>
    <td>adc<input type='hidden' name='name[]' value='name6'></td>
    <td>EDE<input type='hidden' name='dep[]' value='dep6'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <tr>
    <td>3<input type='hidden' name='serialno[]' value='7'></td>
    <td>adc<input type='hidden' name='name[]' value='name7'></td>
    <td>EDE<input type='hidden' name='dep[]' value='dep7'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr><tr>
    <td>3<input type='hidden' name='serialno[]' value='8'></td>
    <td>adc<input type='hidden' name='name[]' value='name8'></td>
    <td>EDE<input type='hidden' name='dep[]' value='dep8'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <tr>
    <td>3<input type='hidden' name='serialno[]' value='9'></td>
    <td>adc<input type='hidden' name='name[]' value='name9'></td>
    <td>EDE<input type='hidden' name='dep[]' value='dep9'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <tr>
    <td>3<input type='hidden' name='serialno[]' value='10'></td>
    <td>adc<input type='hidden' name='name[]' value='name10'></td>
    <td>EDE<input type='hidden' name='dep[]' value='dep10'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <tr>
    <td>3<input type='hidden' name='serialno[]' value='11'></td>
    <td>adc<input type='hidden' name='name[]' value='name11'></td>
    <td>EDE<input type='hidden' name='dep[]' value='dep11'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <tr>
    <td>3<input type='hidden' name='serialno[]' value='12'></td>
    <td>adc<input type='hidden' name='name[]' value='name12'></td>
    <td>EDE<input type='hidden' name='dep[]' value='dep11'></td>
    <td><textarea name="comments[]"></textarea></td>
    </tr>
    <!-- Like all 'N' records will display here -->
    <input type="submit" name="submit" value="submit">
</table> 
</form>

JavaScript:

<script>
    jQuery(document).ready(function(){
        var oTable = jQuery('#emptable').dataTable();

        $( "#formID" ).submit(function( event ) {           
            $.ajax({
                type: "POST",
                url: "post.php",                
                data: oTable.$('input, textarea').serialize(),
                success: function(response){
                   alert(response);
                }
            });
            event.preventDefault(); // Prevents default form submit
        });    
    });
</script>

PHP(post.php):

<?php 

    echo "<pre>"; print_r($_POST); 

?>

希望这会有所帮助。

【讨论】:

  • 感谢您的宝贵时间,但它不起作用,显示空白警告框
  • 不,它在我的最后工作。你做错了什么。只需替换为我的代码,然后再次检查或创建一个演示进行测试。
  • 我什至没有改变你的代码,但它给了我一个空白的警告框
  • 好的...我明白了。 post.php 文件中有 if 条件。我已经更新了。只需替换我更新的 post.php 文件代码即可。然后检查并告诉我它是否有效。
猜你喜欢
  • 2019-11-03
  • 1970-01-01
  • 2017-12-16
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 2023-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多