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

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

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

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

Q&A

解決済

2回答

2100閲覧

php mysql html

hyskyo

総合スコア79

PHP

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

0グッド

0クリップ

投稿2016/01/18 09:29

編集2016/01/18 12:05

PHPで書いたファイルphpの実行結果をhtmlファイルへ書き出したかったのでネットとかで調べて、
file_put_contentsでできそうでしたので、使ってみましたが、phpファイル中にincludeで外部のphpやdb接続のphpファイルなどの外部のファイルはhtmlとして書き出せなくてエラーになってしまいました。

ご教授お願いいたします。

実際のファイルが下記のような感じです。

index.php <?php ob_start(); ?> <?php include "includes/header.php"> <?php include "includes/db.php"> <?php ここはindex.phpに書いてあるphpソースやhtmlなどです ?> <?php include "includes/footer.php"> <?php //php実行結果をindex.htmlにて出力 file_put_contents( 'index.html', ob_get_contents() ); ob_end_clean(); ?>

上記で下記のエラーが出ました。外部のファイルをincludeを使っているとhtmlの出力ができないみたいです。

Warning: include(./db.php): failed to open stream: o such file or directory in /Applications/MAMP/htdocs/includes/header.php on line 26 Warning: include(): Failed opening './db.php' for inclusion (include_path='.:/usr/local/php5/lib/php') in /Applications/MAMP/htdocs/includes/header.php on line 26 Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in /Applications/MAMP/htdocs/includes/header.php on line 45 Notice: Undefined index: REQUEST_URI in /Applications/MAMP/htdocs/index.php on line 22

ao_love さん:
ありがとうございます。
一部分を出しますが宜しくお願いします。

例えば.navi.php 下記:

<?php ob_start(); ?> <?php include "includes/header.php"; ?> <?php include "./db.php" ?> <div class="navi"> </div> <?php $query = "select * from navi"; $navi= mysqli_query($connection, $query); while($row = mysqli_fetch_assoc($navi)){ $title = $row['title']; echo "<li style='width:150px; text-align:center'><a href='category.php?category=$cat_id'>{$cat_title}</a></li>"; } ?> ?>

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

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

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

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

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

ao_love

2016/01/18 10:43

可能な範囲でいいので、includeしているPHPやindex.htmlのソースも提示してください。
hyskyo

2016/01/18 14:31

ao_love さん: ありがとうございます。 一部分を出しますが宜しくお願いします。 例えば.navi.php 下記: <?php ob_start(); ?> <?php include "includes/header.php"; ?> <?php include "./db.php" ?> <div class="navi"> </div> <?php $query = "select * from navi"; $navi= mysqli_query($connection, $query); while($row = mysqli_fetch_assoc($navi)){ $title = $row['title']; echo "<li style='width:150px; text-align:center'><a href='category.php?category=$cat_id'>{$cat_title}</a></li>"; } ?> ?>
guest

回答2

0

たぶんもっと他にいい方法がたくさんあると思いますが…

私の場合は、phpを表示させ、その中にhtmlをテンプレートとして読み込む、という逆の形にしています。

test.php

php

1<?php 2//ヘッダーとフッターの読み込み 3$header = file_get_contents('include/heaer.html'); 4$footer = file_get_contents('include/footer.html'); 5 6//DBに接続して何かデータを取得 7 8 9 10//取得したデータを整形してhtmlにする 11foreach ($res as $key => $value) { 12 $html .= "<li>".$value['id'].":".$value['title']."</li>\n"; 13} 14 15//テンプレートのhtmlを読み込み 16include_once 'templates/test.html';

test.html

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>TEST</title> 6</head> 7<body> 8 <?=$header?> 9 <div class="main"> 10 <ul> 11 <?=$html?> 12 </ul> 13 </div> 14 <?=$footer?> 15</body> 16</html>

投稿2016/01/20 05:26

ao_love

総合スコア441

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

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

0

ベストアンサー

うーん…エラーが出ているあたりの情報を頂かないと何とも^^;
エラーが出ているphpの該当行を見てみましたか?

そもそもDBに接続できてなくてデータが来てないんじゃない?と思うのですが、その辺はどうなっていますでしょうか?
まずはincludeせずにすべて一枚に書いた場合にどうなるかみてみてはいかがでしょう?

投稿2016/01/19 03:14

ao_love

総合スコア441

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

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

hyskyo

2016/01/19 11:28

理由はわかりました。 下記を使うとindex.phpが真っ白なページになってしまい、データベースに接続できませんでした。 <?php ob_start(); ?> <?php file_put_contents( 'test.html', ob_get_contents() ); ob_end_clean(); ?> ちなみに、上記以外の方法でPHPで書いたファイルphpの実行結果をhtmlファイルへ書き出せる方法あればご教授お願いいたします。
ao_love

2016/01/20 04:40

phpを実行して真っ白になるときは致命的な文法エラーがあることが多いです。 ;が抜けていたり、”や’が閉じていなかったり。 別の方法…というか私が普段とる方法(おそらく泥臭くて最善ではない)を別回答として提示してみますね。
hyskyo

2016/01/20 05:58

ao_loveさん ありがとうございます。 ao_loveさんの方法で試してみます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問