Php отправить несколько параметров на другую страницу - PullRequest
0 голосов
/ 13 января 2020

У меня есть проект создания маршрута. Все доступные пункты назначения перечислены на моей правой панели и могут быть выбраны нажатием кнопки. После того, как пользователь выберет желаемый пункт назначения / с, он будет отображаться на моей правой панели на той же странице, в этой части все работает отлично. Я также успешно передал выбранное значение назначения в URL, используя сеанс, но когда я собираюсь отобразить его на другой странице, я получаю только последнее значение выбранного места назначения. Может кто-нибудь знает какое-либо решение или обойти? Любая помощь будет очень высоко ценится. Заранее спасибо!

Ниже приведен скриншот моего проекта и коды для справки.

Это мой вид правой панели, где пользователь может выбрать пункт назначения / с.

enter image description here

Это мои коды для выбора пункта назначения / с.

<?php
session_start();
if(!empty($_SESSION['destinationID'])){
        $destinationID = $_SESSION['destinationID'];
    }        
$dropdown_destination = $_GET['dropdown_destination']?:null;
$dropdown_tourdate = $_GET['dropdown_tourdate']?:null;
require_once("dbcontroller.php");
$db_handle = new DBController();
if(!empty($_GET["action"])) {
switch($_GET["action"]) {
  case "add":
    if(!empty($_POST["quantity"])) {
      $productByCode = $db_handle->runQuery("SELECT * FROM tourist_spot WHERE TOURIST_SPOT_ID='" . $_GET["code"] . "'");
      $itemArray = array($productByCode[0]["TOURIST_SPOT_ID"]=>array('TOURIST_SPOT'=>$productByCode[0]["TOURIST_SPOT"], 
        'code'=>$productByCode[0]["TOURIST_SPOT_ID"], 
        'quantity'=>$_POST["quantity"], 
        'PRICE_PER_LOC'=>$productByCode[0]["PRICE_PER_LOC"]));

      if(!empty($_SESSION["cart_item"])) {
        if(in_array($productByCode[0]["TOURIST_SPOT_ID"],array_keys($_SESSION["cart_item"]))) {
          foreach($_SESSION["cart_item"] as $k => $v) {
              if($productByCode[0]["TOURIST_SPOT_ID"] == $k) {
                if(empty($_SESSION["cart_item"][$k]["quantity"])) {
                  $_SESSION["cart_item"][$k]["quantity"] = 0;
                }
                $_SESSION["cart_item"][$k]["quantity"] += $_POST["quantity"];
              }
          }
        } else {
          $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
        }
      } else {
        $_SESSION["cart_item"] = $itemArray;
      }
    }
  break;
  case "remove":
    if(!empty($_SESSION["cart_item"])) {
      foreach($_SESSION["cart_item"] as $k => $v) {
          if($_GET["TOURIST_SPOT_ID"] == $k)
            unset($_SESSION["cart_item"][$k]);        
          if(empty($_SESSION["cart_item"]))
            unset($_SESSION["cart_item"]);
      }
    }
  break;
  case "empty":
    unset($_SESSION["cart_item"]);
  break;  
}
}
?>

Если пользователь нажмет добавить, выбранный пункт назначения будет отображаться на левой панели.

enter image description here

Это мой код того, как я отображаю выбранное место назначения на левой панели и передаю параметры в URL.

<div class="ui teal segment">
          <?php
          if(isset($_SESSION["cart_item"])){
          $total_quantity = 0;
          ?>
           <div class="">
            <?php   
              foreach ($_SESSION["cart_item"] as $item){
            ?>
            <div class="ui clearing segment iti-details">
             <div class="ui left floated header">
                <h2 class="ui header">
              <img class=" large image" src="resources/images/bg6.jpg">
              <div class="content">

                <div class=""><?php echo $item["TOURIST_SPOT"]; ?>
                </div>
              </div>
            </h2>
              </div>
              <div class="ui right floated header">
                <i class="ellipsis vertical icon iti-mini"></i>
              </div>
            </div>
            <div class="ui divider"></div>
            <?php
              $total_quantity += $item["quantity"];
              ?>
              <form action ="checkprice.php">
                  <input type = "text" name = "destinationID" value = "<?php echo $item["code"];?>">
                  <?php
            }
            ?>
           </div>
            <?php
            } else {
            ?>
            <div class="no-records">Your Tour Destination is Empty</div>
            <?php 
            }
            ?>       
          </div>

И это мой URL с другой страницы. В этом представлении выбранный пункт назначения отображается в URL, но не на странице.

enter image description here

Ответы [ 2 ]

1 голос
/ 13 января 2020

Функция parse_str () может быть использована для одновременного получения параметров URI. Более подробную информацию можно найти по этой ссылке . Кроме того, вышеуказанные параметры могут также напрямую назначаться переменным со следующим кодом.

<?php extract(parse_str($_GET)); ?>

, при этом вы можете напрямую проверить параметр get и вывести его значение.

Например, если URL будет is http://www.example.com/test?param1=hi&param2=hello

Вы можете напрямую напечатать значение param1 с помощью следующего кода.

<?php echo $param1; ?> 
1 голос
/ 13 января 2020

U может использовать explode (), чтобы помочь вам.

$url_array =  explode('/', $_SERVER['REQUEST_URI']) ;
$url = end($url_array);  

просто присвойте его значению, а затем взорвите массив объектов, строку, которую вы получите, вы можете использовать непосредственно в запросе.

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