3

このようなMySQLの結果をPHP/HTMLテーブルに表示したいと思います。後で簡単にできる場合は、各植物の情報にマウスを追加します。

+ ------------------------------------------------- ---------- +
| 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

サポートのためのマハロ!

4

1 に答える 1

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";
于 2012-12-05T03:14:47.217 に答える