我有一个PHP页面,显示数据库表(查询)中的数据表。我想使用Session变量来显示登录人员(会员)的所有数据。此会话变量使用用户主键(members_id)。因此,此时当用户打开网页时,他们会看到所有相关数据(查询)
数据表(查询)有一列给出“查询”的“状态”,该状态为“有效”或“已关闭”。我想使用此列来过滤数据,当用户点击页面顶部的2个链接中的1个链接时,可选择“活动”或“关闭”,它会显示相应的数据。 (“仅限主动查询”或“仅限查询”。
我以为我可以使用带有Session变量的URL变量来使用OR运算符来实现这一点,但我无法让它工作。
因此,对于Clarify,当用户首次打开页面时,会显示所有数据,但当他们选择“Active Link”或“Closed Link”时,他们只会看到他们选择的相关数据。
我没有在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);
?>
希望有人可以帮忙!感谢。
答案 0 :(得分: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
?>
答案 1 :(得分:-1)
第一次使用者时你想做什么?
接下来就是如果你想通过主动非活动使用来过滤数据&#39; AND&#39;条件而不是&#39; OR&#39;。
$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"));