2017-01-20 5 views
1

Я пытаюсь создать страницу проверки доступности номера для общежития, и у меня возникла проблема.Как запустить SQL-запрос при щелчке с помощью условного PHP?

У меня есть база данных с таблицей с именем 'номера' список всех типов номеров с этими строками:

  1. идентификатор [INT]
  2. имя (тип номера) [CHAR]
  3. емкости (максимальная мощность, не должна быть изменена) [INT]
  4. используется (количество койко-мест используется, Я хочу изменить это динамически!) [INT]

Я создал код для создания списка комнат из БД с помощью 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

Я голосую, чтобы закрыть этот вопрос не по теме, потому что ОП необходимо понять жизненный цикл веб-страницы PHP и как использовать формы и что i sa весь учебник не простой ответ – RiggsFolly

+0

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

+0

Прошу прощения, это было не мое намерение оскорбить, но из вашего кода совершенно очевидно, что вы прыгнули вглубь конец и немного беспокоятся о плавании. К сожалению, SO не должен быть учебным сайтом. – RiggsFolly

ответ

0

Если выбрано действие вашей формы к тому, что имя вашего кода является (например, «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, чтобы ваша форма обновляла поле «Использовать» без перезагрузки страницы.

+0

Я думаю, вы пропустили все остальные вопросы – RiggsFolly

+0

Я полный новичок, но я попробую изучить AJAX для этого, я попытался сделать то, что вы сказали мне, но в итоге я получил частично загруженную страницу (комнаты больше не появляются: /) Спасибо за вашу помощь! – krimou32

+0

@ Krimou32 Не беспокойтесь, сначала узнайте, как работает веб-страница с формой на ней. Учебники, книги, учебники, книги – RiggsFolly

0

Хорошо, так что я придумал, как сам по себе, в конце концов, так я его здесь для других людей, которые сталкиваются с аналогичной проблемой, чтобы преодолеть его;)

Здесь заинтересованная часть кода в 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> 

и код update.php:

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"); 
     } 
    } 
}