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

2 に答える 2

0

最初に html でドロップダウンを定義し、選択した値が変更されたときにそれを送信します。

<form id="myForm" action="samePage.php" method="post">
<select id="mySelection" name="mySelection" onChange="$('#myForm').submit();">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>
</form>

そして、php のクエリを変更して、選択した値でフィルタリングします。

$sql = mysql_query(  
                      "
                      SELECT *
                      FROM TableName
                      where ColumnName like '%" . mysql_real_escape_string($_POST['mySelection']) . "%'
              ORDER BY something ASC
                      "
                     );

私はコードをテストしませんでしたが、ここからアイデアを得る必要があります。そして、$('#myForm').submit()スクリプトに jquery を使用すると仮定しました。

于 2012-09-27T16:15:56.417 に答える
0

十分な情報を提供していないか、試したことはありません。

<select>$_POST を介して PHP で値を取得し、これらを「WHERE」ステートメントで SQL に入力できるように、一意の ID を持つボックスを含む HTML フォームが必要になります。

例えば

<form action="script.php" method="post">
    <select id="filter">
        <option value="value1">Value 1</option>
        <option value="value2">Value 2</option>
        <option value="value3">Value 3</option>
   </select>
   <input type="submit" value="Filter">
</form>

script.php で:

<?php
 // DB connect
 $filter = $_POST['filter'];
 $query = "
                  SELECT *
                  FROM TableName
          WHERE field_to_filter = '$filter'
          ORDER BY something ASC
                  "
 //etc
 ?>

注意してください、これは私の頭の上からの非常に簡単な例です。正確に何をしようとしているのかによって、大きく異なります。さらに、これは、フォームからのユーザー入力を受け入れて SQL に渡す際のセキュリティの問題を考慮していません。

script.php が現在のページである場合、送信ボタンを押すと、現在のフィルターでページが更新されます。選択ボックスで以前の選択がアクティブになっていることを確認するなど、さらにいくつかのコードが必要になります。ページを更新したくない場合は、jQuery のようなものが必要になり、以前に使用したことがなければ、別のレベルの複雑さが追加されます。

于 2012-09-27T16:08:16.077 に答える