2016-05-18 108 views
0

我正在嘗試編寫一個更改某個公寓的可用性的php代碼。這裏是我的代碼:Mysql表格單元格不會在點擊時更改值

<!DOCTYPE html> 
<html> 

    <head> 
     <title></title> 
    </head> 

    <body> 

     <?php 

      $servername = "localhost"; 
      $username = "bla"; 
      $password = "blabla"; 
      $dbname = "testDB"; 

      // Create connection 
      $connect = mysqli_connect($servername, $username, $password, $dbname); 

      // Check connection 
      if ($connect->connect_error) { 
       die("Connection failed: " . $connect->connect_error); 
      }else{ 
       echo "Connected successfully to the database: " . $dbname . "<br><br>"; 
      } 

      $query = "SELECT * FROM test"; 
      $result = mysqli_query($connect, $query); 
      $row = mysqli_fetch_array($result); 

      echo "id: " . $row["id"] . " // Address: " . $row["address"] . " // Rooms: " . $row["rooms"] . " // Availability: " . $row["availability"] . ".<br>"; 
      ?> 
       <form method ="post" action ="<?php $_PHP_SELF ?>"> 
        <input name="update" type="submit" value="Change Availability"> 
       </form> 
      <?php 

      if(isset($_POST["update"])) { 
       $avail = mysqli_query($connect,"SELECT availability FROM test WHERE id='1'"); 
       $availCheck = mysqli_fetch_array($avail); 
       settype($availCheck, "int"); 

       if($availCheck == 1){ 
        $upAvail = mysqli_query($connect,"UPDATE test SET availability='0' WHERE id='1'"); 
       }else{ 
        $upAvail = mysqli_query($connect,"UPDATE test SET availability='1' WHERE id='1'"); 
       } 
      } 

     ?> 

    </body> 

</html> 

這是輸出我得到:

成功連接到數據庫:TESTDB

ID:1 //地址:3787間科特迪瓦沙漠Neiges酒店客房//: 2 //可用性:1. 更改Availability

所以這是我的問題。當可用性爲1時,按下按鈕它將變爲0.但在此之後,當我再次按下按鈕時,它不會變回1.

爲什麼?

謝謝你的幫助。

回答

0

你沒有翻轉availabilitymysqli_fetch_array從匹配id(id = 1)的test表中提取行。因此,在將非空數組轉換爲整數後,$availCheck將始終等於1

您可以使用單個MySQL查詢替換所有該邏輯以切換該值。

UPDATE test SET availability = IF(availability = 1, 0, 1) WHERE id=1 

我想你想做的事:

$availCheck = mysqli_fetch_array($avail)['availability']; 
+0

謝謝你這麼多@noahnu就解決了!但讓我問你。有沒有辦法做同樣的事情,但使用我的邏輯?獲得每次點擊的可用性值,將其保存到變量中,然後使用if語句更改該值?僅出於教育原因。 – Rorrim

+0

是的。我編輯了我的答案。查看最後的代碼片段。我建議在嘗試訪問關聯索引之前檢查mysqli_fetch_array是否爲空/假。 – noahnu

+0

是的,我問你後,我回答了我自己的問題!再次感謝你! @noahnu – Rorrim

相關問題