2012-12-05 2 views
3

PHP 결과 테이블을 PHP/HTML 테이블에 표시하고 싶습니다. 어쩌면 나중에 각 식물에 대한 정보에 마우스를 추가 할 수 있습니다.SQL 결과를 범주로 정렬하고 테이블에 표시하기 Ph Ph

 
+-----------------------------------------------------------+ 
|category1 ¦ category2 ¦ category3 ¦ category4 ¦ category5 ¦ 
+-----------+-----------+-----------+-----------+-----------+ 
| plantName ¦ plantName ¦ plantName ¦ plantName ¦ plantName ¦ 
| plantName ¦ plantName ¦ plantName ¦ plantName ¦ plantName ¦ 
| plantName ¦ plantName ¦   ¦   ¦   ¦ 
|   ¦ plantName ¦   ¦   ¦   ¦ 
|   ¦ plantName ¦   ¦   ¦   ¦ 
+-----------+-----------+-----------+-----------+-----------+ 

먼저 식물을 표고와 강수량으로 선택합니다.

$sql = mysql_query("SELECT * FROM `plants_tb` 
WHERE $elevate>= elevationLOW && $elevate<= elevationHI && 
$rainfall>= rainfallLOW && $rainfall<= rainfallHI ORDER BY commonNames ASC"); 

$plant = 'commonNames'; 
$elevationH = 'elevationHI'; 
$elevationL ='elevationLOW'; 
$rainfallL ='rainfallLOW'; 
$rainfallH ='rainfallHI'; 
$species ='species'; 

echo "<table border='1'><tr><th>Name</th><th>Category</th></tr>"; 
while($row = mysql_fetch_array($sql)){ 
echo "<tr><td>" . $row[$plant] . "</td><td>" . $row['heightHI'] . "</td></tr>"; 
} 
echo "</table>"; 

는 지금은 높이 카테고리별로 열을 표시해야합니다. 어쩌면 내가 선택한 식물들에 대한 임시 테이블을 만들어서 분류하고 컬럼으로 표시해야 할까? 다음은 분류 아이디어입니다. 나는이 코드가 정확하지 않다는 것을 알고 있지만, 그것은 내 지적을 얻는다.

$sql="SELECT tree_height FROM $Elevation_Rainfall_list; 
WHERE tree_height 
BETWEEN 1 AND 7 = $Category1 
BETWEEN 7 AND 15 = $Category2 
BETWEEN 15 AND 30 = $Category3 
BETWEEN 30 AND 9999 = $Category4 
if not = $Category5 

마하로 지원!

답변

3

히스토그램과 같은 것을 만들고 싶습니다.

대신 SQL 쿼리의 데이터를 분류하기 위해 노력하고, 당신은 이런 일에 PHP에서 그것을 수행해야합니다

$histogram = array(); 
# classify the data into histogram bins 
while($row = mysql_fetch_array($sql)) { 
    $h = $row['tree_height']; 
    $cat = 3; 
    if ($h <= 7) { 
     $cat = 0; 
    } elseif ($h <= 15) { 
     $cat = 1; 
    } elseif ($h <= 30) { 
     $cat = 2; 
    } 
    $histogram[$cat][] = $row['commonNames']; 
} 

# determine the number of rows in the table 
$rows = 0; 
foreach ($histogram as $ar) { $rows = max($rows, count($ar)); } 

# write a table with the data 
echo "<table border='1'>\n" . 
    " <tr>\n <td>Category 1</td>\n <td>Category 2</td>\n" . 
    " <td>Category 3</td>\n <td>Category 4</td>\n</tr>\n"; 
for ($i = 0; $i < $rows; ++$i) { 
    echo " <tr>\n"; 
    for ($cat = 0; $cat <= 3; ++$cat) { 
     echo " <td>" . $histogram[$cat][$i] . "</td>\n"; 
    } 
    echo " </tr>\n"; 
} 
echo "</table>\n"; 
+0

한 히스토그램 비유에 대한 :) – andr

+0

먼저 고마워를 프로젝트에 입력. 나는 당신의 코드를 올바르게 사용하지 않는다. 빈 페이지가 생겼어. 나는 디버깅 중이었고 발견했다. '치명적인 오류 : 62 줄에서 134217728 바이트의 메모리를 사용할 수 없음 (71 바이트를 할당하려고 시도 함) ' 이는 $ histogram [$ cat] [] = $ row [$ 식물]; ' 어쩌면이 동안 루프가 붙어 있습니까? while ($ row = mysql_fetch_array ($ sql)) ' – Kaleo10

+0

mysql_fetch_array는 더 이상 가져올 행이 없을 때 null (false로 평가됨)을 반환하기 때문에이 루프는 OK 여야합니다. 데이터베이스에 많은 레코드가 있고 그 레코드를 모두 처리하려면 더 많은 메모리가 필요합니다. 결과에 몇 개의 행이 있습니까? 찾으려면 'mysql_num_rows ($ sql)'을 쿼리 어딘가에 넣으십시오. –