2012-10-05 36 views
6

Şirketimiz için bir teklif sistemi oluşturuyorum ve küçük bir sorunla karşılaştım. İşte yıkık; İki tablo var, biri veri, diğeri fermuarlar. Müşteri, cinsiyetini, yaşını, tütün, posta kodu ve devleti kullanıyorsa girer.PHP'de Mysql dizisi çıktısı

image

Ben zip arama koduna göre katılmak için iki tablo sorgulanan ettik:

İşte

image

fermuarlar tablo var: Burada

veri tablosu var . İşte kullanıyorum sorgu var:

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'); 

Şimdi ne yapmak istediğinizi bir tabloda php bu çıkıştır. Karşılaştığım sorun, "Plan" sütununun altında birden fazla Plan harfi var. Ben sadece 5 farklı olanı iade etmek istiyorum, ama sorun bazı şirketlerin bu planların tümünü sunmamasından dolayı, bu durumda diziyi çıktılarken, belirli bir planın oranı yanlış sütunda sıralanacak masada.

Temel olarak, içinde olması gereken belirli bir sütuna verileri doğru bir şekilde nasıl hizalayacağımı bilmiyorum. Bir plan A, F ve N'nin yalnızca şirket için uygun olduğu bir senaryoda, ilk önce Üç alan ve N planı için plan N sütununda sıralanmayacaktır.

Verilen bir ücretin Plan mektubu ile nasıl ilişkilendirileceğini ve tabloya doğru şekilde nasıl çıkarılacağını bulmam gerekiyor. Aşağıdaki örnekte Plan A oranı 111.40 $, Plan F ise 135.37 ve Plan N oranı 96.52 $ 'dır. Gördüğünüz gibi, Plan N oranı doğru şekilde hizalanmıyor. Bunu düzeltmek için nasıl giderim?

Tablo çıkışı: PHP çıkışa dizisi kullanarak ettiğimi

image

budur:

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); 

cevap

2

SQL sorgusunda yanı planı Al

SELECT data.Monthly_Rate, data.Plan ... 

Ardından kullanın düşük kod

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>"; 

Veri işleme mantığınızı ve sunumunuzu bu şekilde karıştırmamalısınız. Sorguyu çalıştırmak ve verileri bir dizi olarak döndürmek için bir işlev kullanmalısınız. Ardından html biçimlendirmesinde dizinin üzerine gelin.

+0

Mihai, bunun için teşekkürler. İşe yaradı. 5 planın hiçbiri alınmazsa örnekte ne yapmalıyım? Şu anda, bu belirli şirket için hiç bir şey alınmazsa, boş s gösterilir. Boş tds göstermek istemiyorum, sadece 5 planın mevcut olmaması durumunda hiç bir şey gösterme. – Eric

+0

Daha sonra 'while' döngüsünü' 'başlatılmadan önce taşımanız gerekir. Daha sonra 've tüm" "ifadelerini," if (sizeof ($ Plans)> 0) {echo ""; echo " air4x