我有一个表格,它为我提供了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>
";
}
}
?>
任何人都可以将其改为在文本框中提交文本而不是复选框。这将是伟大的,非常感谢!
提前致谢
答案 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";
}
}
?>