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

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

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

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

Q&A

解決済

PHPの基本的な書き方で、どこで勘違いしているのかを知りたいです。

GooGoo2023
GooGoo2023

総合スコア7

PHP

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

6回答

0グッド

0クリップ

589閲覧

投稿2023/01/18 05:35

PHPで掲示板を作成しており、コメントか名前が空であれば投稿できずにかつエラーマッセージを表示するようにしています。

私が書いたコードは

<?php if(isset($error_message)){ <ul class="erorrMessage"> foreach($error_message as $error){ <li>echo $error;</li> }</ul> } ?> 

なのですが、これでは動かず、正確には

<?php if(isset($error_message)){ ?> <ul class="erorrMessage"> <?php foreach($error_message as $error){ ?> <li><?php echo $error; ?></li> <?php } ?> </ul> <?php } ?>

と書くべきようなのですが、私の書き方のどこが行けないのかがわかりません。
教科書などには、<?php ?>で囲んだところをPHPとして認識すると書かれているのですが、私は全体をPHPとして認識するようか混んでいるのになぜ行けないのでしょうか?
もしかしたら、ulやli、ひいてはpタグのような
htmlのタグは一歳<?php ?>で囲んではいけないのですか?

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

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

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

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

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

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

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

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

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

回答6

4

PHP内でhtmlはそのまま書けない。
全部PHP内で書きたいならhtmlを出力する部分もPHPのコードとして書く。

php

1<?php 2if(isset($error_message)){ 3 echo '<ul class="erorrMessage">'; 4 foreach($error_message as $error){ 5 echo "<li>$error</li>"; 6 } 7 echo '</ul>'; 8}

"と'の使い分けはPHPの初歩なので分かってる前提。

(PHPを魔改造して直接htmlを書けるようにしたものもあったけど初心者は覚えなくていい)

投稿2023/01/18 05:57

kawax

総合スコア9986

yme2zk, miyabi_takatsuk, m.ts10806👍を押しています
penguin520❤️を押しています

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

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

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

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

2

教科書などには、<?php ?>で囲んだところをPHPとして認識すると書かれているのですが、私は全体をPHPとして認識するようか混んでいるのになぜ行けないのでしょうか?
もしかしたら、ulやli、ひいてはpタグのような
htmlのタグは一歳<?php ?>で囲んではいけないのですか?

はい、HTML は PHP ではないので、 <?php?> 内にPHPではない言語が含まれていることになり、エラーになります。

まずは、 php.net 基本的な構文 の各ページをよく読んで理解するといいかと思います。

投稿2023/01/18 05:45

kaz.Suenaga

総合スコア1999

yme2zk, miyabi_takatsuk👍を押しています

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

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

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

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

2

ベストアンサー

(株)技術評論社 出版 「パーフェクトPHP」 16ぺージ 『PHPとは?』より引用

PHPでは、 <?php と   ?> で囲まれた部分をPHPのプログラムコードとして解釈します。

PHPは、PHPというプログラム言語です。 HTMLは、HTMLというプログラム言語なので別物です。
質問の意図はわかるのですが、仕様なので、動かないものは動きません。

PHP内にHTMLを書くときの例として参考までにどうぞ。7年くらいまえに書いたPHPコードです。

