2014-03-06 2 views
0

MySQL 출력을 가져 와서 쿼리에서 출력되는 PHP 테이블에 CSS 조건부 서식을 적용하려고합니다. 내 현재 버전의 코드에서 "문자열 변환에 대한 배열"을 받고 있는데, 적어도 일부 오류가 발생합니다. 여기까지 내가 지금까지 가지고있는 것이있다.조건부 서식을 사용한 문자열 변환

<table> 
<thead> 
<tr> 
<th>Date</th> 
<th>High</th> 
<th>Low</th> 
<th>Average</th> 
<th>DFNorm</th> 
<th>HDD</th> 
<th>CDD</th> 
<th>Liquid</th> 
<th>Snow</th> 
<th>SDepth</th> 
<th>WAvg</th> 
<th>WMax</th> 
<th>Clouds</th> 
<th>Weather</th> 
</tr> 
</thead> 
<tbody> 

<?php 

$result = mysqli_query($con," 
select 
Date, 
High, 
Low, 
Average, 
DFNorm, 
HDD, 
CDD, 
Liquid, 
Snow, 
SDepth, 
WAvg, 
WMax, 
Clouds, 
Weather 
from CF6MCI order by Date DESC;"); 

while($row = mysqli_fetch_array($result)) 
{ 

$High = array(); 
$High[] = $row['High']; 

/* NOT WORKING BELOW THIS LINE !! 

$cHigh = array(); 
$cHigh = ''; 
switch ($High) 
    { 
    case ($High <= -25): $cHigh = 'C6TB25'; break; 
    case ($High <= -20) and ($High >= -24): $cHigh = 'C6TB20B24'; break; 
    case ($High <= -15) and ($High >= -19): $cHigh = 'C6TB15B19'; break; 
    case ($High <= -10) and ($High >= -14): $cHigh = 'C6TB10B14'; break; 
    case ($High <= -5) and ($High >= -9): $cHigh = 'C6TB05B09'; break; 
    case ($High <= 0) and ($High >= -4): $cHigh = 'C6T000B04'; break; 
    case ($High <= 4) and ($High >= 1): $cHigh = 'C6T004001'; break; 
    case ($High <= 9) and ($High >= 5): $cHigh = 'C6T009005'; break; 
    case ($High <= 14) and ($High >= 10): $cHigh = 'C6T014010'; break; 
    case ($High <= 19) and ($High >= 15): $cHigh = 'C6T019015'; break; 
    case ($High <= 24) and ($High >= 20): $cHigh = 'C6T024020'; break; 
    case ($High <= 29) and ($High >= 25): $cHigh = 'C6T029025'; break; 
    case ($High <= 32) and ($High >= 30): $cHigh = 'C6T032030'; break; 
    case ($High <= 34) and ($High >= 33): $cHigh = 'C6T034033'; break; 
    case ($High <= 39) and ($High >= 35): $cHigh = 'C6T039035'; break; 
    case ($High <= 44) and ($High >= 40): $cHigh = 'C6T044040'; break; 
    case ($High <= 49) and ($High >= 45): $cHigh = 'C6T049045'; break; 
    case ($High <= 54) and ($High >= 50): $cHigh = 'C6T054050'; break; 
    case ($High <= 59) and ($High >= 55): $cHigh = 'C6T059055'; break; 
    case ($High <= 64) and ($High >= 60): $cHigh = 'C6T064060'; break; 
    case ($High <= 69) and ($High >= 65): $cHigh = 'C6T069065'; break; 
    case ($High <= 74) and ($High >= 70): $cHigh = 'C6T074070'; break; 
    case ($High <= 79) and ($High >= 75): $cHigh = 'C6T079075'; break; 
    case ($High <= 84) and ($High >= 80): $cHigh = 'C6T084080'; break; 
    case ($High <= 89) and ($High >= 85): $cHigh = 'C6T089085'; break; 
    case ($High <= 94) and ($High >= 90): $cHigh = 'C6T094090'; break; 
    case ($High <= 99) and ($High >= 95): $cHigh = 'C6T099095'; break; 
    case ($High <= 104) and ($High >= 100): $cHigh = 'C6T104100'; break; 
    case ($High <= 109) and ($High >= 105): $cHigh = 'C6T109105'; break; 
    case ($High <= 114) and ($High >= 110): $cHigh = 'C6T114110'; break; 
    case ($High <= 119) and ($High >= 115): $cHigh = 'C6T119115'; break; 
    case ($High >= 120): $cHigh = 'C6T120'; break; 
    } 
NOT WORKING ABOVE THIS LINE!! */ 

echo "<tr>"; 
echo "<td>" . $row['Date'] . "</td>"; 
echo "<td>" . ($High) . "</td>"; // class='" $cHigh "' -- THIS IS WHERE IT ERRORS STRING 
echo "<td>" . $row['Low'] . "</td>"; // class='" $cLow "' 
echo "<td>" . $row['Average'] . "</td>"; 
echo "<td>" . $row['DFNorm'] . "</td>"; 
echo "<td>" . $row['HDD'] . "</td>"; 
echo "<td>" . $row['CDD'] . "</td>"; 
echo "<td>" . $row['Liquid'] . "</td>"; // class='" $cLiquid "' 
echo "<td>" . $row['Snow'] . "</td>"; // class='" $cSnow "' 
echo "<td>" . $row['SDepth'] . "</td>"; 
echo "<td>" . $row['WAvg'] . "</td>"; 
echo "<td>" . $row['WMax'] . "</td>"; // class='" $cWMax "' 
echo "<td>" . $row['Clouds'] . "</td>"; // class='" $cClouds"' 
echo "<td>" . $row['Weather'] . "</td>"; 
echo "</tr>"; 

} 

?> 

답변

1

배열을 정수와 비교할 수 없습니다.

는 단지 하나의 값을 원하는대로, 그 배열을 만들 필요가 없습니다

$High = $row['High']; 

$High = array(); 
$High[] = $row['High']; 

를 교체합니다.

값 범위를 확인하려면 switch($High)을 수행 할 수도 없습니다. 대신 switch(true)을 사용할 수 있습니다.

참고로 $cHigh도 배열로 만들 필요는 없습니다.

+0

감사합니다. 그랬어! 그리고 포맷팅이 작동하고 동일한 규칙이 적용되고 사용되는 것을 발견했습니다. ($ Var). 거기에! – user3260912

+0

귀하의 질문에 대한 답변이있는 경우 틱을 클릭하여 동의라고 표시하십시오. :-) –

+0

내가 가진 한 가지 질문 - 어젯밤에 작업 할 첫 번째 조건부 서식 섹션을 얻을 수 있었지만 두 번째 스위치를 정의하기 시작한 후에는 그냥 흰색 페이지를 표시하는 것이 잘못된 것처럼 보였습니다. 나는 스위치 ($ High)와 스위치 ($ Low)를 단지 두 개의 스위치 (true) 대신에 사용했기 때문에 이것을 가정하고있다. – user3260912

관련 문제