我有一个包含某些属性的表,我需要在每一行都有一个复选框。此表向用户显示,他们可以检查某些行。应该检查至少一行,但是没有限制可以检查多少行,可以检查所有复选框。当用户选择某些行时,我需要获得每个选定行的两个属性 - 日期和 id 。之后我需要在数组中包含这些属性,我可以像这样到达它们:
echo $pole[0]; --> output: 1.12.2014
echo $pole[1]; --> output: 4
echo $pole[2]; --> output: 5.12.2014
echo $pole[3]; --> output: 8
这是我的代码:
session_start();
include('connect.php');
$stmt = $db->query('SELECT * FROM tabulka');
foreach($stmt as $row)
{
echo "<tr>";
echo "<td>" . $row['date'] . "</td>";
echo "<td>" . $row['city'] . "</td>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['deadline'] . "</td>";
echo "<td> <input type=\"checkbox\" name=\"interest[]\" value=\"" . $row['date'] . " " . $row['id'] . " " . "\"></td>";
}
最后一个回显在表格的每一行创建一个复选框,但我不确定,如果它是正确的。当用户选择某些行并按下提交按钮时,它将转到另一个文件:
session_start();
if(isset($_POST['submit'])) {//to run PHP script on submit
if (!empty($_POST['interest'])) {
$data = $_POST['interest'];
foreach ($data as $selected) {
echo $selected."</br>";
}
这样可行,但我无法按照自己的意愿达到这些属性。我试图分割$ data,但它还没有奏效。我只能到达数组或整行的字符(日期和id,但不仅仅是日期或只有id)。
有人可以帮忙吗?如果有更好的解决方案,我将不胜感激。
顺便说一句:圣诞快乐stackoverflowers !!
答案 0 :(得分:2)
我建议您将创建输入标记的行更改为:
echo "<td> <input type=\"checkbox\" name=\"interest[" . $row['id'] . "]\" value=\"" . $row['date'] . "\"></td>";
这样,id将被用作兴趣数组中日期值的键。
然后将其他文件中的foreach更改为:
$data = $_POST['interest'];
$selected_items = array();
foreach ($data as $id => $date) {
// $id is the key of the array, $date is the value of the array
// Add an array with the data for this selected value to the end of the array with selected items
$selected_items[] = array('id' => $id, 'date' => $date);
}
var_dump($selected_items); // This should display all the selected items in your form
现在,您可以使用foreach遍历所选项目数组。
答案 1 :(得分:1)
爆炸对你有好处,我不知道为什么它不适合你。
if (isset($_POST['submit'])) {//to run PHP script on submit
$dataArray = array();
if (!empty($_POST['interest'])) {
foreach ($_POST['interest'] as $selected) {
$pieces = explode($selected);
$dataArray = array(
'id' => $selected[0],
'date' => $selected[1]
);
}
var_dump($dataArray);
}
}
如果您愿意,可以添加您的ID作为数组的键:
$dataArray[$selected[0]] = $selected[1];