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

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

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

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

Q&A

解決済

6回答

1159閲覧

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

GooGoo2023

総合スコア7

PHP

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

0グッド

0クリップ

投稿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 ?>で囲んではいけないのですか?

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

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

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

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

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

guest

回答6

0

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

総合スコア10377

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

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

0

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

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

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

投稿2023/01/18 05:45

kaz.Suenaga

総合スコア2037

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

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

0

ベストアンサー

(株)技術評論社 出版 「パーフェクト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

総合スコア345

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

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

0

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

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

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

投稿2023/01/18 08:30

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

総合スコア80850

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

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

0

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

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

投稿2023/01/18 05:44

wing0283

総合スコア4

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

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

0

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

PHP

1<?PHP 2print <ul>

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

投稿2023/01/18 05:44

yambejp

総合スコア114843

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問