0

次のようなPHPを含むページがあります。

<table>
    <thead>
        <tr>
            <th class="wheniwant">Date</th>
            <th class="wheniwant">Income Amount</th>
            <th class="wheniwant">Expense Amount</th>
        </tr>
    </thead>

    <?php
    //DB CONNECTION

    $varDatePaid = ""; $varIncomePaid =""; $varExpensePaid = "";

    $sql = mysql_query( 
        "
            SELECT DATE_FORMAT(`date_paid`, '%Y-%m') `date_paid`,
            SUM(CASE WHEN `categoryType` = 'Income' THEN `amount_paid` END) `IncomeAmount`,
            SUM(CASE WHEN `categoryType` = 'Expense' THEN `amount_paid` END) `ExpenseAmount`
            FROM `accounting`
            GROUP BY DATE_FORMAT(`date_paid`, '%Y-%m')
        "
     );


    while($row = mysql_fetch_array($sql))
        {
            $varDatePaid = $row['date_paid'];
            $varIncomePaid = $row['IncomeAmount'];
            $varExpensePaid = $row['ExpenseAmount'];                        
    ?>


    <tr>
        <td><?php echo $varDatePaid; ?></td>
        <td><?php echo $varIncomePaid; ?></td>
        <td><?php echo $varExpensePaid; ?></td>
        </tr>

    <?php   

        }
    ?>
</table>

これは、次のようなテーブルを返します。

スクリーンショット

私は何かを追加したい:

$sql_query = "SELECT id, DATE_FORMAT(`date_paid`, '%Y') AS year FROM accounting GROUP BY year ORDER BY year DESC";


$result = mysql_query($sql_query) or die(mysql_error());
while ($row = mysql_fetch_array($result)){
echo '<option value='. $row['year'] . '>'. $row['year'] . '</option>';

結果を特定の年に限定するための何らかのフィルターを作成します。ページを離れずにこれを行うにはどうすればよいですか?

4

1 に答える 1

0

わかりましたので、ここで AJAX について読みたいと思うでしょう。それほど難しいことではなく、ほとんどの場合、そのサイトからすぐにコードをコピーできます。あるいは、持っているデータの量に応じて、何か新しいことを学びたくない場合は、ページの読み込み時にデータセット全体を読み込み、JS を使用して、フォームに入力したら必要な部分だけを選択することができます。AJAXルートをお勧めします。

他の誰かが、可能だと思う外部 PHP スクリプトについて言及しましたが、それがどのように機能するかはわかりません。最初のページで JS を使用して、必要な内容を示す Cookie を作成する必要があると仮定します。次に、新しいタブまたはウィンドウを開いてクエリを実行し、値を Cookie またはセッション変数として保存してから、JS を使用します。クエリが完了したらそのウィンドウを閉じ、再度 JS を使用してクエリの結果をページに戻します。それはうまくいくと思いますが、これを行う最も効率的な方法ではないようです。

于 2012-09-28T00:00:27.890 に答える