2012-10-05 29 views
6

Tôi đang tạo ra một hệ thống trích dẫn cho công ty của chúng tôi và tôi đã gặp phải một vấn đề nhỏ. Đây là tóm tắt; Tôi có hai bảng, một dữ liệu có tên, một số khác có tên là zips. Khách hàng nhập giới tính, độ tuổi của họ, nếu họ sử dụng thuốc lá, mã zip và tiểu bang.Xuất ra mảng Mysql trong PHP

Dưới đây là bảng dữ liệu:

image

Đây là kéo khóa bảng:

image

Tôi đã truy vấn hai bảng tham gia dựa trên mã tra cứu zip . Đây là truy vấn tôi đang sử dụng:

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

Bây giờ những gì tôi muốn làm là xuất kết quả này trong php trong bảng. Vấn đề tôi gặp phải là có nhiều chữ cái Kế hoạch trong cột "Gói". Tôi chỉ muốn trả lại 5 cái khác nhau, nhưng vấn đề là một số công ty không cung cấp tất cả 5 kế hoạch đó, vì vậy trong trường hợp này khi tôi xuất ra mảng, tỷ lệ cho một kế hoạch nhất định sẽ xếp hàng sai cột trong bảng. Về cơ bản, tôi không biết làm cách nào để căn chỉnh dữ liệu chính xác trong cột cụ thể mà nó phải ở trong. Trong trường hợp trong đó một kế hoạch A, F và N chỉ có sẵn cho công ty, nó sẽ điền vào đầu tiên ba trường và tỷ lệ cho kế hoạch N sẽ không xếp vào cột N của kế hoạch.

Tôi cần tìm ra cách liên kết một tỷ lệ nhất định với ký tự Kế hoạch và xuất nó một cách chính xác trong bảng. Trong trường hợp dưới đây, mức giá của Gói A là 111,40 đô la, Kế hoạch F là 135,37 và tỷ lệ N kế hoạch là 96,52 đô la. Như bạn thấy, tốc độ Kế hoạch N không được căn chỉnh chính xác. Làm cách nào để tôi sửa lỗi này?

đầu ra Bảng:

image

Đây là những gì tôi đang sử dụng để sản xuất mảng trong 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); 

Trả lời

2

Lấy kế hoạch cũng như trong truy vấn SQL của bạn

SELECT data.Monthly_Rate, data.Plan ... 

Sau đó sử dụng mã thấp

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

Bạn không nên trộn logic xử lý dữ liệu và bản trình bày theo cách này. Bạn nên sử dụng một hàm để chạy truy vấn và trả về dữ liệu dưới dạng mảng. Sau đó lặp qua mảng trong đánh dấu html.

+0

Mihai, cảm ơn vì điều đó. Nó đã làm việc. Tôi nên làm gì trong trường hợp nếu không có kế hoạch nào trong số 5 kế hoạch được truy lục? Ngay bây giờ, nếu không được truy xuất cho công ty cụ thể đó, thì hiển thị s trống. Tôi không muốn hiển thị tds trống, chỉ cần không hiển thị bất cứ điều gì cả nếu tất cả 5 kế hoạch không có sẵn. – Eric

+0

Sau đó, bạn phải di chuyển vòng lặp 'while' đến trước khi bạn bắt đầu' '. Sau đó đặt ' 'và tất cả các' ' vào bên trong một cái gì đó như 'if (sizeof ($ Plans)> 0) {echo" "; echo " air4x

Các vấn đề liên quan