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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Node.js

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1258閲覧

指定した行のデータを削除する

jijijijijij

総合スコア0

Node.js

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/08/31 12:31

編集2020/09/02 10:59

### リストの指定した行のデータを削除する

node.jsで買い物リストのwebアプリを作っています。
各データごとに削除ボタンを追加し、削除ボタンを押したら「〇〇を削除いたしますか?」というモーダルが浮かび上がり、再度削除ボタンを押せばデータが削除できるように設定いたしました。

しかし、2番目、3番目を削除しようとしても1番上のデータが削除されてしまいます。
調べてみてもどうにも糸口を見つけることが出来ず、皆様のお力をお借りできればと思います。

図解

1、トマト  削除 2、にんじん 削除 3、ゴボウ  削除

上記のように設定されているのですが、にんじん、ゴボウの横の削除ボタンを押してもトマトが削除されてしまいます。

該当のソースコード

削除ボタンのコードです。

HTML

1<input type="submit" value="削除" class="delete-show">

削除確認画面のコードです。恐らくここに問題があります。

HTML

1<div id="delete-form"> 2 <h2>"<%=item.name%>"を削除しますか?</h2> 3 <form action="/delete/<%=item.id%>" method="post"> 4 <input type="submit" id="submit-btn" value='削除する'> 5 </form> 6</div>

node.jsのコードです。ご参考までに。

node

1app.get('/delete/:id', (req, res) => { 2 connection.query( 3 'select * from items where id=?', 4 [req.params.id], 5 (error, results) => { 6 res.render('delete.ejs', {item: results[0]}); 7 } 8 ); 9}); 10 11app.post('/delete/:id', (req, res) => { 12 connection.query( 13 'delete from items where id = ?', 14 [req.params.id], 15 (error, results) => { 16 res.redirect('/index'); 17 } 18 ); 19}); 20

モーダルの設定です。

jquery

1$('.delete-show').click(function(){ 2 $('#delete-modal').fadeIn(); 3 });

試したこと 

モーダル(削除確認画面)抜きでは実現できたのですが、一旦確認画面を挟むと上手くいきませんでした...。恐らく確認画面内の「削除」ボタンのコードに問題があると思います。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/09/02 08:52

node.jsの`post`リクエストを処理する部分も記載してください。
jijijijijij

2020/09/02 11:00

失礼いたしました。追記いたしました。
退会済みユーザー

退会済みユーザー

2020/09/02 13:14

`/index`ページでデータの一覧と削除ボタンのリストが表示され、削除ボタンをクリックすると画面遷移無しに削除確認モーダルが表示される認識であってますか?削除確認モーダルの中で`/delete`ページをiframeで開いているということでしょうか?
jijijijijij

2020/09/02 13:25

前者の認識であっております。 削除ボタンを押しても画面遷移はなく、urlは‘/Index’のまま削除確認モーダルが表示される形です。
退会済みユーザー

退会済みユーザー

2020/09/02 14:27

削除確認モーダルの中身はiframeですか?それともJavaScriptで動的に生成していますか?
退会済みユーザー

退会済みユーザー

2020/09/02 14:38

試しにモーダル無しで似たような実装をしてみましたが、期待通りの動作となりました。 https://github.com/KazmaArakaki/Teratail/tree/288743 モーダルの`action`属性に適切な値が設定されていないのではないかと疑っています。
jijijijijij

2020/09/03 15:01

削除モーダルはJavascriptで作成しております。iframeで設定すればページ遷移なく削除ボタンを実装できるでしょうか? ありがとうございます!実際に参考にして変更してみましたところ、上手く削除ボタンと削除確認ボタンを実装することができました!詳細にコードも記載していただきまして本当にありがとうございます!!
退会済みユーザー

退会済みユーザー

2020/09/03 15:29

無事実装できたようでなによりです。回答なしで解決してしまったので、自己解決の方法をまとめて回答残して頂けると後学の方のためになるかと思います。 https://teratail.com/help#resolve-myself 削除モーダルをiframeで実装する場合window間で連携する必要があるので工夫が必要ですが、可能ではあります。まずはご自分で頑張ってみて詰まったらまた別の質問を作成してください。
jijijijijij

2020/09/04 11:21

そうですね!回答を追記いたします。 本当にありがとうございました!
guest

回答1

0

自己解決

解決いたしました。NovisHubさん、ありがとうございます。

node

1 2app.get('/delete/:id', (req, res) => { 3 connection.query( 4 'select * from items where id=?', 5 [req.params.id], 6 (error, results) => { 7 res.render('delete.ejs', {item: results[0]}); 8 } 9 ); 10}); 11 12app.post('/delete/:id', (req, res) => { 13 connection.query( 14 'delete from items where id = ?', 15 [req.params.id], 16 (error, results) => { 17 res.redirect('/index'); 18 } 19 ); 20});

html

1 <div class="wrapper"> 2 <div class="container"> 3 <div class="delete-form"> 4 <h2> 5 "<%=items.name%>"を本当に削除しますか? 6 </h2> 7 <form action="/delete/<%=items.id %>" method="post"> 8 <input type="submit" id="submit-btn" value="Delete"> 9 </form> 10 </div> 11 </div> 12 </div>

投稿2020/09/04 11:25

jijijijijij

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問