Доска объявлений реализуется с использованием node.js и mysql. На этот раз я собираюсь реализовать функцию поиска. Вот как форма поиска появляется на главной странице и, наконец, появляется как страница поиска после обработки в контроллере. Однако таблица должна совпадать с базой данных и строкой формы поиска. Если это не точно, это не выйдет.
форма
form(action=routers.search, method = "get")
input(type = "text" placeholder = "searh", name = "result")
input(type = "submit" value = "searh")
контроллер
export const search = (req, res) => {
try {
let result_value = req.query.result;
let sql =
"SELECT id, folder, title, nicName, date_format(writeDate, '%Y/%m/%d %T') as writeDate FROM board where title=? order by id desc ";
dbConnection.query(sql, [result_value], (err, result) => {
if (err) {
console.info(err);
} else {
console.dir(result);
res.render("search", {
homeName: "watchingame",
pageName: "search",
routers,
result_value,
result
});
}
});
} catch (err) {
console.info(err);
}
};
Посмотреть
extends layouts/layout
block content
div
h2 #{result_value}
table
each board in result
tr
td=board.id
td
a(href=`/board${routers.boardDetail(board.id)}`)=board.title
td=board.nicName
td=board.writeDate
a(href=`/board${routers.boardCreate}`) write
However, the table should be the same as the database and search form string. If it's not accurate, it won't come out.
Я предполагаю, что это означает, что результат появляется только в том случае, если заголовок в запросе точно совпадает с заголовком элементов внутри таблицы.
Если вы хотите выполнить частичное сопоставление, например query=dog, matches=dogs, the dog, hotdog, etc...)
, вам следует использовать операторы LiKE
и %
.
Ниже приведен пример оператора SQL.
SELECT
id,
folder,
title,
nicName,
date_format(writeDate, '%Y/%m/%d %T') as writeDate
FROM board where title like %dog% order by id desc
Затем он попытается найти все, что содержит dog
в названии.
Итак, ваша строка sql
должна выглядеть примерно так:
'SELECT
id,
folder,
title,
nicName,
date_format(writeDate, '%Y/%m/%d %T') as writeDate
FROM board where title LIKE ' + connection.escape('%' + result_value + '%')
Если вы хотите узнать больше о SQL Like Operator
, ознакомьтесь с связь.
오 이런게 있었는지 몰랐네요~ 승인체크 눌러습니다~ 감사합니다!
답변이 도움이 되었다면 제 답변 왼쪽 상단에 있는 체크 표시를 눌러서 답변을 승인 (принять) 애 애 숴 숴 수 수 있. 승인 부탁드립니다~ (누군가 답변을 달았다면? - 스택오버플로우 가이드)