有什么方法可以遍历大量输入类型数字并只打印出值大于 0 的值吗?
假设我有 10 个
<form action="displayInfo.php" method="post">
<table cellpadding="6">
<tr>
<th>Description</th>
<th>Price</th>
<th>Weight</th>
<th>Image</th>
<th>Quantity</th>
</tr>
<!-- PHP LANGUAGE -->
<?PHP
$sql = "SELECT * FROM parts";
$q = $conn->query($sql) or die("ERROR: " . implode(":", $conn->errorIndo()));
while( $row = $q->fetch(PDO::FETCH_ASSOC))
{
echo '<tr>' .
'<td>' . $row['description'] . '</td>' .
'<td>' . $row['price'] . '</td>' .
'<td>' . $row['weight'] . '</td>' .
'<td> <img src="' . $row[pictureURL] .'" alt="' . $row[number] . '" style="width:50px;height:50px;">' .
'<td> <input type="number" name = "' . $row[number] ." id= "'. $row[number] . '" value="0">' .
'</td>' . '</tr>';
}
echo "</table>";
?>
</table> <br>
<input type="button" id="submit" value="Submit" />
</form>
因此,它们是使用值为 1,2,3,...10 的 ID 动态创建的。 然后通过用户输入更新这些值。
对于用户输入的大于 0 的值,我是否可以捕获提交按钮传递的数据?如果是这样,我将如何传递描述甚至 $row[number] 以及与之关联的值。输入类型编号的 id = 代码中显示的 $row[number]。
最佳答案
最简单的方法可能是使用 PHP 特性,在 How do I create arrays in a HTML <form>
? 中有解释。
简而言之,您重命名表单控件以使用通用前缀,添加方括号以使 PHP 将它们转换为数组,然后像任何其他数组一样循环数据:
'<td> <input type="number" name = "row[' . $row[number] . ']" id= "'. $row[number] . '" value="0">' .
我还修复了遗漏的引号,但我认为它不在您的实际代码中。
然后:
foreach ($_POST['row'] as $number => $value) {
}
因为它是一个数组,所以您可以使用常用的好东西,例如:
$rows = array_filter($_POST['row'], function($val){
return is_numeric($val) && $val>10;
});
关于PHP/HTML 输入类型编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43733026/