Я создал работающую страницу WordPress с двумя полями поиска (и парой и / или кнопками между ними), которая запрашивает базу данных sql и возвращает таблицу из двух столбцов со строками, которые содержат один (или оба, в зависимости от обстоятельств) искомых строк ($ search и $ search2), а затем разбивает на страницы, когда результаты превышают 100 строк. Я пробовал три разных способа выделения этих строк в таблице, но не могу заставить их работать. Так что я очень признателен за помощь. Соответствующая часть кода php (для которой я использую плагин WordPress Insert PHP):
[insert_php]
* * * *
if ($andor == "and"){
$result = mysql_query("SELECT DATE(start_date), EVENT FROM {$table} WHERE EVENT REGEXP '$search' >0 AND EVENT REGEXP '$search2' >0 LIMIT {$limits}");
}
else{
$result = mysql_query("SELECT DATE(start_date), EVENT FROM {$table} WHERE EVENT REGEXP '$search' >0 OR EVENT REGEXP '$search2' >0 LIMIT {$limits}");
}
* * * *
while($row = mysql_fetch_row($result))
{
echo "<tr>";
foreach($row as $cell)
echo "<td>$cell</td>";
echo "</tr>\n";
}
[/insert_php]
Сначала я добавил функцию в файл functions.php и попытался вызвать ее, но не смог заставить ее работать
function highlight_word( $content, $word) {
$replace = '<span style="background-color: #FF0;">' . $word . '</span>';
$content = str_replace( $word, $replace, $content );
return $content;
};
Затем я попытался заменить строку в отдельном цикле while. Наконец, я попытался изменить существующий цикл while следующим образом:
while($row = mysql_fetch_row($result))
{
echo "<tr>";
foreach($row as $cell)
echo "<td>" . str_replace($search, '<span style="background-color: #FF0;">' . $search . '</span>', $cell) . "</td>";
echo "</tr>\n";
}
Было бы полезно, если бы я мог ограничить выделение только вторым столбцом («СОБЫТИЯ»), но это гораздо менее важно, чем просто заставить его работать. И, да, я обновлю код до mysqli и экранирую строки запроса перед завершением. Как всегда, спасибо всем в этом замечательном сообществе.
Почему бы вам не использовать какую-нибудь светлую библиотеку js?
mark.js поддерживает выделение в таблицах из коробки
$("table tr td:nth-child(1)").mark('keyword');
Других решений пока нет …