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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

877閲覧

phpの中に条件を満たした場合のみhtmlをはさむ方法

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/05/26 02:05

編集2021/05/26 09:17

php

1<?php if (isset($_POST['a'])) : ?> 2<input type="text" name="b" value="1"> 3<?php endif; ?>

aがPOSTされていたら、name=b,value=1のテキストフォームを表示するコードですが、
ここには、phpはifの条件のみが書かれていますが、
php部分にもっとコードを盛り込みたい場合は、どうすれば良いのでしょうか。例えば、

php

1$a = $_POST['a']; 2$a++;

等と言う計算を加えたい場合、

php

1<?php if (isset($_POST['a'])): 2$a = $_POST['a']; 3$a++; 4?> 5<input type="text" name="b" value="1"> 6<?php endif; ?>

php

1<?php if (isset($_POST['a'])) 2$a = $_POST['a']; 3$a++; 4: ?> 5<input type="text" name="b" value="1"> 6<?php endif; ?>

等と書いてもうまくいかないのですが・・・。

回答を受けて、
実は、自分のやりたい事としては、このコードの後にもHTMLコードがあるのですが、
この条件を満たす場合のみ、ここまでのコードで処理を終了させたい(後に続くHTMLコードを表示させたくない)のですが、どうすれば良いのでしょうか。

つまり、htmlの途中で処理を終了させ、以下に続くコードを実行させないように、したいわけです。
exitはphpなので、今の場合は使えないです。

1つ思いついたのが、if文を2つに分ける方法です、つまりこのコードの下に、
exitコードのみを入れたif文を、phpで新たに作るという方法です。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/05/26 02:18 編集

「うまくいかない」では意図が伝わりません。こうなることを想定して、こういうコードを書いたが、結果こうなっている、と順序立てて説明してください。
1T2R3M4

2021/05/26 02:19

>値を代入したり、計算したり、出力したりしたい)場合は、どのように書けば良いのでしょうか? お手元の入門書に記載はないのですか。
退会済みユーザー

退会済みユーザー

2021/05/26 09:15 編集

質問を、具体的になるよう編集しました。 また、追記しましたお願いします。
退会済みユーザー

退会済みユーザー

2021/05/26 05:16 編集

「うまくいかない」では意図が伝わりません。何を期待していて、結果どうなったのかの説明が足りません。
guest

回答2

0

ご提示のソースで正しくエラーになりますが、どういう想定なのでしょうか?
if条件の中で$aに値をいれているので
偽のときに$aは宣言されていないので参照すればエラー(Notice)になるのは必然です

投稿2021/05/26 02:21

yambejp

総合スコア116734

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

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

退会済みユーザー

退会済みユーザー

2021/05/26 09:15 編集

質問を、具体的になるよう編集しました。  また、追記しましたお願いします。
guest

0

yambejpさんが回答しているとおりだけど、
後段のhtml出力箇所で使うための変数をphpコードの冒頭で初期化しないといけなくて、
if() { ~ } の { ~ } の内側だけに記述してしまうと、ifの条件が成り立たなかったときに変数が存在しないケースが出てしまうのでアウト。

後段のhtml出力箇所をシンプルにするために、
前倒しして必要な処理(変数の宣言、初期化、出力用文字列の代入など)をやっておくもの。


この条件を満たす場合のみ、ここまでのコードで処理を終了させたい(後に続くHTMLコードを表示させたくない)のですが、どうすれば良いのでしょうか。

exitかな?

素のphpなんて、ゆるい言語なので、どうとでもなる、好きにできる、
という元も子もない回答では納得しないでしょうけど、
表示制御用フラグ変数による分岐でやってもいいわけです。

php

1<?php 2$flag = 0; // 1とか2とか 3 4/* 5なんやかんやで、何かの処理で $flag に 1 だったり 2 だったりを代入する処理があるとして 6*/ 7 8if ($flag === 1) : 9?> 101のときのみのHTML 11<?php 12elseif ($flag === 2) : 13?> 142のときのみのHTML 15<?php 16endif;

などとしてもいい。

ただし、その場合分けしたhtmlのボリュームが何十行にも渡る場合、
可読性が下がるため、用心するべき。

投稿2021/05/26 02:19

編集2021/05/26 09:25
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2021/05/26 09:15 編集

つまり、条件とは無関係に変数等は用意しておかなくてはならないんでしょうか? 自分は、ある条件のもとで、変数等も準備しておくコードが書きたかったのですが、 この場合だと難しい?  また、追記しましたお願いします。
退会済みユーザー

退会済みユーザー

2021/05/26 05:25

存在しない変数を参照することで、Notice: Undefined variable とかNotice: Undefined indexなどのメッセージが出ます。 お行儀の悪い書き方になります。 メッセージを表示するかしないかを決定するフラグ変数を設けて条件分岐させるとしても、 そのフラグ変数はifの条件に依らず存在していないといけなくなるかと。 で、あれば、そもそもメッセージ表示用変数をカラ文字列で初期化しておけば、 if()の条件が成り立たなかったときにも表示に影響が出ませんし。 フラグ変数とメッセージ変数と構えずともメッセージ変数のみで済ませられたりするわけです。 (メッセージ表示用にspan要素で囲ってスタイルシートを適用する場合でもカラ文字列なら影響がない。)
退会済みユーザー

退会済みユーザー

2021/05/26 09:29

本格的に出力の制御を器用にやりたくなったら、テンプレートエンジンに手を付けてもいいかもしれないが、 質問文中のコードから察するにまだ早い気がします。 まずは基礎固めを。
退会済みユーザー

退会済みユーザー

2021/05/26 10:00

まぁ結局条件if2個作って後半でexit、ですよね、そうしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問