2012-10-05 14 views
6

私は私達の会社のクォートシステムを作成しており、私は小さな問題に遭遇しました。ここには終止符があります。私は2つのテーブル、1つの名前付きデータ、もう1つはzipという名前のテーブルを持っています。クライアントは、タバコ、郵便番号、州を使用する場合、性別、年齢を入力します。PHPでMysql配列を出力する

は、ここでのデータテーブルです:

image

ここでジッパーのテーブルです:

image

私はジップ検索コードに基づいて参加する2つのテーブルを照会しました。私が使用しているクエリは次のとおりです。

SELECT data.Monthly_Rate, zips.ZIP_LOOKUP_CODE AS Expr1, zips.State, zips.County, zips.City, zips.Zipcode 
FROM data INNER JOIN 
zips ON data.ZIP_LOOKUP_CODE = zips.ZIP_LOOKUP_CODE 
WHERE (zips.Zipcode = '$zipcode') AND 
(data.Company_Old LIKE '%Blue Cross%') AND 
(data.Plan IN ('A','F','F (High)','G','N')) AND 
(data.Gender = '$gender') AND 
(data.Age = '$age') AND 
(data.Tobacco = '$tobacco') AND 
(data.State = '$state'); 

これで、私は、これをテーブルに出力します。私が遭遇する問題は、「計画」列の下に複数の計画文字があることです。私は5つの異なるものを返すだけですが、いくつかの企業はこれらのプランの5つをすべて提供していないので、このインスタンスでは、配列を出力するときに、特定のプランのレートが間違った列に並んでいますテーブルに

基本的に、データを列に正しく配置する方法がわかりません。プランA、F、およびNは会社でのみ使用できるシナリオでは、最初の3つのフィールド、およびプランNのレートは、プランNの列に並んでいません。

プランレターに特定のレートを関連付ける方法を理解し、それをテーブルに正しく出力する必要があります。プランAの料金は111.40ドル、プランFは135.37、プランNのレートは96.52ドルです。ご覧のように、プランNのレートは正しく調整されていません。これを修正するにはどうすればいいですか?

表出力:

image

これは私がPHPの配列出力に使用しているものです:

while($row = mysql_fetch_array($PlanRates)) 
{ 
$Plan = "$" . number_format($row['Monthly_Rate'], 2, '.', ''); 
echo "<td align='center'>$Plan</td>";   
} 
echo "</tr>"; 
mysql_free_result($PlanRates); 

答えて

2

は、SQLクエリ

に同様の計画を取得します。
SELECT data.Monthly_Rate, data.Plan ... 

次に、ローコード

while($row = mysql_fetch_array($PlanRates)) { 
    $Plans[$row['Plan']] = "$" . number_format($row['Monthly_Rate'], 2, '.', ''); 
} 
echo "<td align='center'>".(isset($Plans['A']) ? $Plans['A'] : '')."</td>"; 
echo "<td align='center'>".(isset($Plans['F']) ? $Plans['F'] : '')."</td>"; 
echo "<td align='center'>".(isset($Plans['F (High)']) ? $Plans['F (High)'] : '')."</td>"; 
echo "<td align='center'>".(isset($Plans['G']) ? $Plans['G'] : '')."</td>"; 
echo "<td align='center'>".(isset($Plans['N']) ? $Plans['N'] : '')."</td>"; 

このようにデータ処理ロジックとプレゼンテーションを混在させるべきではありません。クエリを実行し、データを配列として返す関数を使用する必要があります。次に、htmlのマークアップで配列を反復処理します。

+0

ミハイ、ありがとう。出来た。 5つのプランのどれも検索されない場合、インスタンスで何をすべきですか?今、その特定の会社で何も検索されない場合は、空白​​が表示されます。空白のtdsを表示したくない場合は、5つのプランすべてが利用できない場合は、何も表示しないでください。 – Eric

+0

その後、 ''を起動する前に 'while'ループを移動する必要があります。次に ''と '​​'を 'if(sizeof($ Plans)> 0){echo" ";}のように入れてください。エコー " air4x