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

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

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

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

905閲覧

PHPのフォームについて(PDO)

m_yu

総合スコア0

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/11/01 00:53

#PHPのフォームについて

PHP初心者です。
文章が少し分かり辛いかもしれませんが、ご理解いただけると幸いです。

現在、私がHTMLで作ったフォームには5つの項目があり、4つはBOOKテーブル、1つのAuthorNameという項目はAuthorテーブルに繋がってます。
(本の登録のデータベースで本の情報と著作者の情報です。)
2つのテーブルはどちらもAuthorIDがあります。0. 番号リスト

分からない部分というのが、例えばフォームを送信したとき、Authorテーブルに送信されたAuthorName値が
元からそのAuthorテーブルに入ってる値と一致した場合、そのAuthorNameとつながってるAuthorIDを会得し、
BOOKテーブルの中にはそのAuthorIDを反映させたいです。

例えばフォームでAuthorNameの部分に”AAA”として(他4つの横目も埋める)送信したとき、
もしAuthorテーブルのAuthorNameのカラムに”AAA”が元からあった場合、その隣り合ったAuthorIDを
BOOKテーブルにあるAuthorIDに反映させたいです。
AuthorID(Authorテーブル) 1 なら AuthorID(BOOKテーブル)も 1になる、というようにです。

ちなみに下記コードは全コードではなく、Authorの部分のみ抜粋しました。
データベースには問題なくつながっています。

分かり辛い部分が多々あり、申し訳ありませんが、何卒アドバイス等いただけると幸いです。

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

if(!empty($_POST["author"])){ $tb_author = testInput($_POST["author"]); $stmt = $conn->prepare("SELECT AuthorID, Name FROM author WHERE Name = :auname"); $stmt->bindParam(':auname', $tb_author); $stmt->execute(); $row = $stmt->fetch(); // try ( ){ // この部分がどうしたらいいか分かりません。 // }catch (PDOException $e) { // echo "Error!!: " . $e->getMessage() . "\n"; // ;exit() // } }

該当のソースコード

### 試したこと 以下は残りのフォームの4項目の部分です。(BOOKテーブルに直接送信されます) BOOKテーブルにAuthorIDがあるので、それが現状うまく値が入ってくれないので NULLとなりエラーが起きてしまっております。 if (!empty($_POST["bookname"]) && !empty($_POST["ori_bookname"]) && !empty($_POST["pub_year"]) && !empty($_POST["genre"]) && !empty($_POST["mili_sold"]) && !empty($_POST["lang"]) && !empty($_POST["bookcover"])) { $tb_bookname = testInput($_POST["bookname"]); $tb_ori_bookname = testInput($_POST["ori_bookname"]); $tb_pub_year = testInput($_POST["pub_year"]); $tb_genre = testInput($_POST["genre"]); $tb_mili_sold = testInput($_POST["mili_sold"]); $tb_lang = testInput($_POST["lang"]); $tb_book_img = testInput($_POST["bookcover"]); try { $stmt = $conn->prepare("INSERT INTO book(BookTitle, OriginalTitle, YearofPublication, Genre, MillionsSold, LanguageWritten, coverImagePath) VALUES (?, ?, ?, ?, ?, ? ,?)"); $stmt->execute(array($tb_bookname, $tb_ori_bookname, $tb_pub_year, $tb_genre, $tb_mili_sold, $tb_lang, $tb_book_img)); header('Location:../view/pages/addbook.php'); } catch (PDOException $e) { echo 'Database error! Please try it again!!!!'; exit(); } }

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/11/01 02:05

AAAがユニークに一つ決定できるよう、フォームに一工夫(プルダウンリストから選ばせるとか)がほしいかな
m_yu

2020/11/01 04:48

回答ありがとうございます。 プルダウンリスト使用したいのですが、課題でこちらTYPE=TEXTでしか 駄目見たいです…。
m.ts10806

2020/11/01 06:19

>課題で 出題者に聞いてください。 要件を握っているのが出題者なのであれば「まっとうなエンジニアとしてのアドバイス」はコードで実際起きてる問題くらいしかないです(それも要件満たさなければNGという前提があるならそれすらも他人にはできない可能性もある)
m_yu

2020/11/01 06:35

出題者からは事情により連絡がとれないため質問をしました。 何回も調べてもなかなか出てこなかったため、質問をいたしました。
m.ts10806

2020/11/01 06:37

全ての提示が難しい 要件の変更はできない のであれば他者が言えることはないのです。
m_yu

2020/11/01 06:41

提示したコードが今回エラーを起こしてる ものの殆どですし、残りのコードはデータベースにつなげるためのコードが2行ほどあるのみです。 こちらは答えの100%を求めていたつもりはありません。 ほんの欠片でも、答えに繋がるアドバイスを 頂けたらと思って質問をしたつもりでした。 とりあえずはもう少しだけ、他の方の回答を待つつもりです。 アドバイスを頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問