【问题标题】:pagination variable and other variables are conflict in php分页变量和其他变量在php中冲突
【发布时间】:2015-04-22 14:51:42
【问题描述】:

在我的在线购物项目管理面板中,我正在展示一个产品,它的代码是这样的。

<!DOCTYPE html>
<html>
 <head>
<title></title>
</head>
<body>
<center>
<?php
include('config.php');
$query=mysql_query("select * from product_tbl");
    $totalrows=mysql_num_rows($query);
    if(isset($_REQUEST['page']))
    {
        $page=$_REQUEST['page'];
        echo "page=$page";
        $page=$page*10;
        $pagquery=mysql_query("select * from product_tbl limit $page,10");
    }         
    else
    {
        $page=0;
    $pagquery=mysql_query("select * from product_tbl limit 0,10");
    }
    echo "Product Table";
echo "<table border=1 width=100%>";
echo "<tr><th>";
echo "Prod ID";
echo "</th><th>";
echo "Cat ID";
echo "</th><th>";
echo "Com ID";
echo "</th><th>";
echo "Product Name";
echo "</th><th>";
echo "Product Price";
echo "</th><th>";
echo "Product Discount";
echo "</th><th>";
echo "Product Desc";
echo "</th><th>";
echo "Product Image";
echo "</th><th>";
echo "Status";
echo "</th></tr>";
    while($r=mysql_fetch_array($pagquery))
    {
       if($r['prod_status'] == 0) {
        //$sqlup="UPDATE product_tbl set prod_status=!prod_status where prod_id='".$r['prod_id']."'";
        $im='<a href="product.php?false='.$r["prod_id"].'"><img src="images/red.jpg" height="28" width="28"></a>';
    }
    else{
        $im='<a href="product.php?true='.$r["prod_id"].'"><img src="images/green.jpg" height="30" width="30"></a>';
    }
    if (isset($_REQUEST['false'])) {
        $updt=mysql_query("update product_tbl set prod_status=1 where prod_id='".$_REQUEST['false']."'");
        header('location:product.php?page='.$page);
    }
    if (isset($_REQUEST['true'])) {
        $updt=mysql_query("update product_tbl set prod_status=0 where prod_id='".$_REQUEST['true']."'");
        header('location:product.php?page='.$page);
    }
    echo "<tr><td><center>".$r['prod_id']."</center></td><td><center>".$r['cat_id']."</center></td><td><center>".$r['com_id']."</center></td><td><center>".$r['prod_name']."</center></td><td><center>".$r['prod_price']."</center></td><td><center>".$r['prod_discount']."</center></td><td><center>".$r['prod_desc']."</center></td><td><center><img src=".$r['prod_img']." height=100 width=100></center></td><td><center>".$im."</center></td></tr>";
    }
    $page=0;
    echo "<tr colspan=3>";
    for($i=0;$i<=$totalrows;$i+=10)
    {
        echo "<a href=product.php?page=".$page++.">  ".$page."</a>";

    }
    echo "</table>";
    echo "<br/>";
 ?>
 <br><br>
    <a href="backup_insert_prod.php"><input type="submit" value="Insert"></a>
    <a href="update_prod.php"><input type="submit" value="Update"></a>
    <a href="delete_prod.php"><input type="submit" value="Delete"></a>
</center>
</body>
</html>

这个代码在浏览器中显示是这样的

所有数据都来自数据库 MYSQL.in 状态列,我正在为状态打开(1)显示绿色按钮,为状态关闭(0)显示红色按钮,它位于图像标签中。 如果我点击绿色按钮,它将变为红色按钮并将状态更改为数据库中的关闭(0),反之亦然......

我的问题是,当我不在第 1 页并单击按钮时,它将更改该产品数据库中的图像和状态,但是分页出现在第一页或说 page=0。它发生在所有页面而不是第 1 页。我想留在同一页上。请提出您的建议。任何帮助将不胜感激。

【问题讨论】:

    标签: php mysql pagination


    【解决方案1】:

    您需要更新这些按钮的链接,以便它们在 URL 中包含当前的 page 参数。

    注意:请考虑定义一个新变量(具有更相关的名称)来保存页面值的 x10 结果。

    所以不要有:

    $page=$_REQUEST['page'];
    echo "page=$page";
    $page=$page*10;
    

    你会:

    $page=$_REQUEST['page'];
    echo "page=$page";
    $start=$page*10;
    

    当然,您必须更新您的查询(只需替换变量)。

    之后,您可以简单地执行以下操作:

    替换:

       if($r['prod_status'] == 0) {
        //$sqlup="UPDATE product_tbl set prod_status=!prod_status where prod_id='".$r['prod_id']."'";
        $im='<a href="product.php?false='.$r["prod_id"].'"><img src="images/red.jpg" height="28" width="28"></a>';
    }
    else{
        $im='<a href="product.php?true='.$r["prod_id"].'"><img src="images/green.jpg" height="30" width="30"></a>';
    }
    

    与:

    if($r['prod_status'] == 0) {
        //$sqlup="UPDATE product_tbl set prod_status=!prod_status where prod_id='".$r['prod_id']."'";
        $im='<a href="product.php?false='.$r["prod_id"].'&page='.$page.'"><img src="images/red.jpg" height="28" width="28"></a>';
    }  else{
        $im='<a href="product.php?true='.$r["prod_id"].'&page='.$page.'"><img src="images/green.jpg" height="30" width="30"></a>';
    }
    

    如果您不想像我上面提到的那样更改变量的名称(“notice:”),您可以简单地写&amp;page='.($page/10).'。但是,这是一种不好的做法,不推荐。

    它在第一页工作的原因是因为您有以下情况:

    if(isset($_REQUEST['page']))
    

    因此,如果未设置 page 参数 - 您在代码中将其设置为 0(第一页)。

    【讨论】:

    • 当我在 page=3 时会发生这种变化,如果我单击按钮,它将转到 page=30...对于 page=2,它将转到 page=20...。页面乘以 10 或其他...请给我更多帮助。
    • 我错过了那行:$page=$page*10;。我不得不说使用page 变量来保存该值是一种不好的做法(语义原因)。我建议为此使用另一个变量名,例如:$limit。简短的解决方案是将&amp;page='.$page.' 替换为&amp;page='.($page/10).'
    • 我不得不将它替换为 if (isset($_REQUEST['false'])) 和 if (isset($_REQUEST['true']))....现在我明白了。 ...感谢您的帮助...
    • 但是,$start=$page*10;分页为第 1 页选择 1 到 10 行...然后为第 2 页选择 2 到 11,为第 3 页选择 3 到 12 等等...
    • 您必须相应地更改所有代码,否则 - 正如您所提到的,您会遇到一些奇怪的情况。
    最近更新 更多