我的项目是一个小酒馆菜单,使用PHP和MySQL。它打印出一个漂亮的菜单项目表,只要它们有货。我想使用php或ajax发布回自己的表单来刷新表格
我做了addRemove.php来添加和删除菜单项。它为每个项目创建一个按钮,打开或关闭。 “开”的项目有货并显示在菜单上。当用户点击一个按钮时,它会将按钮的名称发回到表单,然后“切换”功能对该项目执行UPDATE。如果该按钮处于打开状态,则会将其切换为关闭状态。如果它关闭,它会打开。
例如:我在菜单上有3个项目,意大利面,披萨和芝士汉堡。我用完了意大利面,所以我去addRemove.php。
面条,披萨,和乳酪负载为按钮 披萨:[ON] 意粉:[ON] 乳酪:[ON]
我点击面条按钮,并且数据库正确地更新为: 披萨:[ON] 意粉:[OFF] 乳酪:[ON]
但形式示出: 披萨:[ON] 意粉:[ON] 乳酪:[ON]
然后我点击汉堡按钮,并在数据库再次正确更新: 比萨:[ON] 意粉:[关闭] 汉堡:[关闭]
和表格现在显示 比萨:[ON] 意大利面:[OFF] 芝士汉堡:[ON]
表格显示的是实际数据的一步。我认为问题在于,在执行'切换'UPDATE查询之前,表单被重新加载。
我不知道AJAX,是否有一种简单的方法来更新后强制刷新?
这里是addRemove.php:
<?php include ("data2.php");
$keys = array_keys($_POST);
if(isset($keys[0])){
toggle($name[$keys[0]]);
}
?>
<form action="addRemove2.php" method="post">
<?php
global $name;
$c = count($name);
//$c = 2;
for($i=0;$i<$c;$i++){
$item = $name[$i];
if($inStock[$i]==1){
$onOff = "ON";$color = "blue";
}
else{
$onOff = "OFF";$color = "red";
}
echo "<label>$item</label>";
echo "<input type='submit' name='$i' value='$onOff' style='color:$color'>";
echo "<br />";
}
?>
</form>
<?php
function turnOn($item){
$dbc = mysqli_connect('localhost','root','','bigItaly')
or die('Error connecting to MySQL Server.');
$queryString = "UPDATE items SET inStock='1' WHERE name='$item'";
mysqli_query($dbc, $queryString);
mysqli_close($dbc);
}
function turnOff($item){
$dbc = mysqli_connect('localhost','root','','bigItaly')
or die('Error connecting to MySQL Server.');
$queryString = "UPDATE items SET inStock='1' WHERE name='$item'";
mysqli_query($dbc, $queryString);
mysqli_close($dbc);}
function getInStock($item){
global $name, $inStock;
$key = array_search($item, $name);
return $inStock[$key];
}
function toggle($item){
if (getInStock($item)=="1"){
turnOff($item);
}
else{
turnOn($item);
}
}
?>
</html>
这里是数据库模式。
INSERT INTO `items` (`id`, `name`, `unitPrice`, `inStock`, `category`) VALUES
(1, 'Fettucine Alfredo', 2, 1, 'Pastas'),
(2, 'Hawaiian', 3, 1, 'Pizzas'),
(3, 'Spaghetti', 3, 1, 'Pastas'),
(4, 'Supreme', 5, 1, 'Pizzas'),
(5, 'Deluxe Lasagna', 2, 1, 'Pastas'),
(6, 'Barbecue Chicken', 6, 1, 'Pizzas'),
(7, 'Guacomole Bacon', 3, 1, 'Burgers'),
(8, 'Swiss Mushroom', 2, 1, 'Burgers'),
(9, 'Breakfast Burger', 2, 1, 'Burgers');