Как передать идентификатор из URL-адреса в функцию php без обновления страницы? - PullRequest
0 голосов
/ 10 июля 2020

У меня есть div, который содержит кнопку (Забронировать). Когда я нажимаю кнопку, я хочу добавить к текущему URL-адресу идентификатор элемента, на который я нажал. Затем получить этот идентификатор, чтобы появилось окно с выбранным элементом данные без обновления страницы, потому что мне нужно всплывать на текущей странице.

Здесь он получает идентификатор лечения

 <div class="treatments">
        <ul>
        <?php
          global $treatments;
          foreach($treatments as $treatment){
            echo ' <li><a href="treatments.php?treatmentID='.$treatment['id'].' #treatmentItem" style="color: inherit; text-decoration:none;">'.$treatment['name'].'</a></li>';
          };
        ?>
        </ul>
        <div class="line"></div>
      </div>
<div class="treatment-items">
        <?php 
         global $iController;
         $items;
         if(isset($_GET['treatmentID'])){
            $items = $iController->getItemByTreatmentId($_GET['treatmentID']); 
         }else{
            $items = $iController->getItemByTreatmentId(4); 
         }
         foreach($items as $item){
           echo '
           <div class="col-30 items">
            <div>
            <p>'.$item['id'].'</p>
              <img src="'.$item['img_url'].'" alt="'.$item['name'].'" />
              <h3>'.$item['name'].'</h3>
              <p>'.$item['time'].' min</p>
              <p>'.$item['price'].'$</p>
              <input type="hidden" id="hidden_input" name="id_item" value="'.$item['id'].'">
              <a class="bookBtn" id="btn"><button>BOOK IT</button></a>   // when I press this button I want that box to pop up 
            </div>
           </div>
           ';
         }
        ?>
      </div>

Всплывающее окно

 <div class="bookDetails">
        <div class="details">
          <?php
          global $iController;
          $itemm;
          if(isset($_GET['id_item'])){
            $itemm = $iController->getItemById($_GET['id_item']); 
          }
          echo'
            <h1>Book your treatment</h1>
            <p>Treatment Name : '.$itemm['name'].'</p>
            <p>Treatment Time :'.$itemm['time'].' </p>
            <p>Treatment Price : '.$itemm['price'].'</p>
            ';
          ?>  
              <form action="" method="POST">
              <label for="date">Choose your date:</label>
              <input type="date" for="date" name="date"><br>
              <input type="submit" value="Cancel" id="cancel">
              <input type="submit" value="Book Now">
          </form>

Jquery код

  $(".bookBtn").click(function(){
      $(".bookDetails").show();
    })

функция getItemById

 public function getItemById($id){
        $sql="SELECT * FROM treatments_item WHERE id=$id";
        echo $id;
        $items = mysqli_query($this->connection,$sql);
        $returnArray = array();
        if($items){
            while($row = mysqli_fetch_assoc($items)){
                array_push($returnArray, $row);
            }     
            return $returnArray[0];

        }else{
            echo'It doesn't work';
        }
    }

Ответы [ 2 ]

0 голосов
/ 10 июля 2020
<div class="treatment-items">
<?php 
    global $iController;
    $items;
    if(isset($_GET['treatmentID'])){
        $items = $iController->getItemByTreatmentId($_GET['treatmentID']); 
    }else{
        $items = $iController->getItemByTreatmentId(4); 
    }
    foreach($items as $item){
        echo '
        <div class="col-30 items">
        <div>
        <p>'.$item['id'].'</p>
        <img src="'.$item['img_url'].'" alt="'.$item['name'].'" />
        <h3>'.$item['name'].'</h3>
        <p>'.$item['time'].' min</p>
        <p>'.$item['price'].'$</p>
        <input type="hidden" class="id_item" value="'.$item['id'].'">
        <div class="bookBtn"><button>BOOK IT</button></div>   // when I press this button I want that box to pop up 
        </div>
        </div>
        ';
    }
?>
Примечание: Никогда не используйте одно и то же имя id на одной странице, т.е. id = "hidden_input" // будет сгенерировано для l oop то же имя. Это создаст ошибку в будущем. То же самое касается имени входа, вместо этого используйте класс.
$(document).ready(function(){
    $('body').on('click','.bookBtn',function(){
        var treatmentID = $(this).siblings('.id_item').val();
        // $(this) --> it will read the data of the property you have clicked
        // .siblings --> adjacent class with name ('.id_item')
        $.ajax({
            url: 'treatments.php',
            type: "get", //send it through get method
            data: { 
                treatmentID: treatmentID
            },
            success: function(response) {
                //operation to show the data in div
                //e.g., $('#divId').html(data.name);
                $(".bookDetails").show();            
            }
        });
    })
})
0 голосов
/ 10 июля 2020

Вы можете использовать ajax или смешивать php и javascript следующим образом:

<script>
  $(document).ready(function() {
    <?php session_start(); ?>//Remove session_start
    if (!<?php $_GET(['id'])?'true':'false'; ?>) {
      alert something
    } else {
      something ..
    }

  });
</script>

надеюсь, что это было полезно. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...