использование переменной сеанса с переменной URL в SQL

У меня есть страница PHP, которая показывает таблицу данных из таблицы базы данных (запросы). Я хочу использовать переменную Session для отображения всех данных о человеке, который вошел в систему (член). Эта переменная сеанса использует первичный ключ пользователя (members_id). Таким образом, в этот момент, когда пользователь открывает веб-страницу, он видит все соответствующие данные (запросы).

Таблица данных (запросов) имеет столбец, в котором указано «Статус» «Запрос», который является «Активным» или «Закрытым». Я хочу использовать этот столбец для фильтрации данных, и когда пользователь нажимает 1 из 2 ссылок в верхней части страницы, которые выбирают «Активный» или «Закрытый», он отображает соответствующие данные по своему выбору. («Только активные запросы» или «Только закрытые запросы».

Я думал, что мог бы использовать переменную URL с переменной Session, используя оператор OR для достижения этой цели, но я не могу заставить ее работать.

Поэтому, чтобы уточнить, когда пользователь впервые открывает страницу, отображаются все его данные, но когда они выбирают либо «активную ссылку», либо «закрытую ссылку», они видят только соответствующие данные по своему выбору.

У меня нет опыта работы с 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);
?>

Надеюсь, кто-то может помочь! Благодарю.

2

Решение

Что вам нужно, это что-то вроде следующего запроса:

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

В котором $ memberId — это идентификатор, который вы получили из сеанса, а $ 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

Другие решения

Что вы хотите сделать, когда пользователь впервые приходит?

И следующее: если вы хотите фильтровать данные по активному неактивному состоянию, используйте условие «И» вместо «ИЛИ».

$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"));
-1

По вопросам рекламы [email protected]