Ben php veya ajax ile kendisine geri gönderdikten sonra bir form yenilemek istiyorum

0 Cevap php

Benim proje PHP ve MySQL kullanarak bir bistro menü. Bu sürece onlar stok olduğu gibi, menü öğeleri oldukça tablo yazdırır.

Ben menü öğeleri eklemek ve kaldırmak için addRemove.php yaptı. Her öğe için bir düğme oluşturur, açık veya kapalı. 'Açık' olan ürün stok ve menüde görüntülenir. Kullanıcı bir düğmeye tıkladığında, o zaman 'geçiş' işlevi bu madde üzerinde bir UPDATE gerçekleştirir, geri forma düğmenin adını yayınlayacağız. Düğmesi ise, kapalı konumuna getirildiğinde alır. Kapalı ise, ilgili konumuna getirildiğinde alır.

Örnek: Ben menüsünde 3 öğe, spagetti, Pizza, ve Cheeseburger var. Ben Spaghetti tükendi, ben addRemove.php gidin.

Spaghetti, Pizza, and Cheeseburger load as buttons Pizza:[ON] Spaghetti:[ON] Cheeseburger:[ON]

I click the Spaghetti button, and the database correctly updates to: Pizza:[ON] Spaghetti:[OFF] Cheeseburger:[ON]

but the form shows: Pizza:[ON] Spaghetti:[ON] Cheeseburger:[ON]

then I click the Cheeseburger button, and the database is again correctly updated: Pizza:[ON] Spaghetti:[OFF] Cheeseburger:[OFF]

and the form now shows Pizza:[ON] Spaghetti:[OFF] Cheeseburger:[ON]

Gösterilen formu gerçek veri arkasında bir adımdır. Ben sorunu 'geçiş' GÜNCELLEME sorgu yürütüldüğünde önce formu gönderilmiş ve yeniden olduğunu düşünüyorum.

AJAX, UPDATE sonra bir yenilenmeye zorlamak için basit bir yolu var bilmiyorum?

Burada addRemove.php olduğunu:

<?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>

Burada veritabanı şeması.

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');

0 Cevap