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

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

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

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

Q&A

解決済

1回答

665閲覧

php ファイルの変数をhtmlファイルで使いたい。

hellommm

総合スコア49

PHP

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

0グッド

0クリップ

投稿2018/03/01 09:37

やりたい事。
htmlファイルのフォームからテキストファイルに番号<>名前<>コメント<>時刻を保存し、
テキストファイルを読み込み、htmlファイルのフォームの下に番号<>名前<>コメント<>時刻を表示したい。

できないこと。
htmlのなかに組み込まれているphpをうまく表示することができない。

require_onceを使うと、phpファイルの変数をhtmlファイルで使うことができると
かいてあったのでやってみたが出来なかった。

<?php header('Content-Type: text/html; charset=UTF-8'); function h($str) { return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); } require_once('board.php'); ?> <html> <head> <meta charset="utf-8"/> <title>sample</title> </head> <body> <form method="post" action="board.php">//フォーム <p>名前</p> <input type="text" name="name" placeholder="山田太郎" required="required"> <p>コメント</p> <textarea type="text" name="com" required="required"> </textarea> <!-- <input type="hidden" name="token" value="<?=h(sha1(session_id())) ?>"> --> <input type="submit" value="送信"> </form> <p> <?php foreach ($text_rows as $text_row) {//配列でcount<>name<>comment<>data表示 if($text_row === ""){ continue; } $ret = explode("<>", $text_row); echo $ret[0]; echo $ret[1]; echo $ret[2]; echo $ret[3]; echo "<br>"; } ?> </p> </body> </html>

php

1<?php 2header('Content-Type: text/html; charset=UTF-8'); 3?> 4<html> 5 <head> 6 <meta charset="utf-8"/> 7 <title>sample</title> 8 </head> 9 <body> 10 11 <?php 12 13 function h($str) { 14 return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); 15 } 16 17 //session_start(); // 1 18 19 $name = (string)filter_input(INPUT_POST, 'name'); //名前フォーム値 文字列にキャスト 20 $comment = (string)filter_input(INPUT_POST, 'com');//コメントフォーム値 フィルタリングする 21 //$token = (string)filter_input(INPUT_POST, 'token'); // トークンセッション 22 23 $fp = fopen('board.txt', 'a+'); 24 if ($_SERVER['REQUEST_METHOD'] === 'POST'/* && sha1(session_id()) === $token */) { // postが送られて来てるか?CSRF対策 25 flock($fp, LOCK_SH); 26 $text_rows = file("board.txt"); 27 $count = count($text_rows);//行数をカウント 28 $add_text = ($count + 1)."<>".$name."<>".trim($comment)."<>".date('H時i分');//追加したい文章 29 array_unshift($text_rows, $add_text); 30 flock($fp, LOCK_EX); 31 fwrite($fp, $add_text."\n"); 32 flock($fp, LOCK_UN); 33 fclose($fp); 34 }else{ 35 echo "エラー"; 36 } 37 38 39 40 41 ?> 42 </body> 43 44</html> 45

テキストファイルにはうまく保存することができていますが、表示がうまいこと行きません。
まだまだ未熟者なので教えていただけると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

require_onceを使うと、phpファイルの変数をhtmlファイルで使うことができると

かいてあった

そんなふうに書いている本はないと思います。

htmlコード(bodyだのh1だのpだのtableだの)は
phpファイルにもhtmlファイルにも記述できますが、

htmlファイルはサーバー側でプログラム実行するわけではなく
htmlファイルに書いてあるままwebブラウザに向けて送信されるのに対して、

phpファイルであればサーバー上でphpコードを実行した結果を踏まえて
phpファイルに含まれているhtmlも一緒にwebブラウザに向けて送信されます。

なので、phpコードを実行してその結果をhtml内に組み込みたい場合には、
(ファイル名の末尾が)「~.html」や「~.htm」とするのではなく、
(ファイル名の末尾を)「~.php」とするのが正しいです。
そういう意味でphpファイルと呼びます。

そして、やりたいことを解釈するに、

テキストファイルに番号<>名前<>コメント<>時刻を保存

というのはフォームで受信した投稿内容を
データを保存する目的でテキスト形式のファイル(データファイルと呼ぼう)に保存する
という意味でしょうね。
フォームで投稿を受信するたびに、
データファイルを編集して改めて同じデータファイルに保存し直す必要があると。

その、保存してあるデータファイルをphpの処理で読み出して、
投稿用フォームの下に展開して表示しようとしているのでしょうね。
いわゆる簡易掲示板ですね。

それをこの場でイチから教えるのはとても大変ですし、
一気に作り上げるのではなく

・フォームの表示
・投稿を受信してデータファイルに保存
・指定の番号の投稿データをデータファイル上から削除
・指定の番号の投稿データを投稿フォーム上に再現
・再現した投稿フォームからの投稿をデータファイルに編集して保存

といったステップで徐々に作り上げていけばいいと思います。

投稿2018/03/01 09:57

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hellommm

2018/03/02 04:27

回答ありがとうございます! m6uさんのおっしゃるとおりでございます。 今徐々にやっていて、簡要掲示板の消去でまた悩まされております。。 また質問すると思うので、その時はよろしくお願いいたします!! ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問