![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
phpファイルからHTMLの書き出しについての質問です
できるとこまでやってみたんですが途中にmysqlから取り出したデータを処理するためのwhileなどのphpがあるためうまくいきませんでした
途中にphpがある場合、どうすればうまくいきますか?
PHP Version 5.2.5です
ファイルロックはこんな感じでしょうか?
よろしくお願いします
$html = <<<END_OF_DATA
<html>
<head>
<title>タイトル</title>
</head>
<body>
<table>
<?php
while ($table = mysql_fetch_assoc($recordSet)) {
?>
<tr>
<td>{$table['id']}</td>
<td><?php print(htmlspecialchars($table['name'], ENT_QUOTES)); ?></td>
</tr>
<?php
}
mysql_free_result($recordSet) or die("MySQL切断に失敗しました。");
mysql_close($link) or die("MySQL切断に失敗しました。");
?>
</table>
</body>
</html>
END_OF_DATA;
$filename = 'index.html';
$fp = fopen($filename,'w');
stream_set_write_buffer($fp,0);
flock($fp, LOCK_EX);
fwrite($fp, $html);
flock($fp, LOCK_UN);
fclose($fp);
No.2ベストアンサー
- 回答日時:
>> file_put_contentsを使いたいのですがPHP Version 5.2.5ではバグがあって使えないようです
失礼しましたm(_ _)m
最初のfopenの書き方でOKです。
ファイルロックに関して
http://tumblr.tokumaru.org/post/37141017115/php5 …
PHP5.2.5であれば flock($fp, LOCK_UN); は不要みたいですね。
>> mysqliに変更したいのですがレンタルサーバーが対応していませんでした
あーこれは仕方ないですね^^;
【訂正】
サンプル内
× _mysql_fetch_assoc
○ mysql_fetch_assoc
No.1
- 回答日時:
>> PHP Version 5.2.5です
>> ファイルロックはこんな感じでしょうか?
PHPバージョン5.2.6以降だとモード「c」でオープンできるのですが、「w」モードではわざわざfopenでやる意味がないですね。
http://ntter0.blog76.fc2.com/blog-entry-13.html
http://php.net/manual/ja/function.file-put-conte …
というわけでシンプルにfile_put_contentsを使えばいいと思います。
>> whileなどのphpがあるためうまくいきませんでした
ヒアドキュメントの使い方を再確認してください。
http://www.php.net/manual/ja/language.types.stri …
あと、freeとかcloseとかここでスクリプトが終わるのであればする意味がないです。説明を見てください。
http://www.php.net/manual/ja/function.mysql-free …
http://www.php.net/manual/ja/function.mysql-clos …
さらに言えばこの「mysql_○○」関数自体が非推奨で近い将来廃止される予定なので、mysqliもしくはPDOを使うようにしてください。
http://www.php.net/manual/ja/book.mysqli.php
http://php.net/manual/ja/book.pdo.php
どちらかと言えばPDOがオススメ。いちいち1回1回
mysql_connect(...) or die('Error');
のように例外処理を書かなくても、
try {
$pdo = new PDO(...);
} catch (Exception $e) {
echo 'Error: '.$e->getMessage();
}
とするだけで全部まとめてcatchブロックで回収できます。PDOクラスがExceptionクラスの拡張クラスであるPDOExceptionを自動的に例外発生時にスローしてくれるのです。
【サンプル】
<?php
mysql_connect(...) or die('Error');
$recordSet = mysql_query(...);
$cells = '';
while ($table = _mysql_fetch_assoc($recordSet)) {
$cells .= sprintf('<tr><td>%s</td><td>%s</td></tr>'.PHP_EOL,
$table['id'],
htmlspecialchars($table['name'], ENT_QUOTES)
);
}
$html = <<<EOD
<html>
<head>
<title>タイトル</title>
</head>
<body>
<table>
{$cells}</table>
</body>
</html>
EOD;
file_put_contents('index.html', $html, LOCK_EX);
【動作確認】
http://ideone.com/qEaETP
http://codepad.viper-7.com/cAZKHC
http://codepad.org/huJ1uZt0
お答え頂きありがとうございます
file_put_contentsを使いたいのですがPHP Version 5.2.5ではバグがあって使えないようです
LOCK_EXでロックしないバグがあると検索したら出てきました><
ロックだけ違う処理をするのは無理ですか?
mysqliに変更したいのですがレンタルサーバーが対応していませんでした(泣。実際に変更したら真っ白に^^;
コアサーバーあたりに引越す予定ですがそれまではmysql系になってしまいます。すいません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php エラー 2 2022/10/23 16:43
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpとmysqlを使っています。
-
mysqliについて
-
ページング実装で2ページ目以...
-
接続ができません
-
VBAで変数内に保持された二次配...
-
like句を使って日本語を検索す...
-
SQLのVARCHARとVARCHAR2の違い
-
ヌル値は記憶容量を必要としな...
-
LIMIT で条件を満たしているの...
-
ERROR 1054 (42S22) 原因不明です
-
ERROR 1045 (28000) (using pas...
-
Usage: \\.<filename> | sourc...
-
文字コードMS932(Windows-31J...
-
ODBC接続で全角文字が文字化け
-
MySQLに外部PCから接続できない
-
JDBCドライバについて
-
列数が多いと結果が行単位に改...
-
ADOのバージョンを確認する方法
-
phpからinsertできない
-
副問合せにLIKE文を使う方法は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラスファイルでエラーが出て...
-
mysql_real_escape_string?
-
ページング実装で2ページ目以...
-
phpとmysqlを使っています。
-
PHPのサンプルコードが意図した...
-
php mysqlの文字化け(レンタル...
-
OpnePNEの構築において
-
php+mysqlでINSERTで文字化けし...
-
Flash8のユニコードについて。...
-
Linuxで、Pearコマンドが使えな...
-
mysqliについて
-
for($i=1; $i<hoge; $i++)
-
PHPからmySQLへINSERT文の実行
-
mySQLに詳しい兄貴来てください
-
PHP でMysqlを使用して日本語を...
-
mysqlでphpinfoと実際のバージ...
-
FORMからPHP処理
-
Mysql&PHPのアップグレードに...
-
イメージデータを文字列に変換...
-
mysql_queryでのdelimiterの設...
おすすめ情報