$ _GET分页丢失

时间:2019-04-17 16:29:36

标签: php

我有2个文件,第一个: 给我产品列表

第二个: -与产品有关的信息,因此作为信息页面

在第一个文件中,我实现了一个<a>标签,以重定向到第二个文件

和变量:$id_evidenza = $row_ListaEvidenze['ID_evidenza'];

<a href="edit_evidenza.php?id=<?php echo $id_evidenza; ?>&te=<?php echo $_GET['te']; ?>" title="Modifica">
    <strong><?php echo outputDecode($row_ListaEvidenze['cod_evidenza']); ?></strong> 
</a

进行选择查询,并获取我的变量:

$myid_processo = "-1";
if (isset($_GET['id'])) {
  $myid_processo = $_GET['id'];
}

//42320819($database_riskmanagement,$riskmanagement);
$query_processo = sprintf("SELECT * FROM tev_Evidenze WHERE tev_Evidenze.id_struttura = ".$id_str." AND tev_Evidenze.ID_evidenza = %s", GetSQLValueString($myid_processo, "int"));
$processo = mysqli_query($riskmanagement, $query_processo) or die(mysqli_error($riskmanagement));
createLog($_COOKIE['cod_operatore'], $query_processo);

$row_processo = mysqli_fetch_assoc($processo);
$totalRows_processo = mysqli_num_rows($processo);

使用do / while循环,我在屏幕上显示结果,没关系。

现在问题开始了,因为他们现在要求我从产品列表页面中的产品信息页面中实施导航系统,这将使我有可能进入产品A,来回移动我可以浏览其他产品,而无需浏览产品列表页面,因此我通过实现以下导航系统来做到这一点:

if($_GET['te']==""){
    $sel_tipo_acc = " (ev.id_tipo_accreditamento = 0)";
}else{
    $sel_tipo_acc = " (ev.id_tipo_accreditamento = ".$_GET['te'].")";
}
$my_ric_att = searchControl(trim($_GET['ric_att']));
$txt_ric = "";
$txt_ric = "Risultati per ";
$r_sql = "SELECT * FROM tev_Evidenze AS ev LEFT JOIN tev_Fatt_crit AS fc 
          ON fc.ID_fatt_crit = ev.id_fatt_crit 
          WHERE ev.id_struttura = ".$_SESSION['str']." AND ".$sel_tipo_acc." AND ";

        if ($_GET['facr'] != ""){
            $r_sql .=  " fc.ID_fatt_crit = ".$_GET['facr']." AND ";
        }

$r_sql .= " ((ev.cod_evidenza LIKE '%" .$my_ric_att. "%') OR (ev.desc_evidenza LIKE '%" .$my_ric_att. "%')) ";
$txt_ric .= trim($_GET['ric_att']) ;
$r_sql .= " ORDER BY fc.ordine_fatt_crit, ev.cod_evidenza, ev.ordine_evidenza";
$txt_ric .= "<br>";

if($_GET['v']=="all"){
    $paginazione = 1;   
}else{
    $paginazione = 1;
}

$maxRows_ListaEvidenze = $paginazione;
$pageNum_ListaEvidenze = 0;
if (isset($_GET['pageNum_ListaEvidenze'])) {
  $pageNum_ListaEvidenze = $_GET['pageNum_ListaEvidenze'];
}
$startRow_ListaEvidenze = $pageNum_ListaEvidenze * $maxRows_ListaEvidenze;

//42320819($database_riskmanagement, $riskmanagement);
$query_ListaEvidenze = $r_sql;
$query_limit_ListaEvidenze = sprintf("%s LIMIT %d, %d", $query_ListaEvidenze, $startRow_ListaEvidenze, $maxRows_ListaEvidenze);
$ListaEvidenze = mysqli_query($riskmanagement, $query_limit_ListaEvidenze) or die(mysqli_error($riskmanagement));
createLog($_COOKIE['cod_operatore'], $v_sql);

$row_processo = mysqli_fetch_assoc($ListaEvidenze);

if (isset($_GET['totalRows_ListaEvidenze'])) {
  $totalRows_ListaEvidenze = $_GET['totalRows_ListaEvidenze'];
} else {
  $all_ListaEvidenze = mysqli_query($riskmanagement, $query_ListaEvidenze);
  $totalRows_ListaEvidenze = mysqli_num_rows($all_ListaEvidenze);
}
$totalPages_ListaEvidenze = ceil($totalRows_ListaEvidenze/$maxRows_ListaEvidenze)-1;

$queryString_ListaEvidenze = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_ListaEvidenze") == false && 
        stristr($param, "totalRows_ListaEvidenze") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_ListaEvidenze = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_ListaEvidenze = sprintf("&totalRows_ListaEvidenze=%d%s", $totalRows_ListaEvidenze, $queryString_ListaEvidenze);

我的网址中有问题,我无法在$ _GET中获得所有必需的参数,也就是说,例如,如果我从产品A转到产品B,则会得到此信息:

pageNum_ListaEvidenze=5&totalRows_ListaEvidenze=76&id=340&te=5

pageNum_ListaEvidenze=6&totalRows_ListaEvidenze=76&id=340&te=5

唯一改变的是后面的数字:pageNum_ListaEvidenze=

显示另一条记录,但是ID总是在第一条记录处停止,我在之前发布的这段代码中遇到了这个问题:

if (isset($_GET['pageNum_ListaEvidenze'])) {
  $pageNum_ListaEvidenze = $_GET['pageNum_ListaEvidenze'];
}

如何使所有内容在网址中动态显示?

1 个答案:

答案 0 :(得分:0)

我真的很了解您的问题,但是这里有一个更好的解决方案,可以使生活变得轻松。

让我们假设当前您在显示产品信息的信息页面(如您所描述的页面B)上。

要刷下一个产品或上一个产品,您可以尝试执行以下操作:

通常,在信息页面中,您可以获取当前产品的ID

$currentProductID = $_GET['id'];

想创建一个为您提供下一个产品ID的方法,查询应类似于:

SELECT id FROM `product` WHERE `id` > $currentProductID limit 1

这将返回下一个产品的ID,然后使用php重定向或通过单击标记等返回具有该ID的B页面。

  

要对先前的产品执行此操作,只需逆转上面的查询   与<。

希望对您有帮助。