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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Jinja2

Jinja2は、Python用のテンプレートエンジンです。テンプレートファイルの読込や文字列の埋込、分岐/ループの制御文のサポートなどの機能を持ちます。HTMLやXML生成によく使用されますが、どのような文書でも生成することが可能です。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

590閲覧

フロント画面で入力された「食材名」をSQLITE3のmydatabaseの[好き]テーブルに挿入したい

TakadaKeita

総合スコア0

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Jinja2

Jinja2は、Python用のテンプレートエンジンです。テンプレートファイルの読込や文字列の埋込、分岐/ループの制御文のサポートなどの機能を持ちます。HTMLやXML生成によく使用されますが、どのような文書でも生成することが可能です。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2023/07/30 00:53

編集2023/08/01 11:13

まず初めに、下記のサイトでも質問をさせていただいております。
情報が更新されましたら随意反映させていただきます。
https://ja.stackoverflow.com/users/59301/keita-takada?tab=questions

実現したいこと

[http://127.0.0.1:5000/proposed]画面の
[食材名]欄で入力されたものを、「追加」ボタンが押されたら、pythonとhtmlの処理を通して、テーブル名「好き」リストに挿入したいです。

イメージ説明

前提

pythonで、ユーザーが入力した食材をデータベースで保存するシステムを作っています。
ローカルサーバーで試している段階です。
「好き」リストの写真欄は空欄のままで挿入します。

画面に表示されている「採用」ボタンは、表示されている食材を同じく「好き」リストに挿入する挙動なのですが、これはうまく機能しています。

発生している問題・エラーメッセージ

「追加」ボタンが押されたら、「好き」リストに挿入する機能を実装しても、エラーにはなりませんが、コマンドプロンプト上でリストを確認しても、追加されていませんでした。

イメージ説明

sqlite> SELECT * FROM 好き;
1|鶏肉|鶏肉.jpeg
2|豚肉|豚肉.jpeg
3|牛肉|牛肉.jpeg
4|羊肉|羊肉.jpeg
sqlite>

(コマンドプロンプト上) 「好き」リストは変わらないまま、、、。

該当のソースコード

下記のコードのインデントを直して

**app.py
**

from flask import Flask, render_template, request, session, redirect, url_for
import sqlite3

app = Flask(name)
db_path = 'mydatabase.db'

<!-- (中略) -->

@app.route('/proposed', methods=['GET', 'POST'])
def proposed():

<!-- (中略) -->
elif 'add' in request.form: # 「追加」ボタンの処理 conn = sqlite3.connect(db_path) cursor = conn.cursor() # フォームから食材名を取得 food_name = request.form.get('foodName') # 食材名が入力されている場合は「好きリスト」に追加 if food_name: try: # 写真は空のままで挿入する例としてNoneを指定 cursor.execute("INSERT INTO 好き (名前, 写真) VALUES (?, ?)", (food_name, None)) conn.commit() conn.close() except Exception as e: print("エラー:", e) # フォームを非表示にするためにJavaScriptを使用(ここでフォームを非表示にする処理を行う) return render_template('proposed.html', suggested_name=session['current_name'], suggested_photo=session['current_photo'], added=True) # 追加処理が終わった後に再度提案画面を表示するためにリダイレクトを行う return redirect(url_for('proposed'))
<!-- (後略) -->

**proposed.html
**

<!-- (前略) -->

<button type="button" onclick="addFood()">追加</button>

</form> <div id="addForm" style="display: none"> <h3>食材名を入力してください:</h3> <form method="post" action="/proposed"> <input type="text" name="foodName" required /> <button type="submit" name="add">追加</button> </form> </div> <script> function addFood() { var addForm = document.getElementById("addForm"); addForm.style.display = "block"; } </script> <!-- (後略) -->

データベース(好きリスト)の情報

sqlite> PRAGMA table_info(好き);
0|id|INTEGER|0||1
1|名前|TEXT|1||0
2|写真|TEXT|0||0

試したこと

新たに「add.html」に画面推移しようとも試みましたが、うまくいきませんでした。
chat gptに同様の問題を投げかけました。修正されたコードでは改善されませんでした。

補足情報(FW/ツールのバージョンなど)

コードで使用されている主なFW(フレームワーク)とツールは以下の通りです:

・Flask
・SQLite3
・Jinja2

また、コードエディタはVisual Studio Codeです。

他の必要な情報に関しても、お答えいたします。
どうか、ご回答のほど宜しくお願い致します。

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

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

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

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

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

FiroProchainezo

2023/07/31 02:57

インデントが崩れていてコードが読めません。 質問を修正し、正しいマークアップをお願いします。
TakadaKeita

2023/08/02 00:43

インデントの方を修正してみましたが、いかがでしょうか。
FiroProchainezo

2023/08/02 05:42

さすがにこれで修正したと言われましても・・・。 1回自分の質問分を見てみてはいかがでしょうか? 適切にマークアップされていないのが分かるはずです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問