我创建了一个表,用户可以在其中添加列和行,因此这两个都是未知长度。这些字段包含用户输入数据的输入框。 (忽略x,它们是相关页面的链接)。
PHP for the table(第46行是我传递数组的地方)
我已经决定将这些输入传递到mysql数据库的最佳方法是通过一个多维数组。我听说我可以这样做,但我找不到任何有关我生活的相关文件。
当用户点击提交时,所有数据都应输入到如下表格中:
(其中header = cem_param_id和product(左侧)= cem_prod_id)
我该怎么做?
我知道MySQL已经过时了。我还在学习更新它。
答案 0 :(得分:1)
由于我们无法一步到位地找到解决方案,并且为了使自己清楚,您的表格如下:
<?php
$dbCon = new PDO("mysql:host=localhost;database=test", 'root', '');
if(isset($_POST) && !empty($_POST)) {
echo '<pre>'; print_r($_POST);
die;
}
?>
HTMl查看:
<!DOCTYPE html>
<html>
<title>Stack HTML</title>
<link rel="stylesheet" href="../repo/css/bootstrap.css" type="text/css" />
<script src="https://code.jquery.com/jquery-2.1.3.js"></script>
<script src="../repo/js/bootstrap.js"></script>
<script src="../repo/js/jquery.validate.js"></script>
<head>
</head>
<body>
<div class="container">
<form method="post">
<table class="table">
<tr>
<td><input type="checkbox" name="row[1][1]" /></td>
<td><input type="checkbox" name="row[1][2]" /></td>
<td><input type="checkbox" name="row[1][3]" /></td>
</tr>
</table>
<input type="submit" name="submit" value="Submit" class="btn btn-primary" />
<input type="button" name="submit" value="Add Horizontal" class="btn btn-success" />
<input type="button" name="submit" value="Add Vertical" class="btn btn-info" />
</form>
</div>
<script>
$(function(){
$(document).on('click', '.btn-success', function(){
var tableColumns = $('.table tr:eq(0)>td').length;
var tableRow = $('.table tr').length;
var NewRowNumber = tableRow+1;
var htmlElement = '<tr>';
for(i=1; i<=tableColumns; i++){
htmlElement += '<td><input type="checkbox" name="row['+NewRowNumber+']['+i+']" /></td>';
}
htmlElement += '</tr>';
$('.table').append(htmlElement);
});
$(document).on('click', '.btn-info', function(){
console.log($(this))
var RowCount = 1;
$('.table tr').each(function() {
var Column = $(this).find('td').length;
$(this).append('<td><input type="checkbox" name="row['+RowCount+']['+Column+']" /></td>')
RowCount++;
});
});
})
</script>
</body>
</html>
另外你还会有动态行吗?
答案 1 :(得分:0)
我将输入的名称作为数组传递;
<input type='checkbox' name='prod_matrix[".$ceprod_id."][".$ceparam_id."]'>
其中$ ceprod_id是产品ID,$ ceparam_id是参数ID(标题)
然后我使用2个foreach循环捕获了这些:
$prod_matrix = $_POST['prod_matrix'];
foreach($prod_matrix as $prodid => $product)
{
echo $prodid;
foreach ($product as $paramid => $value)
{
echo $paramid;
echo $value;
}
echo "<br>";
}
其中$ value是输入到字段中的数据(如果选中,复选框会给出“on”值,如果未选中,则根本不传递任何内容)
然后我使用此信息来构建查询。
答案 2 :(得分:0)
这是一个解决方案:
Submitting a multidimensional array via POST with php
在提交时,您将获得一个数组,就好像这样创建:
$_POST['topdiameter'] = array( 'first value', 'second value' );
$_POST['bottomdiameter'] = array( 'first value', 'second value' );
但是,我建议您将表单名称更改为此格式:
name="diameters[0][top]"
name="diameters[0][bottom]"
name="diameters[1][top]"
name="diameters[1][bottom]"
...
使用该格式,循环使用这些值会更容易。
if ( isset( $_POST['diameters'] ) )
{
echo '<table>';
foreach ( $_POST['diameters'] as $diam )
{
// here you have access to $diam['top'] and $diam['bottom']
echo '<tr>';
echo ' <td>', $diam['top'], '</td>';
echo ' <td>', $diam['bottom'], '</td>';
echo '</tr>';
}
echo '</table>';
}