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

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

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

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

Q&A

解決済

2回答

4075閲覧

phpのiframe出力について

miya_shiro

総合スコア8

PHP

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

0グッド

0クリップ

投稿2020/10/02 01:20

編集2020/10/02 04:24

もし、データが入っていなければ、何も表示しない、
もしデータが入っていればiframe(google map)を表示したい。

という構文を書きたいのです。

自分で書いていないファイルを手直ししなくてはいけません。

iframeの中にもphp echoが入っていたりするのでうまくいかないのでしょうか..?
ダブルクォートもたくさんあるし、、、なんだかおかしい感じがします。

php

1 2<?php if(empty($data['Facility']['detail_mailaddress'])) { 3  echo ""; 4}else{ 5  echo "<div><iframe src="https://maps.google.co.jp/maps?output=embed&q=<?php echo $data['Facility']['latitude']; ?>, <?php echo $data['Facility']['longitude']; ?>" width="600" height="450" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false"> </iframe></div>" 6?>

どなたかご教授いただけませんでしょうか。

宜しくお願いします。

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

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

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

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

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

m.ts10806

2020/10/02 01:38

>ダブルクォートもたくさんあるし、、、なんだかおかしい感じがします。 自分で書いたんですよね?
miya_shiro

2020/10/02 04:12

ご指摘ありがとうございます。 自分で書いたものではないファイルを直しております。。 iframeの部分は最初から記載があり、元からあったものなので、下手にいじれないと思ってしまって。 もし、データが入っていなければ、何も表示しない、 もしデータが入っていればiframe(google map)を表示したい。 の解決策が知りたいです。
m.ts10806

2020/10/02 04:19 編集

メンテナンスを自身でしていくのでしたら答えだけもらってこの場だけ乗り切っても同じようなことで躓き続けることになります。PHPマニュアル確認してください。 あと、1つ目のコメントについてはどうでしょうか。質問の仕方(具体的な記載が必要なこと)、およびPHPマニュアルを提示しています。
miya_shiro

2020/10/02 04:26

PHPマニュアル確認してください。 >それで解決しなかったので、こちらに質問しました。 今『うまくいかない』を削除しました。
m.ts10806

2020/10/02 04:28

「起きてる現象」を記載してほしかったのですが・・。 https://teratail.com/help/question-tips#questionTips3-4-2 提示のコードが全てでしたら、エラーが出ます。 構文エラーですね。 そして、構文エラー解消しても$dataがどのように渡されたりするのか、何が入っているのかこちらではわからないので構文エラーのみの指摘となり、想定の動作できるようになるとは限りません。
m.ts10806

2020/10/02 04:45 編集

>それで解決しなかったので、こちらに質問しました。 確認しただけで解決するはずがなく、試す必要があります。 引用符(二重引用符)部分については間違いなく参考にできる部分です(もちろんそれだけが問題ではないですが、試したなら試したこと書かないとどこまでどう進んだかわからない) 回答に出ているヒアドキュメントにも触れられています。
guest

回答2

0

ベストアンサー

PHPにおいて引用符(')、二重引用符(")は「囲われた内容を文字列とする」特別な役割があります。
HTML内の二重引用符についても「属性値を囲う」意味合いはありますが、PHPからすれば単に文字列の1つでしかありません。

PHPマニュアル:文字列

引用符をリテラルとして指定するには、バックスラッシュ () でエスケープする必要があります
二重引用符
文字列が二重引用符 (") で括られた場合、 PHP は、以下のエスケープシーケンスを特殊な文字として解釈します
エスケープされた文字
" 二重引用符

あと、PHPに限らず、文字列出力以外の場所での全角スペースは基本的にNGです。

[ ][ ]echo ""; }else{ [ ][ ]echo "

実行不可能なエラーなので引用符やecho以前にここで止まってます。
PHP Parse error: syntax error, unexpected '""' (T_CONSTANT_ENCAPSED_STRING)

スペースなおしたところでようやく引用符にたどり着きます。

php

1<?php if(empty($data['Facility']['detail_mailaddress'])) { 2 echo ""; 3}else{ 4 echo "<div><iframe src="https://maps.google.co.jp/maps?output=embed&q=<?php echo $data['Facility']['latitude']; ?>, <?php echo $data['Facility']['longitude']; ?>" width="600" height="450" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false"> </iframe></div>" 5?>

PHP Parse error: syntax error, unexpected 'https' (T_STRING), expecting ';' or ','

あとは文字列の連結の仕方でしょうね
文字列演算子

当然あげられているように「echoの中にecho」はありえません。出力は1度で十分です。
というか、これくらいならPHPの変数のところだけ出力でもいいんじゃないでしょうか。

php

1<?php if(empty($data['Facility']['detail_mailaddress'])) { 2 echo ""; 3}else{ 4 ?><div><iframe src="https://maps.google.co.jp/maps?output=embed&q=<?php echo $data['Facility']['latitude']; ?>, <?php echo $data['Facility']['longitude']; ?>" width="600" height="450" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false"> </iframe></div>" 5

無駄に長い文字列を一気に扱うと今回のような不具合の要因になりえます。

ただ、構造が下記のようになっていますので

php

1if() { 2}else{

ここも構文エラーです。if閉じられてません。

あとなにも出力しないなら何も書かなくていいようにも思います。

php

1if(!empty($data['Facility']['detail_mailaddress'])): ?> 2<div><iframe src="https://maps.google.co.jp/maps?output=embed&q=<?php echo $data['Facility']['latitude']; ?>, <?php echo $data['Facility']['longitude']; ?>" width="600" height="450" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false"> </iframe></div>" 3<?php endif ?>

あとはすでに指摘があるように?output=embed&q=123, 456とスペース入っててもちゃんと動くかは検証してください。

投稿2020/10/02 05:03

m.ts10806

総合スコア80875

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

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

miya_shiro

2020/10/02 21:05

仕事中であまり時間もなく、少々焦ってしまいました。 時間を割いてご回答いただき感謝いたします! とてもわかりやすいです! とても勉強になりました。
guest

0

処理の競合が見受けられます

echo <<<eof <div><iframe src="https:...&q={$data['Facility']['latitude']},{$data['Facility']['longitude']}" (以下略)></iframe></div> eof;

投稿2020/10/02 01:30

yambejp

総合スコア116835

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

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

yambejp

2020/10/02 02:37 編集

全角スペースのインデントとか、urlのポラメータにスペースとか 直すべきところが散見されました
miya_shiro

2020/10/02 04:17

回答ありがとうございます。 もともとあったものをそのままコピペしてしまいました。 長文のechoはこういった書き方があるのですね! 教えて頂きありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問