PHP - 来自GET的变量正在发生变化

时间:2014-12-30 19:09:57

标签: php get

我有一个带有一些形状的svg.php文件。

<rect onclick="window.location='search.php?filter=1'" width="50" height="50">
<rect onclick="window.location='search.php?filter=2'" width="50" height="50">

的search.php

div class="container">
            <textarea class="search" id="search_id"></textarea>
                <div id="result"></div> 
          <?php include("svg.php"); ?>
</div>

//This is for a autocomplete search, took it from http://www.2my4edge.com/2013/08/autocomplete-search-using-php-mysql-and.html

<script type="text/javascript">
    $(function(){
    $(".search").keyup(function() { 
        var search_id = $(this).val();
        var dataString = 'search='+ search_id;

        if (search_id=='') {
            $.ajax({
                type: "POST",
                url: "search_database.php",
                data: dataString,
                cache: false,
                success: function(html) {
                    $("#result").html(html).hide(); }
            });
        };

        if(search_id!='') {
            $.ajax({
                type: "POST",
                url: "search_database.php",
                data: dataString,
                cache: false,
                success: function(html) {
                    $("#result").html(html).show(); }
            });
        }return false;    
    });

    jQuery("#result").live("click",function(e){ 
        var $clicked = $(e.target);
        var $name = $clicked.find('.name').html();
        var decoded = $("<div/>").html($name).text();
        $('#search_id').val(decoded);
    });

    jQuery(document).live("click", function(e) { 
        var $clicked = $(e.target);
        if (! $clicked.hasClass("search")){
            jQuery("#result").fadeOut(); 
        }
    });
    $('#search_id').click(function(){
        jQuery("#result").fadeIn();
    });
});

</script> 

Then a search_database.php

    $search = isset($_GET['filter']) ? $_GET["filter"] : 1;

    echo $search; //echos "2". 

    if ($search=="1") {
        echo $search; //enters if, and it's not supposed to, and echos "1"
        Select * from table;
    }

Search_database.php

$search = isset($_GET['filter']) ? $_GET["filter"] : "1";

echo $search //echos "2";

if ($search=="1") {

    $q = $_POST['search'];
    $q_length = strlen($q);

    $sql = <<<SQL
    SELECT * FROM table
    LIMIT 6

SQL;

if(!$result = $con->query($sql)){
    die('There was an error running the query [' . $con->error . ']');
}

while($row = $result->fetch_array()) { ?>

<div class="show_search">
    <?php  echo $row['name'] ?> </a>
</div>
<?php } } ?>

我在search.php?filter=2并且第一个回音是正确的(“2”)但是由于某种原因它继续进入If子句和回声$ search是“1”。

我没有在其他地方定义$ search变量。谢谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你的代码有点太复杂了。

$search = isset($_GET['filter']) ? $_GET["filter"] : 1;

if($search == 1) {
    echo $search;
}

多数情况下,如果$_POST可用,您不需要检查。这并不是很有意义,因为你没有发送表格,而当你使用window.location时,你就没有发布数据。

答案 1 :(得分:0)

如果以下两行之间没有其他代码:

 echo $search; //echos "2".

AND

 if ($_POST AND $search=="1") { ... }

然后,它不可能进入if条件。只有当if条件与if($_POST AND $search=1)类似时才有可能。检查,在比较=变量时,您是单==还是双$search


如果中间有一些PHP代码,请告诉我们,无论它是什么,以便我们可以帮助您。