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

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

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

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

Q&A

解決済

フォームで入力チェックをするプログラムを書いていますが、エラーが直せません…

ott0000
ott0000

総合スコア21

PHP

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

3回答

0グッド

0クリップ

304閲覧

投稿2022/11/02 03:35

前提

PHPで質問フォームを作っており、文字が11文字以上や空白だと「入力は必須入力です。10文字以内でご入力ください。」が出るなどの入力チェックを行っています

実現したいこと

入力チェックをした際に、11文字以上や空白だとメッセージがきちんと出るが、10文字以下、入力がある場合に
「Warning: Undefined array key "name" in C:\xampp\htdocs\04_php_form\contact1.php on line 44」のエラーが出ます。

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

Warning: Undefined array key "name" in C:\xampp\htdocs\04_php_form\contact1.php on line 44

該当のソースコード

<?php $error = []; if($_SERVER['REQUEST_METHOD'] === 'POST'){ if($_POST['name'] === ' ' or strlen($_POST['name']) > 10){ $error['name'] = 'blank'; } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="base2.css"> <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet"> <meta name="viewport" content="width=device-width,initial-scale=1"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body> <div class="otoiawase"> <div class="otoiawase2"> <h1>お問い合わせ</h1> <div class="nyuryoku"> <form method="post" action="" > <p class="nyuryokus">氏名<span>*</span></p> <?php if($error['name'] === 'blank'): ?> <p class="error_msg">氏名は必須入力です。10文字以内でご入力ください。</p> <?php endif;?> </div> <input class="bottun" type="submit" value="送信"></a> </form> </div> </div> </div> </body> </html>

試したこと

$error['name']が'blank'ではないときに空になるのかと思い、
elseifで<p></p>と書いてみたが変わらなかった。

エラー名で調べてみて、isset()で変数がセットされているかを調べ「true」が返された場合のみ処理を実行するようにする方法も利用できます。
という記事を見たので if(isset($_POST['name']) === ' ' or strlen(isset($_POST['name'])) > 10){}
で実行してみたが変わらなかった。

youtubeの「フォームを作ってみよう」を見ながら作成しているのですが、
どうしても何が間違っているかわかりませんでした。
よろしければエラーの原因のご指摘お願いいたします。

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

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

以下のような質問にはグッドを送りましょう

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

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

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

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

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

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

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

適切な質問に修正を依頼しましょう。

回答3

1

色々とツッコミどころがありそうなんですが、とりあえずWarningがでてるのは

<?php if($error['name'] === 'blank'): ?>

の行では? こちらも必要に応じてisset()を使わないと、Undefined array key "name"が出ると思いますよ。$error['name']が存在しない可能性もあるのにいきなり$error['name']と書いたらそのアラートは出ますので。

isset()の使い方も間違ってますので、以下のサイトを参考にしてください(isset()truefalseしか返しませんので、>10とかやっても意図したとおりに動きません)。

参考)
https://www.php.net/manual/ja/function.isset.php
https://www.fenet.jp/dotnet/column/language/7700/

投稿2022/11/02 03:54

AbeTakashi

総合スコア3974

m.ts10806👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

0

自己解決

ご指摘にあったようにいろいろ間違っていたので一から書き直しました!
アドバイスありがとうございます

投稿2022/11/04 01:31

ott0000

総合スコア21

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

0

PHP

1<?PHP 2$name=filter_input(INPUT_POST,'name',FILTER_VALIDATE_REGEXP,["options"=>["regexp"=>"/\A.{1,10}\z/u"]]); 3if(!is_null($name)){ 4 if($name!==false){ 5 print "入力は「".htmlspecialchars($name)."」"; 6 }else{ 7 print "入力は必須入力です。10文字以内でご入力ください。"; 8 } 9} 10?> 11 12<form method="post"> 13<input name="name"> 14<input type="submit" value="send"> 15</form>

投稿2022/11/02 03:51

yambejp

総合スコア109126

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

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

PHP

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