我正在尝试制作一张桌子,用户勾选他们吃过的食物的盒子,并将碳水化合物值发送到另一张桌子。该表的内容位于一个数据库中,我用这段代码调用它:
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;
?>
我希望我在这里正确地解释了自己。简而言之,我希望让用户检查方框,然后将食物的碳水化合物值提交到下一个表格。
我编码不是很好,因为我不久以来就开始了,但我似乎无法在任何地方找到解决方案。
答案 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)
首先,必须对所有传入数据使用mysql_real_escape_string()
,这些数据将转到SQL服务器。
您使用的是相当奇怪的属性 - form =“add”。这不是粗鲁的错误,但如果你删除所有无用的代码会更好。
如果要将值保存到db,则需要将从客户端获取的数组转换为字符串。这不是最好的解决方案,但是第一次使用implode
功能时。
更改
$food=$_POST['food'];
要
$food=implode(',',mysql_real_escape_string($_POST['food']);