【问题标题】:Working with sessions使用会话
【发布时间】:2015-03-27 14:07:37
【问题描述】:

我有以下困境。我只希望一次运行一个会话,请查看以下查询:

$get_crs_mysqli .= (!empty($_SESSION['userSearch']))?(" AND (course_title like '%".$_SESSION['userSearch']."%') OR (course_title like '%" . $_SESSION['userCategory'] . "%')  ") : '';

//getting the providers
function getProviders(){

            if(isset($_GET['user_query']))
    {
                  $search_query = $_GET['user_query'];
    global $con;
    $get_providers = "select DISTINCT course_provider from courses where (course_title like '%$search_query%' ) AND course_date1 >= CURRENT_DATE() LIMIT 5";
    $run_providers = mysqli_query($con, $get_providers);

    while ($row_providers=mysqli_fetch_array($run_providers)){
        $provider_title = $row_providers['course_provider'];

        $numberIncrease = 0;

echo '<a href="" id="liSpacing"><label id="labelSearch"><input class="filter" name="provider' . ++$numberIncrease . '" type="checkbox" value="' . $provider_title . '">&nbsp;' . $provider_title . '</label></a> <br />';

}

    }

     else if(isset( $_GET['crs_category']))
    {
                  $search_query2 = $_GET['crs_category'];

    global $con;
    $get_providers = "select DISTINCT course_provider from courses where (course_title like '%$search_query2%' ) AND course_date1 >= CURRENT_DATE() LIMIT 5";
    $run_providers = mysqli_query($con, $get_providers);

    while ($row_providers=mysqli_fetch_array($run_providers)){
        $provider_title = $row_providers['course_provider'];

        $numberIncrease = 0;
}
}
}

下面是标识会话变量的页面:

 <?php 
 if(isset($_GET['user_query']))

    {
       $search_query = $_GET['user_query'];

 $_SESSION['userSearch'] = $search_query;


  $paginationresults = mysqli_query($con,"SELECT COUNT(*) FROM courses where course_title like '%$search_query%'  AND course_date1 >= CURRENT_DATE() ORDER BY course_date1 ASC");
$get_total_rows = mysqli_fetch_array($paginationresults); //total records
$item_per_page = 10;
//break total records into pages
$pages = ceil($get_total_rows[0]/$item_per_page); 

}

if(isset($_GET['crs_category']))
    {
       $search_query_category = $_GET['crs_category'];

 $_SESSION['userCategory'] = $search_query_category;


  $paginationresults = mysqli_query($con,"SELECT COUNT(*) FROM courses where course_title like '%$search_query_category%'  AND course_date1 >= CURRENT_DATE() ORDER BY course_date1 ASC");
$get_total_rows = mysqli_fetch_array($paginationresults); //total records
$item_per_page = 10;
//break total records into pages
$pages = ceil($get_total_rows[0]/$item_per_page); 

}


?>

问题是我不能同时运行两个会话,因为我得到一个错误并且需要解决,以便它只抓取正在使用的会话。例如,如果用户搜索一个类别,它将作为 searchPage.php?crs_category 出现,如果他们搜索特定项目,它将作为 searchPage.php?user_query=html 出现,问题是因为上一个会话是仍然活跃它与搜索结果冲突。

我希望我很清楚,如果有任何澄清,请告诉我。

【问题讨论】:

  • 完全不清楚。一个用户只有一个会话。
  • 让我澄清一下,在当前状态下,两个会话被称为 userSearch 和 userCategory,我想要的是 userCategory 会话仅在 userSearch 会话尚未启动时才启动。假设 userCategory 会话开始,然后 userSearch 会话开始,userCategory 必须被销毁
  • 尝试将单个会话定义为具有两个索引的数组,这些索引用作用户正在搜索的标识符?根据那个使用会话
  • 你能帮我解决这个问题吗,这是我正在努力的部分
  • 我可以给你大致的想法。不是完整的代码,因为我不知道您的代码中有什么内容以及它是如何工作的?

标签: php mysql session search mysqli


【解决方案1】:

在分配其他会话值时需要清除之前的会话数组值。

$_SESSION['userSearch'] = $search_query;

unset($_SESSION['userCategory']);

$_SESSION['userCategory'] = $search_query_category;

unset($_SESSION['userSearch']);

【讨论】:

  • 谢谢,但我遇到的另一个问题是因为这些变量是在查询中定义的,当找不到一个时,它会给我以下错误注意:未定义的索引:$get_crs_mysqli 行中的 userCategory。 = (!empty($_SESSION['userSearch']))?(" AND (course_title like '%".$_SESSION['userSearch']."%') OR (course_title like '%" . $_SESSION['userCategory '] . "%') ") : '';
  • 它必须例如忽略它未使用的变量,因为现在它的外观例如 usercategory 但尚未设置,这是有道理的,因为我正在寻找 usersearch 但我的查询中有问题设置
猜你喜欢
  • 2014-06-27
  • 2019-10-28
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
相关资源
最近更新 更多