2

我有一个 PHP 页面,显示来自数据库表(查询)的数据表。我想使用 Session 变量来显示登录者(The Member)的所有数据。此会话变量使用用户主键 (members_id)。因此,此时当用户打开网页时,他们会看到所有相关数据(查询)

数据表(查询)有一个列给出“查询”的“状态”,它是“活动”或“关闭”。我想使用此列来过滤数据,当用户单击页面顶部的 2 个链接中的 1 个时,这些链接可以选择“活动”或“关闭”,它会显示他们选择的相关数据。(“仅限活动查询”或“仅限已结束查询”。

我以为我可以使用带有 OR 运算符的 Session 变量的 URL 变量来实现这一点,但我无法让它工作。

所以澄清一下,当用户第一次打开页面时,他们的所有数据都会显示出来,但是当他们选择“活动链接”或“关闭链接”时,他们只会看到他们选择的相关数据。

我没有精通 SQL 和 PHP,所以我使用 Dreamweaver 插件编写了很多它以及我自己的一点知识。

下面是我的代码片段,我希望它有助于展示我正在尝试做的事情!

<?php
$colname_rsEnquiriesList = "-1";
if (isset($_GET['status'])) {
$colname_rsEnquiriesList = $_GET['status'];
}
$allEnquiries_rsEnquiriesList = "-1";
if (isset($_SESSION['members_id'])) {
$allEnquiries_rsEnquiriesList = $_SESSION['members_id'];
}
mysql_select_db($database_LA, $LA);
$query_rsEnquiriesList = sprintf("SELECT * FROM enquiries WHERE status = %s OR     members_id = %s ORDER BY date_e DESC", GetSQLValueString($colname_rsEnquiriesList, "text"),GetSQLValueString($allEnquiries_rsEnquiriesList, "int"));
$rsEnquiriesList = mysql_query($query_rsEnquiriesList, $LA) or die(mysql_error());
$row_rsEnquiriesList = mysql_fetch_assoc($rsEnquiriesList);
$totalRows_rsEnquiriesList = mysql_num_rows($rsEnquiriesList);
?>

希望有人能帮忙!谢谢。

4

2 回答 2

1

您需要的是类似于以下查询的内容:

SELECT *
FROM inquiries
WHERE member_id='".$memberId."'
AND status='".$status."'
ORDER by date_e DESC;

其中 $memberId 是您从会话中检索到的 id,而 $status 包含用户所需的 $_GET 参数。

编辑:

我用你的代码做了一个小例子

<?php

// Set status
if (isset($_GET['status']) && is_numeric($_GET['status'])) {
    switch ($_GET['status']) {
        case '1':
            $status = "active";
            break;
        case '2':
            $status = 'closed';
            break;
    }
} else {
    $status = "active";
}

// Set memerId
if (isset($_SESSION['members_id'])) {
    $memberId = isset($_SESSION['members_id']) ? $_SESSION['members_id'] : 0;
}

// Connect to database
mysql_select_db($database_LA, $LA);

// Prepare query
$query = sprintf("SELECT *
FROM enquiries
WHERE status=%s
AND members_id=%s
ORDER BY date_e DESC
", GetSQLValueString($status, "text"),
GetSQLValueString($memberId, "int"));

$resource = mysql_query($query, $LA) or die(mysql_error());
$results = array();
$totalRows = mysql_num_rows($resource);
if ($totalRows > 0) {
    while ($record = mysql_fetch_assoc($resource)) {
        $results[] = $record;
    }
}

// Now $results contains all records
// You can view them using a print_r or var_dump
?>
于 2014-12-22T11:30:47.277 回答
-1

当第一次用户来的时候你想做什么?

接下来的事情是,如果您想通过活动不活动过滤数据,请使用“AND”条件而不是“OR”。

$query_rsEnquiriesList = sprintf("SELECT * FROM enquiries WHERE status = %s AND members_id = %s ORDER BY date_e DESC", GetSQLValueString($colname_rsEnquiriesList, "text"),GetSQLValueString($allEnquiries_rsEnquiriesList, "int"));
于 2014-12-22T11:30:31.410 回答