2017-01-18 26 views
0

私はclientsというMysqlテーブルを持っています。どの構造がベローズですか:PHPを使用して毎月1日の請求書を生成するには?

client_id conn_date monthly_bill 
====================================== 
1   2016-08-18 100 
2   2016-09-12 200 
3   2016-10-20 250 
4   2016-06-02 300 

client_bill_paidという別のMysqlテーブル。この表では、私はループがすべてのクライアントを取得し、毎月の請求書1日を生成するためにしながら、今、私はPHPでSQLクエリを実行しています

bill_id  client_id bill_month 
==================================== 
1   2   2016-10-01 
2   3   2016-10-02 

(クライアントが支払った月)bill_monthclient_idを挿入しています。

require_once("../header.php"); 
$query = mysqli_query($conn, "SELECT * FROM clients "); 

echo "<table border='1'>"; 
echo "<tr>"; 
    echo "<td>Client Id</td>"; 
    echo "<td>Joined Date</td>"; 
    echo "<td>Monthly Bill</td>"; 
    echo "<td>Due</td>"; 
    echo "<td>Paid</td>"; 
echo "</tr>"; 
while ($result = mysqli_fetch_array($query)) { 

    $client_id  = $result['client_id']; 
    $conn_date  = $result['conn_date']; // Joined Date 
    $monthly_bill = $result['monthly_bill']; 


    echo "<tr>"; 
     echo "<td>$client_id</td>"; 
     echo "<td>$conn_date</td>"; 
     echo "<td>$monthly_bill</td>"; 
     echo "<td> </td>"; // My question is here 
     echo "<td> </td>"; // 
    echo "</tr>"; 
} 
echo "</table>";  

今私は、HTML により列に今日の日まで総による金額を示したいと思います。

たとえば

今日は2017-01-18client_idある= が2016-10-20接合され、そしてclient_bill_paidテーブルにclient_id = が存在しないため、このクライアントはまだ支払われていません。

は、だから今このクライアントの合計により金額は次のようになります。

2016-10-20 = $88 // Joined 20th and month end 31th = 11 days * ($250/31) 
2016-11-01 = $250 
2016-12-01 = $250 
2017-01-01 = $250 

Total  = $838 

は、私は、HTML により列にこの$ 838を示したいと思います。これどうやってするの ?

+0

SOはコード作成サービスではありません。あなたがこれを行う方法を知らない場合は、オンラインで検索し、学ぶか、それを行う専門家に支払う。 – Styphon

答えて

0

あなたはLEFTを使用することができますが、あなたのクエリに参加 - そのような何か:

$query = mysqli_query($conn, "SELECT c.*, count(p.id_client) as paid_months FROM clients c LEFT JOIN client_bill_paid p ON p.id_client = c.id_client") GROUP BY c.id_client; 

ので - 結果にあなたが支払った数ヶ月の量を知っているだろうし、その後、あなたが原因と支払った金額を計算する数式を使用することができます。

関連する問題