0

我在数据库中有一个表。当我输入.../array.php?id=1网址时,它将突出显示该行。如果我id=2输入,那么它将突出显示第 2 行。

到目前为止,这是我的代码:

<?php
function connect(){
  // Make a MySQL Connection
  $link = mysqli_connect("localhost", "root", "", "school") or die(mysqli_error());
  return $link;
}

if ($_GET)
{
  if(isset($_GET["id"])) $id = $_GET["id"]; 
}


// select query 
$query = "SELECT * FROM graden" ;

if (isset($id)) { $query.= " WHERE id = $id "; }

$result = mysqli_query(connect(),$query);   

// table making
$table = "<table border='1'>";
$table .= "<tr>
             <th> ID </th>
             <th>Graden Celcius</th> 
             <th>Aanduiding</th>
             <th>Image</th> 
        </tr>";

// keeps getting the next row until there are no more to get
while($row = mysqli_fetch_assoc( $result )) {
    // Print out the contents of each row into a table
    foreach ($row as $key => $value) {
        if ($key == "Image") {
            $table .="<td><img src='$value' /></td>"; 
        } elseif ($key == "temp") {
            $table .="<td><a href='array.php?id=$value'>$value</a></td>"; 
        } else {
            $table .="<td>$value</td>";         
        }

    }
    $table .= "</tr>";
}

$table .="</table>";

echo $table;
?>
4

2 回答 2

0

您正在寻找的可能与此类似

while($row = mysqli_fetch_assoc( $result )) {
    // Print out the contents of each row into a table
    $table .="<tr ".($_GET["id"] == $row["id"]?" style='background-color:yellow'":"").">";
    foreach ($row as $key => $value)
    {
        if ($key == "Image")
        {
            $table .="<td><img src='$value' /></td>"; 
        }
        elseif ($key == "temp")
        {
            $table .="<td><a href='array.php?id=$value'>$value</a></td>"; 
        }
        else
        {
            $table .="<td>$value</td>";         
        }
    }
    $table .= "</tr>";
}

这使用三元 if 根据行的 id 是否与提供的查询参数匹配有条件地设置表的样式属性。

于 2013-06-19T18:36:41.907 回答
0

如果您将 ID 条件添加到您的查询中

if (isset($id)) $query.= " WHERE id = $id ";

那么你的表中只有那一行。因此,如果您不想过滤,而是要突出显示该行,我建议不要将 ID 放入查询中,而是在打印表行的循环内检查它的相等性,以及该行是否具有相应的 ID ,例如给它上色。此外,您错过了行中的 TR 标签。您的突出显示代码可能是这样的:

while($row = mysqli_fetch_assoc( $result )) {
    $table .= '<tr';
    if ($row['id'] === $id)
        $table .= 'style="background-color: #ff4444;"';
    $table .= '>';
    // rest of your code ....
}
于 2013-06-19T18:37:10.077 回答