前提・実現したいこと
プログラミング初心者です。
Node.jsを学び、ローカル環境で簡単なwebサービスを作ろうとしています。
ざっくりお伝えすると、
ページAのフォームに入力した情報を、ページBで一覧表示していきたいです。
困っている事
現状、SQLのデータベース内に入れているデータは表示ができるのですが、ページBで入力した情報が表示されません。
おそらくSQLデータベースに正しくINSERTできていないのかもしれません。
追記:MySQLのデータベースをコマンドプロンプトで直接確認したところ、新しくデータの追加がされていないようです。
はじめてのプロダクト開発です。
事情により家で1人で作っており相談する先生などいないため、どなたか回答いただけますと幸いです。
該当のソースコード
ページA(フォーム用のページ)が/new-cost
で、ページB(一覧用のページ)が/cost-list
です。
**
「app.js」ファイルです。3段落目に、SQLデータベースへのINSERTを記載しているつもりです。
app.js
1app.get('/cost-list', (req, res) => { 2 connection.query( 3 'SELECT * FROM cost_info', 4 (error, results) => { 5 if (error) console.error(error); 6 console.log(results); 7 res.render('cost-list.ejs',{cost_info: results}); 8 } 9 ); 10}); 11 12app.get('/new-cost', (req, res) => { 13 res.render('new-cost.ejs'); 14}); 15 16 17app.post('/create', (req, res) => { 18 connection.query( 19 'INSERT INTO cost-info(amount_money) VALUES (?)', 20 [req.body.amountMoney], 21 (error, results) => { 22 if (error) console.error(error); 23 res.redirect('/cost-list'); 24 } 25 ); 26}); 27
ページA「new-cost.ejs」です。inputタグにnameもありますし、formタグにactionもmethodも記載しています。
new
1 <form action="/create" method="post"> 2 <input name="amountMoney" type="number"> 3 <input type="submit" value="作成"> 4 </form> 5
ページB「cost-list.ejs」です。SQLデータベースのテーブル名が「cost_info」なのですが、forEachを使って表示させようとしています。
cost
1 <ul class="table-body"> 2 <% cost_info.forEach((cost) => { %> 3 <li> 4 <div class="cost-data"> 5 <span class="date-column"><%= cost.id %></span> 6 <span class="expense-items-column"><%= cost.expense_items %></span> 7 <span class="amount-column"><%= cost.amount_money %></span> 8 </div> 9 </li> 10 <% }); %> 11 </ul> 12
補足情報
足りない情報があれば教えてください。
回答1件
あなたの回答
tips
プレビュー