2

データベース テーブル (問い合わせ) からのデータのテーブルを表示する PHP ページがあります。セッション変数を使用して、ログインしているユーザー ( The Member ) のすべてのデータを表示したいと考えています。このセッション変数は、ユーザーの主キー ( members_id ) を使用します。したがって、この時点でユーザーが Web ページを開くと、そこにあるすべての関連データ ( Inquiry ) が表示されます。

データの表 (照会) には、「アクティブ」または「クローズ」のいずれかである「照会」の「状況」を示す列があります。この列を使用してデータをフィルタリングしたいと考えています。ユーザーがページの上部にある 2 つのリンクのうちの 1 つをクリックすると、[アクティブ] または [クローズ] の選択肢が表示され、選択した関連データが表示されます。(「アクティブな問い合わせのみ」または「終了した問い合わせのみ」のいずれか。

OR 演算子を使用して URL 変数と Session 変数を使用してこれを実現できると考えましたが、機能させることができません。

明確にするために、ユーザーが最初にページを開くと、すべてのデータが表示されますが、「アクティブなリンク」または「閉じたリンク」のいずれかを選択すると、選択した関連データのみが表示されます。

私は 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

初めてのユーザーが来たときに何をしたいですか?

そして次のことは、アクティブ/非アクティブでデータをフィルタリングしたい場合は、「OR」の代わりに「AND」条件を使用することです。

$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 に答える