如何获取MySQL查询并保留在PHP分页中?

凯尔·埃里克森(Kyle Erickson)

我试图根据我使用的查询来保持分页,但是我的问题是,它只能在分页的第一页上工作,然后查询恢复为不带过滤器的标准页面(第一页显示了我的过滤器,但是第二页显示所有结果)。我想知道是否有一种有效的方法可以在单击页面时继续执行经过过滤的查询,但现在我对如何完成此操作感到茫然。这是我目前的代码:

<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">

<style type="text/css">

#win-range, #gaa-range, #sv-range{
width: 160px;
font-size: 10px;
margin: 0 auto;     
}
#win-range a, #gaa-range a, #sv-range a{
margin-top: 0px !important;
padding: 0 !important;
}
</style>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

<script>
$(function(){

$("#win-range").slider({
range: true,
min: 1,
max: 1000,
values: [1, 1000],
slide: function(event, ui) {
    // in order to pass the user selected values to your app, we will use jQuery to prepopulate certain hidden form elements, then grab those values from the $_POST
    $("#minwins").val(ui.values[0]);
    $("#maxwins").val(ui.values[1]);
    $("#winamount").val(ui.values[0] + " - " + ui.values[1]);
}
});
$("#winamount").val($("#win-range").slider("values", 0) + " - " + $("#win-range").slider("values", 1));

});
$(function(){

$("#gaa-range").slider({
range: true,
min: 0,
max: 10,
values: [0, 10],
slide: function(event, ui) {
    // in order to pass the user selected values to your app, we will use jQuery to prepopulate certain hidden form elements, then grab those values from the $_POST
    $("#mingaa").val(ui.values[0]);
    $("#maxgaa").val(ui.values[1]);
    $("#gaaamount").val(ui.values[0] + " - " + ui.values[1]);
}
});
$("#gaaamount").val($("#gaa-range").slider("values", 0) + " - " + $("#gaa-range").slider("values", 1));

});
$(function(){

$("#sv-range").slider({
range: true,
min: 750,
max: 1000,
values: [750, 1000],
slide: function(event, ui) {
    // in order to pass the user selected values to your app, we will use jQuery to prepopulate certain hidden form elements, then grab those values from the $_POST
    $("#minsv").val(ui.values[0]);
    $("#maxsv").val(ui.values[1]);
    $("#svamount").val(ui.values[0] + " - " + ui.values[1]);
}
});
$("#svamount").val($("#sv-range").slider("values", 0) + " - " + $("#sv-range").slider("values", 1));

});
</script>

<?php 
include("includes/header.php");
include("includes/mysqli_connect.php");

$minwins = $_POST['minwins'];
$maxwins = $_POST['maxwins'];
$mingaa = $_POST['mingaa'];
$maxgaa = $_POST['maxgaa'];
$minsv = $_POST['minsv'];
$maxsv = $_POST['maxsv'];
$querySelection = $_POST['q'];
// FILTERING YOUR DB
$sortstats = $_GET['sortstats'];
$sortstatslow = $_GET['sortstatslow'];
// pagination
    $getcount = mysqli_query ($con,"SELECT COUNT(*) FROM Player");
    $postnum = mysqli_result($getcount,0);// this needs a fix for MySQLi upgrade; see custom function below
    $limit = 6; //how many blog posts per page you will see.
    if($postnum > $limit){
    $tagend = round($postnum % $limit,0);
    $splits = round(($postnum - $tagend)/$limit,0);

    if($tagend == 0){
    $num_pages = $splits;
    }else{
    $num_pages = $splits + 1;
    }

    if(isset($_GET['pg'])){
    $pg = $_GET['pg'];
    }else{
    $pg = 1;
    }
    $startpos = ($pg*$limit)-$limit;
    $limstring = "LIMIT $startpos,$limit";
    }else{
    $limstring = "LIMIT 0,$limit";
    }

    // MySQLi upgrade: we need this for mysql_result() equivalent
    function mysqli_result($res, $row, $field=0) { 
        $res->data_seek($row); 
        $datarow = $res->fetch_array(); 
        return $datarow[$field]; 
    }


?>
<div class="listingcontainer">
<div class="sidebar">
    <h3>Sort By:</h3>
    <a href="listings.php?sortstats=Wins">Most Wins</a>
    <a href="listings.php?sortstatslow=GAA">Best Goals Against</a>
    <a href="listings.php?sortstats=SavePerc">Best Save %</a>
    <hr/>
    <h3>Custom Filter</h3>
    <br/>
    <div class="custom-filter">
        <form name="filters" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" id="filters">
            <label for="winamount">Win Range:</label>
            <input type="text" id="winamount" />
            <div style="clear:both;"></div>
            <input type="hidden" id="minwins" name="minwins" value="0" />
            <input type="hidden" id="maxwins" name="maxwins" value="1000" />
           <div id="win-range"></div>
           <br/>
           <label for="gaaamount">GAA:</label>
            <input type="text" id="gaaamount" /><br />
            <div style="clear:both;"></div>
            <input type="hidden" id="mingaa" name="mingaa" value="0" />
            <input type="hidden" id="maxgaa" name="maxgaa" value="10" />
           <div id="gaa-range"></div>
            <br/>
           <label for="svamount">SV %:</label>
            <input type="text" id="svamount" /><br />
            <div style="clear:both;"></div>
            <input type="hidden" id="minsv" name="minsv" value="750" />
            <input type="hidden" id="maxsv" name="maxsv" value="1000" />
           <div id="sv-range"></div>
            <input type="submit" name="submit" id="submit"/>
        </form>
    </div>
