我如何在PHP加载一个表,并有一些行的背景颜色突出显示
How can I load a table in PHP and have the background color of some rows highlighted?
我不是在寻找交替行…相反,我有两个表A和B,并且Field1都存在。我想要呈现TableA所有与TableB中的field1匹配的地方,我想突出显示行。我该怎么做呢?
我知道如何在SQL中做到这一点,但问题是如何在浏览器中呈现。我想我必须使用javascript。任何建议吗?
下面是生成表a的PHP脚本。我想更改此输出中aif_id也存在于表B
中的行背景。<?php
require_once "config.php";
$dbh = new PDO($dsn, $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$result = $dbh->query("SELECT aif_id, fee_source_id, company_name_per_sedar, document_filing_date FROM a_aif ORDER BY aif_id DESC");
$result->setFetchMode(PDO::FETCH_ASSOC);
echo "<table id='"all_aifs'">";
echo "<tr>";
echo "<th><b>Document ID</b></th>";
echo "<th><b>Pubco Name</b></th>";
echo "<th><b>Filing Date</b></th>";
echo "<th><b>PDF</b></th>";
echo "</tr>";
foreach($result as $index => $row) {
echo "<tr>";
echo "<td>$row[fee_source_id]</td>";
echo "<td>$row[company_name_per_sedar]</td>";
echo "<td>$row[document_filing_date]</td>";
echo "<td>Placeholder</td>";
echo "</tr>";
}
echo "</table>";
echo "<br>";
$dbh = NULL;
?>
PHP Script for TableB<?php
require_once "config.php";
$dbh = new PDO($dsn, $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$result = $dbh->query("SELECT aif_id, fee_source_id, company_name_per_sedar, document_filing_date FROM a_aif_remaining LIMIT 0,50");
$result->setFetchMode(PDO::FETCH_ASSOC);
echo "<table>";
echo "<tr>";
echo "<th><b>Document ID</b></th>";
echo "<th><b>Pubco Name</b></th>";
echo "<th><b>Filing Date</b></th>";
echo "<th><b>PDF</b></th>";
echo "</tr>";
foreach($result as $index => $row) {
echo "<tr>";
echo "<td>$row[fee_source_id]</td>";
echo "<td>$row[company_name_per_sedar]</td>";
echo "<td>$row[document_filing_date]</td>";
echo "<td>Placeholder</td>";
echo "</tr>";
}
echo "</table>";
echo "<br>";
$dbh = NULL;
?>
更新代码<?php
require_once 'config.php';
$dbh = new PDO($dsn, $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$result = $dbh->query("SELECT aif_id, fee_source_id, company_name_per_sedar, document_filing_date FROM a_aif_remaining");
$result->setFetchMode(PDO::FETCH_ASSOC);
$match = $dbh->query("SELECT a_aif.aif_id FROM a_aif INNER JOIN a_aif_remaining WHERE a_aif_remaining.aif_id = a_aif.aif_id");?>
<?php if ( !empty($result) ) : ?>
<table id="all_aifs">
<tr>
<th><b>Document ID</b></th>
<th><b>Pubco Name</b></th>
<th><b>Filing Date</b></th>
<th><b>PDF</b></th>
</tr>
<?php foreach($result as $index => $row) : ?>
<tr>
<?= $row['aif_id'] == true ? ' class="match"' : '' ?>
<td><?php echo $row[fee_source_id]; ?></td>
<td><?php echo $row[company_name_per_sedar]; ?></td>
<td><?php echo $row[document_filing_date]; ?></td>
<td>Placeholder</td>
</tr>
<?php endforeach; ?>
</table>
<br>
<?php endif;
$dbh = NULL;
?>
在SQL中执行检查(因为您知道如何执行)。
在PHP中,使用检查的结果为需要突出显示的HTML元素添加(额外的)类属性(就像'交替行'一样):
<?php
$query = ... // perform your SQL query
// TODO Open HTML table
// TODO Loop though results:
$row = ... // fetch you row here
?>
<tr <?= $row['my_check'] == true ? ' class="match"' : '' ?>>
<td><?= $row['field'] ?></td>
</tr>
<?php
// TODO close HTML table
这个(不完整的)示例使用SQL检查(名为my_check
),并在需要时添加match
类。在CSS中,你可以使用match
类来应用高亮:
.match {
background-color: red;
}
首先,如果你想保持代码的可维护性和整洁性,那么你应该避免打印HTML标签。
不该走的路:
echo "<table>";
echo "<tr>";
echo "<th><b>Document ID</b></th>";
echo "<th><b>Pubco Name</b></th>";
echo "<th><b>Filing Date</b></th>";
echo "<th><b>PDF</b></th>";
该走的路:
<?php
require_once 'config.php';
$dbh = new PDO($dsn, $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$result = $dbh->query("SELECT aif_id, fee_source_id, company_name_per_sedar, document_filing_date FROM a_aif_remaining LIMIT 0,50");
$result->setFetchMode(PDO::FETCH_ASSOC);
?>
<?php if ( !empty($result) ) : ?>
<table>
<tr>
<th><b>Document ID</b></th>
<th><b>Pubco Name</b></th>
<th><b>Filing Date</b></th>
<th><b>PDF</b></th>
</tr>
<?php foreach($result as $index => $row) : ?>
<tr>
<td><?php echo $row[fee_source_id]; ?></td>
<td><?php echo $row[company_name_per_sedar]; ?></td>
<td><?php echo $row[document_filing_date]; ?></td>
<td>Placeholder</td>
</tr>
<?php endforeach; ?>
</table>
<br />
<?php endif; ?>
结论:
1)代码现在看起来更可读和干净,以及
2)你把PHP和HTML分开了
3)一旦出现问题,您可以很容易地确定(如parse error at ..
, unexcepted ';' ...
回到你的问题
那么如何突出显示需要的行呢?这很简单,只要在foreach
循环中使用if/else,比如
<?php foreach($result as $k => $v): ?>
<?php if ( $k == 'some_value_you_expect_to_be_highlighted' ) : ?>
<tr>... should be highlighted ...</tr>
<?php else : ?>
<tr>.... a regular row</tr>
<?php endif; ?>
<?php endforeach; ?>
您只需在数据匹配的行中添加一个类,并在相关的CSS中设置背景色。
<table> <tr class="matching"> ... </tr>
如何编写合适的CSS超出了这个答案的范围。: -)
这个类是由web服务器的PHP代码添加的,还是由客户端的JavaScript添加的,取决于web应用程序的设计。
不,你不需要使用JavaScript。你可以使用PHP
在生成行时,检查是否满足条件并将'高亮显示'类放入行定义中。
伪代码:
<?php
if(Condition) echo "<tr class='highlighted'>";
else echo "<tr>";
echo "<td>CellStuff</td>";
echo "</tr>";
?>
我不确定我是否能理解你的问题正确,但我不认为你需要JS。您可以计算一个单元格/行是否应该在PHP中突出显示,并设置一个css类,也在PHP中。
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在显示侧边栏时禁用背景,单击除侧边栏之外的任何位置都会关闭侧边栏
- 背景图像前显示Javascript警报
- 通过ID JavaScript显示随机背景图像
- 无法在qualtrics上使用javascript显示背景图像
- 根据屏幕分辨率显示自定义背景图像
- ASP MVC网站与vegas背景幻灯片不显示背景后发布到服务器
- 背景's/JavaScript在本地显示/工作,而不是在服务器上
- 如何在windows 8 html5现代用户界面中显示没有背景的图像
- 在按钮单击时将图像URL数据显示到弹出框中,而无需禁用背景
- 地图<区域>未显示背景图像
- "隐藏/显示”;元素和更改按钮背景图像
- 背景图像未显示在画布中
- 使用Jquery显示身体背景图像
- 如何显示带有按钮的背景图像
- 背景图像未显示在AngularJS中
- 透明src,使背景显示通过
- 我怎样才能得到我的背景显示在javascript css
- 使用jquery循环插件防止背景显示
- bootstrap-modal -当我向下滚动时,我如何阻止背景显示在顶部