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

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

ただいまの
回答率

90.76%

  • PHP

    19189questions

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

  • HTML5

    3724questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTMLのinputからテキストをPHPのSQL構築文に送りたいのですが、Undefined indexとなってしまいます

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 97

yutanyan0521

score 3

 前提・実現したいこと

HTMLのinputからテキストをPHPのSQL構築文に送りたいのですが、Undefined indexとなってしまいます。

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

Notice: Undefined index: first_name in C:\xampp\htdocs\180418SQLtest-2\view.php on line 36エラーメッセージ

 該当のソースコード

<--!form.html"-->
 <form name="form1" method= "POST" action="view.php">
            氏 : <br>
            <input type="text" name="last_name">
            <br>
            名 : <br>
            <input type="text" name="first_name"> 
            <br>
            年齢 : <br>
             <input type="text" name="age">
             <br>
              <input type="submit" value="送信">
        </form>
--

//""view.php""
try{
    $pdo->beginTransaction();
     $sql = "insert into member (last_name, first_name, age) values (:last_name, :first_name, :age)";
    $stmh = $pdo->prepare($sql);
    $stmh->bindvalue(':last_name', $_POST['last_name'], PDO::PARAM_STR);
    $stmh->bindvalue(':first_name', $_POST['first_name'], PDO::PARAM_STR);
    $stmh->bindvalue(':age', $_POST['age'], PDO::PARAM_INT);
    $pdo->execute();
    $pdo->commit();
    print"データを".$stmh->rowcount()."件挿入しました。<br>";
} catch (PDOException $exception) {
$pdo->rollback();
print"エラー2:".$exception->getMessage();
}

 試したこと

HTMLのフォームを実行し、テキストを入力、送信すると、上記エラーメッセージが出ます。
変数、first_nameに問題があるようなのですが、何が問題なのか分かりません。

追加
ご教示いただいた
var_dump($_POST);
を追加で書いたところ、
array(3) { ["last_name"]=> string(6) "山田" ["firstt_name"]=> string(6) "太郎" ["age"]=> string(6) "30" } 
Notice: Undefined index: first_name in C:\xampp\htdocs\180418SQLtest-2\view.php on line 37
とメッセージが来ました。
これを見ると、HTML側からはデータの送信はされていて、view.php側に問題があるように思えるのですが。。。

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

テキスト、PHP7+MariaDB/MySQLのサンプルコードを実行しています。
NetBeansを使用しております。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mts10806

    2018/04/17 10:57

    ラベルと言うより配列のキーが存在しない場合に出るエラーですね。

    キャンセル

  • mts10806

    2018/04/17 10:58

    あと、多分関係ないですが view.PHP → view.php に修正しておいてください。

    キャンセル

  • mts10806

    2018/04/17 11:00

    念のため、 try{ の前で var_dump($_POST); と書いてみて出力内容を確認してみてください。変数の中身を展開するので、想定通りの情報が渡ってきているか確認できます。目で確認するよりも確実です。

    キャンセル

回答 2

+3

Undefined index: first_name って、配列にfirst_nameがないよって言ってます。
行番号も示されているのだから、その行に至る前の部分で、値を入れてないのでしょう。
あるいは、$_POST['first_name']をタイプミスして$POST['first_name']などとして参照しているとか。

パソコン上で動作確認していると、ファイルを保存し忘れてエディタ上で表示しているコードが動いていないこともあるので、
ファイルの保存・差し替えを確実にやりましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/17 11:24

    失礼します。
    エラーメッセージから $POST というタイプミスはないと思います。

    キャンセル

  • 2018/04/17 11:32

    エディターの修正保存、クッキーに問題があったようです。
    再保存、クッキーの削除でエラーを回避できるようになりました。
    大変勉強になりました。
    ありがとうございました<(_ _)>

    キャンセル

checkベストアンサー

+2

array(3) { ["last_name"]=> string(6) "山田" ["firstt_name"]=> string(6) "太郎" ["age"]=> string(6) "30" } 

firstt_name

となっています。
HTML側が<input type="text" name="firstt_name"> 
となっているのではないでしょうか?今一度ご確認ください。

また、ageですがPDO::PARAM_INTで登録する割りに30と全角になっています。
memberテーブルの定義次第ではありますが、このままですとSQLのエラーが起きる可能性があります。
入力内容をチェックするバリデーションを入れた上でDB更新の処理をした方が良いでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/17 11:31

    form.htmlを再保存、chromeのクッキーを削除でエラーが解決しました。
    form.htmlは修正したつもりでいたのですが、クッキーに修正前の情報が残っていたために誤った変数、firstt_nameが残ってしまっていたものと推測しています。(初学者なのでよく分からないのですが^^;)

    ご教示ありがとうございました。

    キャンセル

  • 2018/04/17 11:32

    なるほど。現在のform.htmlが提示の通りなら全くない話ではないかもしれません。
    それか、form.htmlに戻る際にブラウザバックしたとかview.phpをF5更新だけで確認してたとか。

    キャンセル

  • 2018/04/17 11:33

    ひとまず、解決したようで何よりです。

    キャンセル

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

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19189questions

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

  • HTML5

    3724questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

  • トップ
  • PHPに関する質問
  • HTMLのinputからテキストをPHPのSQL構築文に送りたいのですが、Undefined indexとなってしまいます