質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

675閲覧

inputに入力された文字列をmysqlと照合させてヒットしたい

hiiro46

総合スコア21

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2021/12/29 14:38

下記コードをご覧ください。

Javascript

1let mysql = require("mysql2"); 2 3let connection = mysql.createConnection({ 4 host : '*****', 5 user : '****', 6 password : '******', 7 database : '****' 8}); 9 10let valueWord = document.getElementById("search"); 11valueWord.addEventListener("keyup",(e) => { 12 if(e.code === 'Enter'){ 13 connection.query({ 14 sql:'select * from product_data where 商品名 like ?', 15 values : ['%' + valueWord +'%'] 16 },function(error,results) { 17 if(error) throw error; 18 console.log(results); 19 }); 20 21 connection.end(err => { 22 if(err) throw err; 23 }); 24 } 25});

※createConnection部分だけは個人情報のため隠しています。

実現したいこと

inputタグで入力した文字列をデータベース(mysql)へ照合させて、ブラウザへ出力する検索機能を作っている。
(アパレルECサイトの検索窓みたいな感じ)
しかし、問題点が二つ。

1,requireはブラウザで使えない
2,サーバー側での処理のため、ブラウザ専用のdocumentでは使えない

試したこと

1,requireはブラウザで使えない
これはbrowserify,webpackを使えば、使用可能と知れた。

2,documentに関しては下記のエラーが鳴った。

document is not defined

documentが定義されてないとのこと。
Next.jsの解決記事は多くあった。
しかし私の場合、Next.jsは使用してない。
とは言え、参考までに下記の記事を参考にコードを書いてみた。
ReferenceError

if(typeof window === 'object'){ let valueWord = document.getElementById("search"); valueWord.addEventListener("keyup",(e) => { if(e.code === 'Enter'){ connection.query({ sql:'select * from product_data where 商品名 like ?', values : ['%' + 'valueWord' +'%'] },function(error,results) { if(error) throw error; console.log(results); }); connection.end(err => { if(err) throw err; }); } }); }

nodeコマンドで実行するが、読み込みが止まって結果が帰って来ない。
何かしらの原因があると思われる。

知りたいこと

・inputに入力した文字を['%' + 'valueWord' +'%']へと入れたい。
・documentが使えないなら、ブラウザで入力した文字列をサーバー側で取得する方法があったりするのか。

念のためにHTMLも載せておきます。

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>search</title> 8</head> 9<body> 10 <div class="searchArea"> 11 <input type="search" name="searchData" id="search"> 12 </div> 13 14 <script src="script.js" type="module"></script> 15</body> 16</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/12/30 03:21

Node.jsでしたらサーバーサイドにてリクエストを受け付けるようになるのでは?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問