使用URL突出显示表行

时间:2013-06-19 18:30:09

标签: php mysql

我在数据库中有一个表。当我在网址中输入.../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;
?>

2 个答案:

答案 0 :(得分: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是否与提供的查询参数匹配来有条件地设置表的style属性。

答案 1 :(得分: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 ....
}