2017-12-27 8 views
0

トランザクションをキャプチャするためのmysqlテーブルがあります。私は同じテーブル内の利用可能なカテゴリに基づいて複数のphp/htmlテーブルにデータを表示しようとしています。私のテーブルのサンプルデータを以下に示します。PHP変数の値の数に基づいてmysqlクエリを複数回実行します

Date  Category  Particulars  type  Amount 
----------------------------------------------------------- 
01.12.17 Donation  Received from X Receipt  500.00 
10.12.17 Donation  Received from Y Receipt  200.00 
15.12.17 Medical Aid Paid to A  Payment  100.00 
20.12.17 Expense  Building Rent Payment  50.00 

カテゴリフィールドで使用可能な固有値に基づいて、以下のクエリで複数回動的に実行できますか。これは、単一のPHPページ内の複数のテーブルにクエリデータを設定するためです。

select * from my_table where category = 'Donation'; 
select * from my_table where category = 'Medical Aid'; 
... 
... 

と期待される結果は、カテゴリテーブル内の値の私の変化

Date  Category  Particulars  type  Amount 
----------------------------------------------------------- 
01.12.17 Donation  Received from X Receipt  500.00 
10.12.17 Donation  Received from Y Receipt  200.00 
----------------------------------------------------------- 

----------------------------------------------------------- 
Date  Category  Particulars  type  Amount 
----------------------------------------------------------- 
15.12.17 Medical Aid Paid to A  Payment  100.00 
----------------------------------------------------------- 

----------------------------------------------------------- 
Date  Category  Particulars  type  Amount 
----------------------------------------------------------- 
20.12.17 Expense  Building Rent Payment  50.00 

...以下のようなものです。私は最初のクエリの出力を別のhtmlテーブルに表示し、もう1つを別のテーブルに表示しようとしています。

+0

なぜ1つのクエリを使用せず、OR ?????? – rtfm

+0

はい、最初にカテゴリ値を取得し、1つの変数に格納し、ループ内で動的クエリを作成します。 –

答えて

-1

まず

select Category from my_table 

ストアそれarray.Than使用中のすべてのクエリを実行するためのForeach声明すべてのカテゴリリストを取得します。

2

これは、PHPアプリケーションのネットワークコールとオーバーヘッドの数を最小限に抑えるため、可能な限り少ない数のクエリを発行するように一般的に努力すべきです。私はちょうどcategoryORDER BY句を使用して単一のクエリを使用することをお勧めします:

SELECT * 
FROM my_table 
WHERE category IN ('Donation', 'Medical Aid', ...) 
ORDER BY category; 

あなたがPHPで結果セットを反復処理する場合、各カテゴリのレコードがグループ化されます、そしてあなたが新しいHTMLテーブルを作成することができます各カテゴリごとに

$sql = "SELECT * FROM my_table ..."; // your query goes here 
$result = $conn->query($sql); 
$category = NULL; 

if ($result->num_rows > 0) { 
    while ($row = $result->fetch_assoc()) { 
     if ($category != $row['category']) { 
      if ($category != NULL) { 
       echo '</table>'; 
      } 
      echo '<table>'; 
      $category = $row['category']; 
     } 

     echo '<tr>'; 
     echo '<td>' . $row['date'] . '</td>'; 
     echo '<td>' . $row['category'] . '</td>'; 
     // and other columns in the table 
     echo '</tr>'; 
    } 
    echo '</table>'; // close the final table 
} 

上記のスクリプトは、正しい方向に向けることを目的としています。あなたが実際に望むHTMLは、これより複雑かもしれません。

0

私はちょうど各カテゴリーのクエリを実行し、それ自身のテーブルに出力します。

$getCategories = "select category from my_table"; 
$catResults = $mysqli->query($catResults); 
if ($catResults->num_rows > 0){ 
foreach ($catResults as $catRes){ 
$myQuery= "select * from my_table where category = '".$catRes."'"; 
$myResults = $mysqli->query($myResults); 
if ($myResults->num_rows > 0){ 
while($row = $myResults->fetch_assoc()){ 
$myResults = $row['date']; 
$myResults = $row['Donation']; 
$myResults = $row['particulars']; 
$myResults = $row['type']; 
$myResults = $row['amount']; 
echo "<table style=\"width:100%\">" 
echo "<tr>"; 
echo "<th>".$catRes."</th>"; 
echo "</tr>"; 
echo "<tr>"; 
echo "<td>".$row['time']."</td>";  
echo "<td>".$row['Donation']."</td>"; 
echo "<td>".$row['particulars']."</td>";  
echo "<td>".$row['type']."</td>"; 
echo "<td>".$row['amount']."</td>"; 
echo "</tr>"; }}}} 
+0

フィールドで利用可能なカテゴリの数がわかっていない場合はどうなりますか? –

+0

私はあなたのお役に立てば幸いです。 – Jonny

関連する問題