1

SQLクエリからテーブルを生成するためのコードがいくつかあります。セルの背景色は、「rel.cat」の値を表します。値は1〜8の整数です。

<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<?php
// Connect to the database server
$dbcnx = mysql_connect("xxxxx",xxxxx,xxxxx);
if (!$dbcnx) {
  echo( "<P>Database Connection Failed</P>" );
  exit();
}
// Select the matrix databse database
  if ( !@mysql_select_db("sustaina_matrix") ) {
    echo( "<P>Not Connected to Matrix Database</P>" );
    exit();
  }
// Assign the query
$query = "SELECT rel.id, rel.cat colourcode FROM rel";
// Execute the query
$result = mysql_query($query);
if (!$result){
    die ("Could not query the database: <br />". mysql_error());
}
?>
<table>
    <tr>
        <th>Relationship ID</th>
        <th>Colour ID</th>
</tr>
<?php
// Change colours
function getcolour()
{
    if ($catc = "1")
        return '#000000';
    elseif($catc = "2")
        return '#C0C0C0';
    elseif($catc = "3")
        return '#00FF00';
    elseif($catc = "4")
        return '#0000FF';
    elseif($catc = "5")
        return '#FF99FF';
    elseif($catc = "6")
        return '#FF9900';
    elseif($catc = "7")
        return '#FF0000';
    else
        return '#FFFFFF';
}
// Fetch and display the results
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    $id = $row["id"];
    $catc = $row["colourcode"];
    echo "<tr>";
    echo "<td>$id</td>";
    echo "<td bgcolor='getcolour()'>$catc</td>";
    echo "</tr>";
}
?>
</table>
</body>
</html>

現在、すべてのセルが赤で、理由はわかりません。

4

6 に答える 6

5

ifステートメントには二重の"=="が必要です。

それ以外の

if ($catc = "1")

そのはず

if ($catc == "1")

すべてのif条件のどこにでも==を割り当てます。

また、パラメータを関数に割り当てます。

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    $id = $row["id"];
    $catc = $row["colourcode"];
    echo "<tr>";
    echo "<td>$id</td>";
    echo "<td bgcolor='getcolour(\"$catc\")'>$catc</td>";
    echo "</tr>";
}

関数のパラメーターも取得します。

function getcolour($catc)
{
于 2012-10-22T15:41:19.870 に答える
2

関数に変数$catcを指定します。すなわち

function getcolour($catc) {
    // ... existing code
}

echo "<td bgcolor='getcolour($catc)'>$catc</td>";

switch()代わりに使用すると読みやすくなる場合があります

function getcolour($catc) {
    switch($catc)
    {
        case 1:
            return '#000000';
            break;
        case 2:
            return '#C0C0C0';
            break;
        case 3:
            return '#00FF00';
            break;
        case 4:
            return '#0000FF';
            break;
        case 5:
            return '#FF99FF';
            break;
        case 6:
            return '#FF9900';
            break;
        case 7:
            return '#FF0000';
            break;
        default:
            return '#FFFFFF';
            break;
    }
}

echo '<td bgcolor="' . getcolour($catc) . '">' . $catc . '</td>';
于 2012-10-22T15:39:31.863 に答える
2

いくつかの問題があります。

  • $catc関数に渡して受け入れますgetcolour()
  • ==条件では、代入()ではなく論理演算子()を使用=してください。
  • 関数の結果を正しく出力します。

コード:

function getcolour($catc) {
    // ... existing code
}

echo "<td bgcolor='" . getcolour($catc) . "'>$catc</td>";
于 2012-10-22T15:42:11.120 に答える
1

関数に値を渡していないgetcolour。その関数も変更する必要があります。現時点では、ifステートメントは値を比較するのではなく値を割り当てるため、最初のifステートメントは常にtrueになります。それぞれを「=」ではなく「==」に変更します。

これを変える :

echo "<td bgcolor='getcolour()'>$catc</td>";

これに:

echo "<td bgcolor='".getcolour($row['catc'])."'>.$row['catc']</td>";

これは、catcがクエリから「catc」として返されることを前提としています。

于 2012-10-22T15:39:08.663 に答える
0
 function getcolour($catc){
..........etc

そしてそれを呼びます

<td bgcolor='",getcolour($catc),"'>$catc</td>

そして、bgcolorが非推奨になったことを忘れないでください=)

于 2012-10-22T15:46:17.880 に答える
0

ここに示されているすべてのオーナーに基づいて、最終的な作業コードがあります。

<!DOCTYPE HTML>
<html>
<head>
<meta content="en-gb" http-equiv="Content-Language">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Relationships</title>
<link href="mainstyles.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
// Connect to database
require($DOCUMENT_ROOT . "connect.php");
// Assign the query
$query = "SELECT rel.id, rel.cat colourcode FROM rel";
// Execute the query
$result = mysqli_query($link ,$query);
if (!$result){
    die ("Could not query the database: <br />". mysqli_error());
}
?>
<table>
    <tr>
        <th>Relationship ID</th>
        <th>Colour ID</th>
</tr>
<?php
// Change colours
function getcolour($catc) { 
    switch($catc) 
    { 
        case 1: 
            return '#000000'; 
            break; 
        case 2: 
            return '#C0C0C0'; 
            break; 
        case 3: 
            return '#00FF00'; 
            break; 
        case 4: 
            return '#0000FF'; 
            break; 
        case 5: 
            return '#FF99FF'; 
            break; 
        case 6: 
            return '#FF9900'; 
            break; 
        case 7: 
            return '#FF0000'; 
            break; 
        default: 
            return '#FFFFFF'; 
            break; 
    } 
} 
// Fetch and display the results
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
    $id = $row["id"];
    $catc = $row["colourcode"];
    echo "<tr>";
    echo "<td>$id</td>";
    echo "<td bgcolor='" . getcolour($catc) . "'>$catc</td>";
    echo "</tr>";
}
?>
</table>
</body>
</html>
于 2012-10-23T10:47:37.643 に答える