我目前正在一个网站的更新配置文件部分工作,我正在创建一个有趣的。在更新简介的这一部分中,企业主可以更新他们的餐厅菜单(菜单由类别(开胃菜、主菜等)、菜单项和过敏原组成)。
现在网站正在以输入框格式打印企业主以前提交的内容,这样企业主只需删除并重新输入新信息。然而,我们不知道每个餐厅有多少菜单项,所以我设计了一个系统来动态地更新每一个被改变的菜单项。
<?php
$sql="SELECT * from menu_item as m, allergen as a WHERE a.restaurant_id=m.restaurant_id AND m.menu_item_id=a.menu_item_id AND m.restaurant_id='".$rest_id."'";
$result11=mysqli_query($con,$sql);
if (mysqli_num_rows($result)==0){
echo "<strong>You have not submitted any menu information</strong><br><br>";
echo "Please enter your menu information here: ";
echo '<a href="http://cgi.soic.indiana.edu/~team01/BO_interfaces/menu_form.html" class="contbtn">Create Menu</a>';
}
else{
$i=0;
echo "<table border='1' cellpadding='10'><tr><th>Category</th><th>Menu Item</th><th>Allergen</th></tr>";
while($rows=mysqli_fetch_assoc($result11)) {
echo '<tr><td><input type="text" name="category'.$i.'"value="'. $rows['category']. '"</td><br>';
echo '<td><input type="text" name="menu_item'.$i.'" value="'. $rows['menu_item']. '"</td><br>';
echo '<td><input type="text" name="allergen'.$i.'" value="'. $rows['allergen']. '"</td><br>';
echo '<td><input type="hidden" name="id'.$i.'" value="'. $rows['menu_item_id']. '"</td></tr><br>';
$i++;
}
}
echo "</table>";
var_dump(mysqli_num_rows($result11));
// var_dump($_POST);
$count=0;
while ($count<=mysqli_num_rows($result11)){
${"category".$count}=mysqli_real_escape_string($con, $_POST['category'.'$count']);
$count++;
}
var_dump($category0);
?>
这就是底部的while循环发挥作用的地方。我想能够动态创建变量的类别,菜单项和过敏原。然后我希望能够在同一while循环(mysqli\u query)中创建$result变量,然后相应地更新行。但是,现在我的最后一个var\u dump返回的值是“”,它告诉我要么连接html name属性错误(first while循环),要么在最后一个while循环中连接有问题。有人知道我做错了什么吗?
1条答案
按热度按时间yqhsw0fo1#
$_POST['category'.'$count']
你的第二个循环应该是$_POST['category'.$count]
. 您也只希望在表单提交后运行此代码(我假设您发布的代码不是您的完整脚本,因此不清楚是否发生了这种情况)-否则您将获得原始值,而不是用户在表单中所做的任何更改。一般来说,如果您可以将提交的数据放入一个多维数组中,而不必动态地创建变量,那么您的工作会更轻松。请参阅上的“如何在html表单中创建数组?”一节http://php.net/manual/en/faq.html.php. 在你的情况下,我会这样做:
然后你用这样的方法循环:
您还希望转义输出的输入值
htmlspecialchars()
正如我上面所说。