文本输入不为空时发布数据PHP

时间:2017-02-06 11:46:18

标签: javascript php jquery datatables

我有一个表格,它为我提供了3列,产品代码,产品名称和复选框。

目前它基本上会发布任何已经检查过的产品,但是我想将功能更改为文本框而不是复选框,并且只发布文本框中包含某些内容的数据,我一直在修修补补用它无济于事。

这是我的表:

<form id="frm-example" action="price-quote.php" method="POST">                    
<table id="datatable-price" class="table table-striped table-bordered">
    <thead>
        <tr>
            <th>Product Code</th>
            <th>Product Name</th>
            <th>Add to quote</th>
        </tr>
    </thead>
    <tbody>
        <?php while($res = sqlsrv_fetch_array($def, SQLSRV_FETCH_ASSOC)) : ?>
            <tr>                                
                <td><?php echo $res['ItemCode']; ?></td>
                <td><?php echo $res['ItemName']; ?></td>
                <td>
                    <input type="checkbox" name="checkbox[]" value="<?php echo $res['ItemCode'];?>"></input>
                </td>
            </tr>
        <?php endwhile; ?> 
    </tbody>
</table>
<input type="submit" id="submit" name="submit" class="btn btn-success pull-right" value="Quote"></input>
</form>

这是javascript:

<script>
  $(document).ready(function (){
     var table = $('#datatable-price').DataTable({
     });

     // Handle click on "Select all" control
     $('#datatable-price-select-all').on('click', function(){
        // Get all rows with search applied
        var rows = table.rows({ 'search': 'applied' }).nodes();
        // Check/uncheck checkboxes for all rows in the table
        $('input[type="checkbox"]', rows).prop('checked', this.checked);
     });

     // Handle click on checkbox to set state of "Select all" control
     $('#datatable-price tbody').on('change', 'input[type="checkbox"]', function(){
        // If checkbox is not checked
        if(!this.checked){
           var el = $('#datatable-price-select-all').get(0);
           // If "Select all" control is checked and has 'indeterminate' property
           if(el && el.checked && ('indeterminate' in el)){
              // Set visual state of "Select all" control 
              // as 'indeterminate'
              el.indeterminate = true;
           }
        }
     });

     // Handle form submission event
     $('#frm-example').on('submit', function(e){
        var form = this;

        // Iterate over all checkboxes in the table
        table.$('input[type="checkbox"]').each(function(){
           // If checkbox doesn't exist in DOM
           if(!$.contains(document, this)){
              // If checkbox is checked
              if(this.checked){
                 // Create a hidden element 
                 $(form).append(
                    $('<input>')
                       .attr('type', 'hidden')
                       .attr('name', this.name)
                       .val(this.value)
                 );
              }
           } 
        });
     });

  });
</script>

这是我发布的页面:

<?php 
if(!empty($_POST['checkbox'])) {
    foreach($_POST['checkbox'] as $check){
        $abc = "SELECT ItemCode, ItemName 
                FROM OITM 
                WHERE ItemCode = '$check' 
                ORDER BY ItemName";
        $def = sqlsrv_query($sapconn, $abc);
        $res = sqlsrv_fetch_array($def, SQLSRV_FETCH_ASSOC);
        $prodCode = $res['ItemCode'];
        $prodName = $res['ItemName'];

        echo "
            <tr>                                
                <td>$prodCode</td>
                <td>$prodName</td>
            </tr>
        ";
    }
}
?>

任何人都可以将其改为在文本框中提交文本而不是复选框。这将是伟大的,非常感谢!

提前致谢

1 个答案:

答案 0 :(得分:0)

我没有得到你想做的事情,但有很多方法可以做。

首先,您可以更改复选框的值以执行多重字段(不推荐)。的工作原理。

类似的东西:

<input type="checkbox" name="checkbox[]" value="<?php echo $res['ItemCode'];?>|<?php echo $res['ItemName'];?>"></input>

在PHP中,你获得并分割价值。

其次,您可以添加隐藏字段。当标记为复选框时,您可以动态创建隐藏的值和文本。

您可以继续使用复选框传递代码。发布后,您使用内爆。 你需要这样做,因为你可以收到超过1件物品。

<?php 
if(!empty($_POST['checkbox'])) {
    $in = implode(",",$_POST['checkbox']);

    foreach($_POST['checkbox'] as $check){
        $abc = "SELECT ItemCode, ItemName FROM OITM WHERE ItemCode in ('. $in . ') ORDER BY ItemName";

    }
}
?>