2017-01-20 3 views
1

私はホステルの空室確認ページを作成しようとしており、問題が発生しています。条件付きPHPを使用してクリック時にSQLクエリを実行するには?

私はこれらの行と部屋のすべての種類をリスト '部屋' という名前のテーブルを持つデータベースを持っている:

  1. ID [INT]
  2. 名(部屋タイプ)[CHAR]
  3. 容量(最大容量は、変更することはしない)[INT]
  4. 使用(ベッドの数は、を使用し、私はこの動的を変更したい!)[INT]

PHPでデータベースから室リストを生成するコードを作成しました。"+"と " - "ボタンを使用して、特定の部屋の使用済み列のユニットを追加または削除します。これどうやってするの?ここで

は私のコードです:あなたはあなたのコードの名前が何であれにフォームのアクションを設定した場合(例えば、「rooms.php」)、その後、移動

  <!-- SOME HTML/PHP THAT WORKS -->  
      <?php if ($roomlist->num_rows > 0) { 
       // output data of each row 
       while($room = $roomlist->fetch_assoc()) { 
       $roomid = $room["id"]; ?> 
       <div> 
       <!-- SOME OTHER HTML/PHP THAT WORKS --> 

        // THE ISSUE IS BELOW, IT SHOWS THE CORRECT AMOUNT BUT $room["used"] DOES NOT UPDATE 
        <div> 
        Used: <?php echo $room["used"] . "/" . $room["capacity"] ?> 
        </div> 
        <div> 
        <form action="" method="POST"> 
        <input type="submit" name="remove" value="-" /> 
        <input type="submit" name="add" value="+" /> 

        <?php 
        if(isset($_POST['remove'])){ 
         $remove_query = mysqli_query("UPDATE rooms SET used = used - 1 WHERE id = $roomid") or die(mysqli_error()); 
        } elseif (isset($_POST['add'])){ 
         $add_query = mysqli_query("UPDATE rooms SET used = used + 1 WHERE id = $roomid") or die(mysqli_error()); 
        } 

        ?> 
        </form> 
        </div> 
          </div> 
         </div> 
       <?php } 
       } else { 
        echo "0 results"; 
       } ?> 
+2

<form action="update.php?id=<?php echo $roomid ?>&action=remove&used=<?php echo $room["used"] ?>&capacity=<?php echo $room["capacity"] ?>" method="post"> <input type="submit" name="remove" class="minus" value="-" /> </form> <form action="update.php?id=<?php echo $roomid ?>&action=add&used=<?php echo $room["used"] ?>&capacity=<?php echo $room["capacity"] ?>" method="post"> <input type="submit" name="add" class="plus" value="+" /> </form> 

そしてupdate.phpをのコードフォームを使用すると私は完全なチュートリアルは単純な答えではありません – RiggsFolly

+0

http://myphpform.com/php-form-tutorial.php – RiggsFolly

+0

私は申し訳ありませんが、それは私の意地悪ではありませんでしたが、あなたのコードから、あなたが深く入り込んだことはかなり明らかです少し泳ぎに苦しんでいる。残念ながら、SOはチュートリアルサイトではありません。 – RiggsFolly

答えて

0

if(isset($_POST['remove'])){ 
    $remove_query = mysqli_query("UPDATE rooms SET used = used - 1 WHERE id  = $roomid") or die(mysqli_error()); 
} elseif (isset($_POST['add'])){ 
    $add_query = mysqli_query("UPDATE rooms SET used = used + 1 WHERE id = $roomid") or die(mysqli_error()); 
} 

トップへページの残りの部分を埋めるためにテーブルをクエリする前にテーブルを更新するので、それはうまくいくはずです。今、PHPがSELECTクエリの後にテーブルを更新してページを埋めるため、更新されていないようです。

私はAJAXを実装する方が良いと思うので、フォームはページをリロードせずにUsedフィールドを更新します。

+0

私はあなたが他のすべての問題を逃したと思う – RiggsFolly

+0

私は完全な初心者ですが、私はそれのためにAJAXを学ぼうとするでしょう、私はあなたが私に言ったことをやったが、私は部分的に読み込まれたページで終わる(部屋はもう表示されません: /)とにかく助けてくれてありがとう! – krimou32

+0

@ Krimou32気にしないでください。最初にフォーム上のWebページがどのように動作するかを学びます。チュートリアル、本、チュートリアル、書籍 – RiggsFolly

0

は大丈夫私はそう、私はそれを克服するために、同様の問題に直面して、他の人のためにそれをここに投稿し、最終的に自分のやり方を考え出し;)ここで

はindex.phpの中のコードの懸念一部であり、 OPは、PHPのWebページのライフサイクルを理解する必要があるとどのようにので、私は、オフトピックとして、この質問を閉じるために投票しています

if (isset($_REQUEST['used']) && isset($_REQUEST['id']) && isset($_REQUEST['capacity'])) { 

    $roomid = $_REQUEST['id']; 
    $used = $_REQUEST['used']; 
    $capacity = $_REQUEST['capacity']; 

    if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'add') { 
     if ($used >= $capacity) { 
     header("location: index.php"); 
     } else { 
     $newValue = $used + 1; 
     $add_query = mysqli_query($connection, "UPDATE `rooms` SET `used` = $newValue WHERE `ID` = $roomid") or die(mysqli_error()); 
     header("location: index.php"); 
     } 
    } elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'remove') { 
     if ($used <= 0) { 
     header("location: index.php"); 
     } else { 
     $newValue = $used - 1; 
     $remove_query = mysqli_query($connection, "UPDATE `rooms` SET `used` = $newValue WHERE `ID` = $roomid") or die(mysqli_error()); 
     header("location: index.php"); 
     } 
    } 
} 
関連する問題