</div>
<div class="main-listings">
<h1>Current NHL Goaltenders</h1>
<?php 

    $result = mysqli_query($con, "SELECT * FROM Player ORDER BY PlayerID ASC $limstring");

    if(isset($sortstats)) {
        $result = mysqli_query($con,"SELECT * FROM Player ORDER BY $sortstats DESC $limstring ") or die (mysql_error());
    }
    if(isset($sortstatslow)) {
        $result = mysqli_query($con,"SELECT * FROM Player ORDER BY $sortstatslow ASC $limstring ") or die (mysql_error());
    }
    if(isset($_POST['submit']))
    {
        $result = mysqli_query($con, "SELECT * FROM Player WHERE Wins BETWEEN '$minwins' AND '$maxwins' AND
                                                    GAA BETWEEN '$mingaa' AND '$maxgaa' AND  SavePerc BETWEEN '$minsv' AND '$maxsv'
                                                    ORDER BY PlayerID ASC $limstring") or die (mysql_error());
    }

    while($row = mysqli_fetch_array($result)){
        $name = $row['LastName'] . ", " . $row['FirstName'];
        $wins = $row['Wins'];
        $pid = $row['PlayerID'];
        $image = $row['Picture'];
        $gaa = $row['GAA'];
        $sv = $row['SavePerc'];
        echo "<div class=\"player-listing\">";
        echo "<div class=\"image-holder\">";
        echo "<span class=\"helper\"></span>";
        echo "<a href=\"viewplayer.php?playerId=$pid\"><img src=\"admin/thumbs/$image\" alt=\"$name\"></a>";
        echo "</div>";
        echo "<div style=\"clear:both;\"></div>";
        echo "<a href=\"viewplayer.php?playerId=$pid\">$name</a>";
        echo "<table align=\"center\">";
        echo "<tr>";
        echo "<td style=\"border-bottom: 1px solid #212121;\">Wins</td>";
        echo "<td style=\"border-bottom: 1px solid #212121;\">GAA</td>";
        echo "<td style=\"border-bottom: 1px solid #212121;\">SV%</td>";
        echo "</tr>";
        echo "<tr>";
        echo "<td>$wins</td>";
        echo "<td>$gaa</td>";
        echo "<td>.$sv</td>";
        echo "</tr>";
        echo "</table>";
        echo "</div>";
    }

    // paging links:
    echo "<div class=\"paging\">";
    if($postnum > $limit){
        echo "<span class=\"page-numbers\"><strong>Pages:</strong> &nbsp;&nbsp;&nbsp;</span>";
        $n = $pg + 1;
        $p = $pg - 1;
        $thisroot = $_SERVER['PHP_SELF'];
        if($pg > 1){
            echo "<a href=\"$thisroot?pg=$p\"><< prev</a>&nbsp;&nbsp;";
        }
        for($i=1; $i<=$num_pages; $i++){
            if($i!= $pg){
                echo "<a href=\"$thisroot?pg=$i\">$i</a>&nbsp;&nbsp;";
            }else{
                echo "$i&nbsp;&nbsp;";
            }
        }
        if($pg < $num_pages){
            // INSERT QUERY STRING VARIBLE TO CARRY OVER DB QUERY
            echo "<a href=\"$thisroot?pg=$n\">next >></a>";
        }
        echo "&nbsp;&nbsp;";
    }
    // end paging
    echo "</div>";
?>
</div>
<div style="clear:both;"></div>

萨钦

将您的搜索过滤器保存在会话中,并始终检查是否为任何搜索设置了会话值,并将该数据传递到您的query.until中,直到没有人重置该搜索条件,并且当用户将搜索条件重置为null时,将该值留空在该会话中的会话搜索变量中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将Firestore查询中的数字保留在变量中以备将来使用?

PHP:保留在内存中吗?或查询数据库?

如何将来自Firestore查询的数据保留在变量中?

如何从字典中获取保留在数组中的所有键

如何从其子活动中获取父活动的价值并将其保留在android中?

将查询字符串保留在Laravel中

ActiveRecord:将重复的对象保留在.where查询中

Gatsby查询保留在已编译的代码中

如何将VARCHAR保留在数据库(MYSQL)中,而将ENUM保留在sqlalchemy模型中

如何使用php将用户数据保留在不同页面中

如何改组php数组,但将索引保留在foreach中

将PHP函数保留在RAM中

会话变量是否保留在php的内存中

如何将UILabel的文本保留在safeArea中?

如何将所选数据保留在表中?

如何保留在Perl中从文件读取的数据

如何将道具数据保留在Vue中?

如何显示经过的时间而不是保留在Rhythmbox中?

如何将LI编号保留在OL中

如何将ID保留在dummyVars()中

如何使这些图像保留在“网格”中?

如何将特定节点保留在networkx中

如何将动画div保留在容器中

如何从用户输入并保留在数组列表中

如何在列中获取数据,该名称保留在python的另一列中

php中的爆炸功能,使用爆炸后如何将数据保留在文本框中?

如何在MySql中使用Join添加三行并保留在第三列中

如何删除名称并仅将tld保留在域名字符串PHP和Regex中

将用户保留在 TEdit 中