将多个复选框值添加到数据库

时间:2014-06-23 20:34:24

标签: php html mysql checkbox html-table

我正在尝试制作一张桌子,用户勾选他们吃过的食物的盒子,并将碳水化合物值发送到另一张桌子。该表的内容位于一个数据库中,我用这段代码调用它:

while($row = mysqli_fetch_array($q))
    {

    echo "<form action='add.php' method='post' id='add'><tr>";
    echo "<td>".$row['carb_id']."</td>";
    echo "<td>".$row['food_item']."</td>";
    echo "<td>".$row['serving_size']."</td>";
    echo "<td>".$row['carbs_per_serving']."</td>";
    echo "<td><input type='checkbox' value='".$row['carbs_per_serving']."'
 name='food[]'></td>";
         echo "</tr></form>";

                 }
        echo "<input type='submit' class='add'form='add'>";

用于添加到另一个表的PHP是:

<?php
        /*blog.php
            process a basic form saving data
        */

    error_reporting ('E_all');

    //Create a connection to the database
    $link = mysqli_connect('localhost','root','','login') 
        or die('Error' . mysqli_error($link));

    //If there is no connection trhows up an error message
    if (mysqli_connect_errno())
        {
          echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }

    $food = $_POST['food'];


    //Insert values into the database       
        //mysqli_query($link,"INSERT INTO blog(post)
        //  VALUES ('".$post."')"
        //  );

        //echos out the information put in apart from the password
        mysqli_query($link,"INSERT INTO carbsummary(cpp)
                        VALUES ('".$food."')"
                        );
            echo $food;
    ?>

我希望我在这里正确地解释了自己。简而言之,我希望让用户检查方框,然后将食物的碳水化合物值提交到下一个表格。

我编码不是很好,因为我不久以来就开始了,但我似乎无法在任何地方找到解决方案。

2 个答案:

答案 0 :(得分:0)

首先:

当您创建表单时,您的循环将创建许多表单。所以你应该改变这段代码:

    while($row = mysqli_fetch_array($q)){
    echo "<form action='add.php' method='post' id='add'><tr>";
    echo "<td>".$row['carb_id']."</td>";
    echo "<td>".$row['food_item']."</td>";
    echo "<td>".$row['serving_size']."</td>";
    echo "<td>".$row['carbs_per_serving']."</td>";
    echo "<td><input type='checkbox' value='".$row['carbs_per_serving']."'
 name='food[]'></td>";
    echo "</tr></form>";
                 }
        echo "<input type='submit' class='add'form='add'>";

有了这个:

    while($row = mysqli_fetch_array($q)){
        echo "<form action='add.php' method='post' id='add'>";
        echo "<tr><td>".$row['carb_id']."</td>";
        echo "<td>".$row['food_item']."</td>";
        echo "<td>".$row['serving_size']."</td>";
        echo "<td>".$row['carbs_per_serving']."</td>";
        echo "<td><input type='checkbox' value='".$row['carbs_per_serving']."'
 name='food[]'></td>";                              }
        echo "<input type='submit' class='add'form='add'>";
        echo "</tr></form>";

}

第二

$ _ POST [&#39; food&#39;]包含一个数组,因此它将返回一个数组,因此您应该调用该值的索引。

$food = $_POST['food'][0];

第三

如果您想同时发送许多插入内容,请更改表单:

echo "<form action='add.php' method='post' id='add'>"; 
while($row = mysqli_fetch_array($q)){                
            echo "<tr><td>".$row['carb_id']."</td>";
            echo "<td>".$row['food_item']."</td>";
            echo "<td>".$row['serving_size']."</td>";
            echo "<td>".$row['carbs_per_serving']."</td>";
            echo "<td><input type='checkbox' value='".$row['carbs_per_serving']."'
     name='food[]'></td>";                              }
            echo "</tr>";
}
    echo "<input type='submit' class='add'form='add'></form>";

然后使用以下命令更改查询执行:

foreach($_POST["food"] AS $food){
     mysqli_query($link,"INSERT INTO carbsummary (cpp) VALUES ('{$food}')";
     echo $food;
}

答案 1 :(得分:0)

  1. 首先,必须对所有传入数据使用mysql_real_escape_string(),这些数据将转到SQL服务器。

  2. 您使用的是相当奇怪的属性 - form =“add”。这不是粗鲁的错误,但如果你删除所有无用的代码会更好。

  3. 如果要将值保存到db,则需要将从客户端获取的数组转换为字符串。这不是最好的解决方案,但是第一次使用implode功能时。

  4. 更改

    $food=$_POST['food'];
    

    $food=implode(',',mysql_real_escape_string($_POST['food']);