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

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

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

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

2回答

2291閲覧

PHP、if-else文の[else]部分が機能しない。

tomt

総合スコア1

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2020/12/11 07:39

・投稿者:PHPは勉強して3日目。
・Java(他プログラミング)の基礎は勉強済み。

初めまして。現在、Kindle書籍「PHPビギナーズガイド:ビギナー必須のWEB開発言語をマスターせよ!」を読みながら勉強しています。
その中で、フォームの送信に関するプログラムを入力中に、期待値と異なる結果になってしまったため、質問いたします。

期待値としては、if-else文で、
値が入力されたら「あなたは、「{$input}」と書きました。」、
値が入力されなかった場合は「なにか入力してください」になればいいはずなのですが、
値を入力しなかった場合でも「あなたは「」と書きました。」と出力されてしまいます。

else部分に、値を入力しなかった場合(値がnullの場合?)の処理を何か入れなければいけないのでしょうか?
その場合はどんなコードを加えればよいのか、もし分かりましたら教えていただきたいです。

―――コード―――――――――――――――――――――――――――――――――

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>sample page</title> </head> <body> <h1>Hello PHP!</h1> <div> <?php if(isset($_POST['text1'])) { $input = $_POST['text1']; $result = "あなたは、「{$input}」と書きました。"; } else { $result = "なにか入力してください。"; } echo htmlspecialchars($result); ?> </div>
<form method ="post" action="./arr.php"> <input type="text" name="text1"> <input type="submit"> </form>
</body> </html>

――――――――――――――――――――――――――――――――――――――――――

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

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

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

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

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

guest

回答2

0

ベストアンサー

issetは、「変数が未定義ではなく、なおかつ、NULLでもない」ことをチェックする関数です。フォームから送信された空文字列''が設定されている場合には、issetは成功します。

何も入力しなかった場合のチェックは、issetで未定義(かつNULLではない)をチェックした後で、空文字列との比較を行なってください。

PHP

1if (isset($_POST['text1']) && $_POST['text1'] !== '') { 2 () 3} else { 4 () 5}

投稿2020/12/11 07:52

編集2020/12/11 07:56
Daregada

総合スコア11990

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

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

tomt

2020/12/11 08:11

プログラムが正常に動きました!ありがとうございます!
guest

0

$_POST変数はarray配列のため、POST送信されていないときは、
要素が0個のarray配列となり、isset関数ではnullではないのでtrueとなります。
$_POSTのまま条件式を書きたいのであれば、empty関数を使用しましょう。

<?php if(!empty($_POST['text1'])) { $input = $_POST['text1']; $result = "あなたは、「{$input}」と書きました。"; } else { $result = "なにか入力してください。"; } echo htmlspecialchars($result); ?> </div>

投稿2020/12/11 07:51

K_Y_M

総合スコア100

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

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

tomt

2020/12/11 08:13

それで結果がtrueになってしまっていたんですね…! とても分かりやすいご説明をありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問