2012-10-05 3 views
6

나는 우리 회사의 견적 시스템을 만들고 있는데, 나는 작은 문제에 봉착했다. 다음은 개요입니다. 두 개의 테이블, 하나는 데이터, 다른 하나는 zip이라는 테이블이 있습니다. 고객은 담배, 우편 번호 및 주를 사용하는 경우 성별, 나이를 입력합니다.PHP에서 Mysql 배열 출력하기

image

내가 우편 조회 코드를 기반으로 가입 할 수있는 두 테이블을 조회했습니다

다음

image

은 참아 테이블입니다 : 여기

는 데이터 테이블의 . 다음은 내가 사용하고있는 쿼리입니다 :

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 계획 만 회사에서만 사용할 수있는 시나리오에서는 첫 번째 열 세 개의 필드 및 계획 N의 비율은 계획 N 열에 정렬되지 않습니다.

일정 비율을 계획 문자와 연결하고 테이블에서 올바르게 출력하는 방법을 알아야합니다. 플랜 A 요금은 111.40 달러, 플랜 F는 135.37, 플랜 N 요금은 96.52 달러입니다. 보시다시피 플랜 N 요율이 올바르게 정렬되지 않습니다. 이 문제를 해결하려면 어떻게해야합니까?

표 출력 : 내가 PHP에서 출력 배열을 사용하고 어떤

image

이것은 :

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