PHP,复选框,返回多个值(行)

时间:2014-12-24 12:03:19

标签: php sql arrays checkbox

我有一个包含某些属性的表,我需要在每一行都有一个复选框。此表向用户显示,他们可以检查某些行。应该检查至少一行,但是没有限制可以检查多少行,可以检查所有复选框。当用户选择某些行时,我需要获得每个选定行的两个属性 - 日期 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 !!

2 个答案:

答案 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];