php

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 5 6 7 <title>電卓</title> 8 9</head> 10<body> 11 12<form action="dentaku-test1.php" method="post"> 13 14 15<?php 16 17if (isset($_POST ["iko-ru"])) { 18 if($_POST ["keisan"] == "÷"){ 19 $_display = $_POST ["_sahen"] / $_POST ["_2keta"]; 20 echo '<input type="text" value=' .$_display.' name="_2keta">'; 21 } 22 if($_POST ["keisan"] == "×"){ 23 $_display = $_POST ["_sahen"] * $_POST ["_2keta"]; 24 echo '<input type="text" value=' .$_display.' name="_2keta">'; 25 } 26 27 if($_POST ["keisan"] == "-"){ 28 $_display = $_POST ["_sahen"] - $_POST ["_2keta"]; 29 echo '<input type="text" value=' .$_display.' name="_2keta">'; 30 } 31 32 if($_POST ["keisan"] == "+"){ 33 $_display = $_POST ["_sahen"] + $_POST ["_2keta"]; 34 echo '<input type="text" value=' .$_display.' name="_2keta">'; 35 } 36} 37 38else{ 39 40 if (isset($_POST ["keisan"])) { 41 if (isset($_POST ["_sahen"])) { 42 echo '<div id="sahen"><input type="text" value=' .$_POST ["_sahen"].' name="_sahen"></div>'; 43 echo '<div id="keisan"><input type="text" value=' .$_POST ["keisan"].' name="keisan"></div>'; 44 if (isset($_POST ["_2keta"])){ 45 $_display = $_POST ["_2keta"] . $_POST ["main"] ; 46 echo '<input type="text" value=' .$_display.' name="_2keta">'; 47 } 48 else {echo '<input type="text" value="' .$_POST ["main"].'" name="_2keta">'; 49 } 50 } 51 else{ 52 echo '<div id="keisan"><input type="text" value=' .$_POST ["_2keta"].' name="_sahen"></div>'; 53 echo '<input type="text" value=' .$_POST ["keisan"].' name="keisan">'; 54 } 55 } 56 57 else{ 58 if (isset($_POST ["main"])) { 59 if (isset($_POST ["_2keta"])){ 60 $_display = $_POST ["_2keta"] . $_POST ["main"] ; 61 echo '<input type="text" value=' .$_display.' name="_2keta">'; 62 //echo $_2keta; echo $_POST ["main"];// 63 } 64 else { 65 echo '<input type="text" value="' .$_POST ["main"].'" name="_2keta">'; 66 } 67 } 68 69 else{ 70 echo '<input type="text" value="0" name="display">'; 71 } 72 } 73} 74 75?> 76<br> 77 <input type="submit" value="CE" name="ce"> 78 <input type="submit" value="C" name="c"> 79 <input type="submit" value="BS" name="bs"> 80 <input type="submit" value="÷" name="keisan"> <br> 81 <input type="submit" value="7" name="main"> 82 <input type="submit" value="8" name="main"> 83 <input type="submit" value="9" name="main"> 84 <input type="submit" value="×" name="keisan"> <br> 85 <input type="submit" value="4" name="main"> 86 <input type="submit" value="5" name="main"> 87 <input type="submit" value="6" name="main"> 88 <input type="submit" value="" name="keisan"> <br> 89 <input type="submit" value="1" name="main"> 90 <input type="submit" value="2" name="main"> 91 <input type="submit" value="3" name="main"> 92 <input type="submit" value="" name="keisan"> <br> 93 <input type="submit" value="±" name="pm"> 94 <input type="submit" value="0" name="main"> 95 <input type="submit" value="." name="main"> 96 <input type="submit" value="" name="iko-ru"> 97</form> 98 99</body> 100</html>

投稿2023/01/18 05:44

編集2023/01/18 05:54
penguin520

総合スコア289

yme2zk, miyabi_takatsuk👍を押しています

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

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

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

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

1

もう少しシンプルな考え方として、
HTMLもあくまでそういう文字列の集合体なので、
PHPから「そういうHTMLになるようにPHP側で出力のコードを書くようにしてください。
ブラウザの「ソースの表示」などで見れるものが「PHPから出力されたもの」です。

どうしてもPHPタグを書きたくないのでしたら、SmartyやTwigなどのPHPテンプレートエンジンを利用すれば
ロジックと画面の分離は可能ですが、やはり「出力」が分かっている前提になります。

もしくはヒアドキュメントを用いれば見た目はシンプルになります(が全体像が見えなくなるので多用は避けた方がいいかもしれません)

投稿2023/01/18 08:30

編集2023/01/18 08:32
m.ts10806

総合スコア79980

miyabi_takatsuk👍を押しています

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

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

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

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

1

PHPとHTML、言語の違いによるものです。
英語しかわからない人に日本語交じりの文章では通じませんよね。
なので、英語は英語、日本語は日本語として扱うべきです。
ただし、英語も日本語もわかる人もいますから、
日本語を混ぜたいなら、これから日本語で話すよ!という前置き(宣言)が必要になります。
phpの場合は echo ''; などのコードになります。

私もよくわかりませんでしたが、上記のように考えるとわかりやすいかもです。

投稿2023/01/18 05:44

wing0283

総合スコア4

penguin520👍を押しています

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

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

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

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

0

PHPのソースの中に文字列指定もせずにタグはかけません

PHP

1<?PHP 2print <ul>

的なことをやろうとしています

投稿2023/01/18 05:44

yambejp

総合スコア109020

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

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

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

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

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

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

PHP

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