【问题标题】:how to get the $_GET url parameters from another page如何从另一个页面获取 $_GET url 参数
【发布时间】:2017-06-21 09:13:33
【问题描述】:

我有 fetch.php 和 index.php,fetch php 用于将数据库中的内容与 ajax 脚本一起动态加载到 index.php 中,我想根据搜索词过滤它加载的结果(如果存在)。

我尝试过的

$search = $_GET['searchterm'];

然后将 $search 绑定到 sql 查询,但我有两个问题:

1- 当参数在 index.php 上时,它会尝试从 fetch.php 获取 _GET 参数

2-当查询用于加载所有结果而没有任何搜索词输入时会显示错误

<?php
include("config.php"); //include config file
//sanitize post value
$page_number = filter_var($_POST["page"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH);

//throw HTTP error if page number is not valid
if(!is_numeric($page_number)){
    header('HTTP/1.1 500 Invalid page number!');
    exit();
}
//get current starting point of records
$position = (($page_number-1) * $item_per_page);

//fetch records using page position and item per page.
$results = $mysqli->prepare("SELECT name, location, score, img, id, type FROM artists "
if(isset($_GET['searchterm'])){

}
" ORDER BY score DESC LIMIT ?, ?");

//bind parameters for markers, where (s = string, i = integer, d = double,  b = blob)
//for more info https://www.sanwebe.com/2013/03/basic-php-mysqli-usage
$results->bind_param("ii", $position, $item_per_page);
$results->execute(); //Execute prepared Query
$results->bind_result($name, $location, $score, $img, $id, $type); //bind variables to prepared statement

//output results from database

while($results->fetch()){ //fetch values
  echo  "<div class=\"card feed_item\" style=\"width: 20rem;\"><a id=\"wraplink\" href=\"profile.php?id=". $id."\">";
  echo  "<img class=\"card-img-top feed_img\" src=\"img/" . $img . ".jpg\" alt=\"Card image cap\">";
  echo  "<div class=\"card-block\">";
  echo  "<h4 class=\"card-title\">" . $name . "</h4>";
  echo  "<p class=\"card-text\">" . $location . "</p>";
  echo  "</div><div class=\"card-footer\">";
  echo  "<small class=\"text-muted\">". $type ."</small>";
  echo  "</div>";
  echo  "</a></div>";
}
?>

下面是index.php

<?php
// including the config file
include('config.php');
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Setch</title>
<script
  src="https://code.jquery.com/jquery-3.2.1.min.js"
  integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
  crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
<div id="wrappy">

  <!-- navbar -->
  <nav class="navbar navbar-toggleable-sm navbar-light bg-faded">
  <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation">
  <span class="navbar-toggler-icon"></span>
  </button>
  <a class="navbar-brand" id="logo" href="index.php">Setch</a>
  <div class="collapse navbar-collapse" id="navbarTogglerDemo02">
  <ul class="navbar-nav mr-auto mt-2 mt-md-0">
    <li class="nav-item active">
      <a class="nav-link" href="#">Add Artist <span class="sr-only">(current)</span></a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="#">Feedback</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="#">About</a>
    </li>
  </ul>
  <form class="form-inline my-2 my-lg-0 input-group" action="search.php" method="get">
    <input class="form-control mr-sm-2" type="text" name="searchterm" placeholder="Search" id="search">
    <button class="btn btn-outline-success my-2 my-sm-0" type="submit" name="search">Search</button>
  </form>
  <div id="back_result"></div>
  </div>
  </nav>
<div class="container">
<!-- buttons -->
<br>
<div class="row justify-content-md-center">
  <div class="col col-lg-3 justify-content-md-center"><button id="ph" type="button" class="btn btn-secondary btn-lg">Photographers</button></div>
  <div class="col col-lg-3 justify-content-md-center"><button id="mk" type="button" class="btn btn-secondary btn-lg">Makeup Artists</button></div>
</div></div>

<!-- cards -->
<div id="feed">

<!-- artists are here -->
</div>
<!-- content -->
<div class="loading"><img src="img/load.gif" />
</div><!-- container -->
</div>
<script src="js/script.js"> </script>
</body>
</html>

还有 script.js

var track_page = 1; //track user scroll as page number, right now page number is 1
var loading  = false; //prevents multiple loads
var fetch = 'fetch_pages.php';
load_contents(track_page); //initial content load

$(window).scroll(function() { //detect page scroll
    if($(window).scrollTop() + $(window).height() >= $(document).height()) { //if user scrolled to bottom of the page
        track_page++; //page number increment
        load_contents(track_page); //load content
    }
});
//Ajax load function
function load_contents(track_page){
    if(loading == false){
        loading = true;  //set loading flag on
        $('.loading').show(); //show loading animation
        $.post( fetch, {'page': track_page}, function(data){
            loading = false; //set loading flag off once the content is loaded
            if(data.trim().length == 0){
                //notify user if nothing to load
                $('.loading').html("");
                return;
            }
            $('.loading').hide(); //hide loading animation once data is received
            $("#feed").append(data); //append data into #results element

        }).fail(function(xhr, ajaxOptions, thrownError) { //any errors?
            alert(thrownError); //alert with HTTP error
        })
    }
}

【问题讨论】:

  • 能否也添加index.php代码。
  • 以上代码代表 index.php 还是 fetch.php ?并且查询之间有if条件,请检查。
  • "fetch php 用于将数据库中的内容动态加载到 index.php" - 我无法从中提取任何含义。我感觉您通过 AJAX 加载 fetch.php 并希望将 GET 参数传输到 AJAX 调用,但没有 JavaScript 标记或 JavaScript 代码(但有 MySQL 代码),所以我可能错了。旁注:"&lt;small class=\"text-muted\"&gt;". $type ."&lt;/small&gt;"; 让我的眼睛流血了。为什么你使用双引号字符串(因此需要转义每个引号)而不使用变量插值?
  • 要添加script.js吗?
  • 现在添加了 script.js

标签: php mysql


【解决方案1】:

$_GET 是一个“超全局”,无论您从何处访问它,它都应该返回相同的结果,除非您在此过程中的某处擦除它的内容。

http://php.net/manual/en/language.variables.superglobals.php

PHP 中的几个预定义变量是“超全局变量”,这意味着 它们在整个脚本的所有范围内都可用。没有必要 做全局$变量;在函数或方法中访问它们。

这些超全局变量是:

$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV

【讨论】:

    【解决方案2】:

    PHP$_GET 可用于在使用 method="get" 提交 HTML 表单后收集表单数据。

    $_GET可以收集URL中发送的数据。

    假设 URL 有类似 http://example.com/?searchterm=Hello 的内容。

    那么你就可以通过$search = $_GET['searchterm'];访问了。

    【讨论】:

    • 如果我想访问另一个页面的搜索词怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多