Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用条件PHP在单击时运行SQL查询?_Php_Mysql - Fatal编程技术网

如何使用条件PHP在单击时运行SQL查询?

如何使用条件PHP在单击时运行SQL查询?,php,mysql,Php,Mysql,我正在尝试为一家旅馆创建一个房间可用性检查页面,但我遇到了一个问题 我有一个数据库,其中有一个名为“rooms”的表,列出了所有类型的房间,其中包含以下行: id[INT] 名称(房间类型)[CHAR] 容量(最大容量,不可更改)[INT] 已使用(已使用的床位数,我想动态更改此值!)[INT] 我创建了一个代码,用PHP从DB生成房间列表,我希望“+”和“-”按钮可以在特定房间的used列中添加或删除一个单元。我怎样才能做到这一点? 这是我的密码: <!-- SOM

我正在尝试为一家旅馆创建一个房间可用性检查页面,但我遇到了一个问题

我有一个数据库,其中有一个名为“rooms”的表,列出了所有类型的房间,其中包含以下行:

  • id[INT]
  • 名称(房间类型)[CHAR]
  • 容量(最大容量,不可更改)[INT]
  • 已使用(已使用的床位数,我想动态更改此值!)[INT]
  • 我创建了一个代码,用PHP从DB生成房间列表,我希望“+”和“-”按钮可以在特定房间的used列中添加或删除一个单元。我怎样才能做到这一点?

    这是我的密码:

               <!-- 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";
                    } ?>
    
    
    //问题如下,它显示了正确的金额,但$room[“used”]未更新
    使用:
    
    如果将表单的操作设置为代码的名称(例如,“rooms.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());
    }
    
    直到顶部,以便在查询表以填充页面的其余部分之前更新表,它应该可以工作。现在,您的php正在更新SELECT查询之后的表以填充页面,因此它似乎没有更新


    我认为更好的方法是实现AJAX,这样您的表单就可以在不重新加载页面的情况下更新已用字段。

    如果您将表单的操作设置为代码的任何名称(例如,“rooms.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());
    }
    
    直到顶部,以便在查询表以填充页面的其余部分之前更新表,它应该可以工作。现在,您的php正在更新SELECT查询之后的表以填充页面,因此它似乎没有更新


    我认为更好的方法是实现AJAX,这样您的表单就可以在不重新加载页面的情况下更新已使用的字段。

    好吧,所以最后我自己想出了一种方法,所以我将它发布在这里,供其他面临类似问题的人使用;)

    以下是index.php中代码的相关部分:

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

    好吧,最后我自己想出了一个办法,所以我把它贴在这里,让其他面临类似问题的人克服它;)

    以下是index.php中代码的相关部分:

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

    我投票结束这个问题,因为OP需要了解PHP网页的生命周期以及如何使用表单,这是一个完整的教程,不是一个简单的答案。对不起,我无意冒犯,但是从你的代码来看,很明显你跳入了深水区,游泳有点困难。不幸的是,SO不应该是一个教程网站。我投票将这个问题作为非主题关闭,因为OP需要了解PHP网页的生命周期以及如何使用表单,这是一个完整的教程,不是一个简单的答案。对不起,我无意冒犯,但是从你的代码来看,很明显你跳入了深水区,游泳有点困难。不幸的是,这不应该是一个教程网站。我想你错过了所有其他问题。我是一个完全的新手,但我会尝试学习AJAX。我试着按照你告诉我的做,但我最终得到了一个部分加载的页面(房间不再显示:/),无论如何谢谢你的帮助@Krimou32不用麻烦了,首先学习一个有表单的网页是如何工作的。教程,书籍,教程,books@RiggsFolly没必要大惊小怪。我只是想帮他一点忙。但是你完全没有注意到在
    中没有
    字段。我只是说这不一定是你第一个回答的最佳问题。OP不知道他们在做什么,需要一个完整的教程,一点也不需要。我想你错过了所有其他问题。我是一个完全的新手,但我会为此尝试学习AJAX,我尝试了你告诉我的,但我最终得到了一个部分加载的页面(房间不再显示:/),无论如何谢谢你的帮助@Krimou32不用麻烦了,首先学习一个有表单的网页是如何工作的。教程,书籍,教程,books@RiggsFolly没必要大惊小怪。我只是想帮他一点忙。但是你完全没有注意到在
    中没有
    字段。我只是说这不一定是你第一个回答的最佳问题。OP不知道他们在做什么,需要一个完整的教程,而不是一点点的推动