• ベストアンサー

データベース + PHP で htmlファイルを大量作成

お店の名前や住所データがデータベースに入力されています。 お店の情報を表示するページはデザインが一緒なので テンプレートを用意しておき お店のデータだけデータベースから読み込み その出力されたものをhtmlファイルとして保存し そのファイルをサーバにアップロードしたいと思っています。 データベースからデータを取り出すのは mysql_query();でやればいいと思うのですが htmlとしてファイルを保存するのは fopen();やferite();などでできるでしょうか? $a = "テンプレート,データベースの内容"; fwrite($filehandle, $a); でできるのではと思っていたのですが 「テンプレート,データベースの内容」の部分が 長文なのでどうやって変数に入れればいいかを悩んでます。 どなたか知恵をお貸し下さい。 足りない部分がありましたら補足いたします。 ご教授のほどよろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • suzu_zou
  • ベストアンサー率34% (112/327)
回答No.2

>fopen();やfwrite();などでできるでしょうか? できると思います。 詳しいやり方は失念してしまいましたが。 >長文なのでどうやって変数に入れればいいかを悩んでます。 「ヒアドキュメント」という機能があります。 $a= <<< EOD XXXXXXXXX XXXXXXXXX XXXXXXXXX ....... EOD; というようにすれば、EOD;までの文字列を変数$aに入れることができます。 変数を入れることもできるので、ここにHTMLを入れて、 DBで得たデータを埋め込んで変数にまるごと入れてしまえばいいと思います。 http://php.thm.jp/index.php?know=here_document

sachi-999
質問者

お礼

回答ありがとうございます! そうでした! ヒアドキュメントがありましたね!ありがとうございます!

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>「テンプレート,データベースの内容」の部分が >長文なのでどうやって変数に入れればいいかを悩んでます。 テンプレートをfile_get_contents()で読み込めばいいのでは?書き換えは地道にstr_replace()でも出来るでしょうし。 ただ「そのファイルをサーバにアップロード」ということはローカルで実行するんですよね?DBのローカル(というかローカルから繋げられるサーバ)ですか?

sachi-999
質問者

お礼

回答ありがとうございます。 file_get_contents();ですか。一度調べてみます! はい、このローカルで実行しhtmlファイルを作成するつもりです。 データベースもローカルに保存されていますので大丈夫です。

関連するQ&A

  • PHPでデータベースにアクセスするには?

    データベース初心者です。 レンタルサーバーはロリポップを使っています。 これからphpMyAdminを使ってデータベースを作ることが出来たらと考えております。先ずはその流れを把握しておきたいと思いましてPHPファイルからの接続を成功できたらと考えましたが、PHPについても知識に乏しくどのような記述にすればphpMyAdminに接続できるのかというところで止まってしまってます。 どなたかお詳しい方がいらっしゃいましたらご指導いただけたら幸いです。よろしくお願いいたします。 以下は他のサイトで見つけたのですが接続できないようです。 //接続 $connect = mysql_connect($server,$user,$pw); //データベース選択 mysql_select_db($database,$connect); //sql実行 $result = mysql_query($sql); //データ取得 mysql_data_seek($result,0); $a=mysql_fetch_array($result,MYSQL_NUM);

    • 締切済み
    • PHP
  • phpでデーターベース編集

    phpを独学し始めた初心者です。 よろしくお願いします。 以下のphpファイルを実行すると エラーが出ないにもかかわらず、 データーベースの表示で確認すると 『item_name』に『もも』という文字が入っていません。 その他はphp通りデーターが挿入されます。 なぜでしょうか? (環境)------------------------------------- phpエディターでphpファイルをつくり phpMyAdminでデーターベースを編集してます。 ローカルホストです。 --------------------------------------------- <?php mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('mydb') or die(mysql_error()); mysql_query('SET NAMES UTF8'); mysql_query ('INSERT INTO my_items SET maker_id=1, item_name="もも", price=480, keyword="缶詰,ピンク,甘い", sales=0, created="2010-10-10", modified="2012-05-05"') or die(mysql_error()); echo 'データー挿入完了'; ?> どうぞよろしくお願いします。

  • MySQLでデータベースを一つのファイルにひたすら保存していいのか

    MySQLでデータベースを一つのファイルにひたすら保存していいのか PHPでMySQLを使用しています。 データベースを作る時は以前から二つの方法を使っています。 ・データベースファイルを一定のデータ量になると分割する方法 ・データベースファイルを分割せず一つのファイルにひたすら保存していく方法 これはどっちがいいのでしょうか? 一つのデータベースファイルに保存し続けるとユーザーがアクセスする際は そのデータベースファイルにしかアクセスしないので共有ロックの関係で ユーザーが増えるほど分割した場合に比べてオープンが低速化したりしないでしょうか?

    • ベストアンサー
    • PHP
  • csvからmySQLのデータベース作成

    カンマ区切りのcsvファイルを読み込んでMySQLのデータベースを作成したくて、下記のプログラムを作成しました。 しかし、正常に動作しません。どこに問題があるのでしょうか。 よろしくお願いします。 <?php $file = '"test.txt"'; //------------------------------------------------------------- //データベースアクセス //------------------------------------------------------------- $url = 'test-test.com'; // MySQL hostname $user = 'test_user'; // Your MySQL user name. $pass = 'password'; // Your MySQL password. $db = 'test_db'; // MySQLへ接続する $link = mysql_connect($url,$user,$pass); if ( $link == FALSE ) { error(__line__); } // データベースを選択する $sdb = mysql_select_db($db,$link); if ( $sdb == FALSE ) { error(__line__); } mysql_query("SET NAMES utf8"); //CSVデータの取り込み $sql = "LOAD DATA LOCAL INFILE '$file' INTO TABLE test fields terminated by"; $sql .= " LINES "; $sql .= " TERMINATED BY '\r\n' "; $sql .= " IGNORE 1 LINES"; $result = mysql_query($sql, $conn); if (!$result) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $sql; die($message); } //------------------------------------------------------------- // エラーメッセージ表示 //------------------------------------------------------------- function error($line) { echo "error code:" . $line; exit; } ?> ---------- .CSVファイル ---------- 日付,内容,備考 0901,value,etc 0902,value2,etc2

    • ベストアンサー
    • PHP
  • PHPでデータベースに正しく入力できない

    別のプログラムで変数に値を渡して、その変数に入っている値(文字)をデータベースに入力するプログラムを作っています。 見ての通りCDのデータベースを作るプログラムです。 複雑なプログラムではないのですが 下記のようにプログラムを実行するとselect文で結果を確認した所 仮に繰り返し回数($t)が3だとして A、A-2、A-3、A-4 B、B-2、B-3、B-4 C、C-2、C-3、C-4 となるはずが、上記と同じデータが A、A-2、A-3、A-4 B、B-2、B-3、B-4 C、C-2、C-3、C-4 A、A-2、A-3、A-4 B、B-2、B-3、B-4 C、C-2、C-3、C-4 A、A-2、A-3、A-4 B、B-2、B-3、B-4 C、C-2、C-3、C-4 のように同じデータがそれぞれ2つずつ重複して入力されているのです。 2回目のprint文を見ると正しく表示されているのですが、データベースのほうは重複しているようです。 こちらに問題がないようなら変数受け渡しの部分も見せますので どなたか問題を見つけてくださらないでしょうか。お願いします。 $DBSERVER = "localhost"; //MySQLサーバ名 $DBUSER = "root"; //ログインユーザ名 $DBPASSWORD = ""; //パスワード $DBNAME = "cdb"; //データベース名 //MySQLに接続します $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); //MySQL読み込み時の文字コードを設定 mysql_query("set name sjis"); //データベースに接続します $selectdb = mysql_select_db($DBNAME); print("以下のデータを入力しました</BR>"); for($i=0;$i<$t-1;$i++){ $name=$cd[$i][0];/*array[]になるので入れ直し*/ $name=mb_convert_kana($name , "a","sjis");  $artist=$cd[$i][1]; $artist=mb_convert_kana($artist , "a","sjis"); $day=$cd[$i][2]; $record=$cd[$i][3]; $record=mb_convert_kana($record , "a","sjis"); $sql="insert into co2 values('0','$name','$artist','$day','$record')"; print("曲名: ".$name."</BR>"."歌手名: ".$artist."</BR>"."発売日: ".$day."</BR>"."レコード会社: ".$record."</BR></BR>"); mysql_query($sql); }

    • ベストアンサー
    • PHP
  • PHP エラーについて

    ファイルをテンプレ&mysqlを使って自動生成するスクリプトを書いているのですが 以下のエラーが出ます。 Fatal error: Call to a member function append() on a non-object in /home/stylenavi/www/httpdocs/test/file_make2.php on line 52 while ($rb2 = mysql_fetch_array($rb)) で値はDBから取れているのですが、 それが次の行でエラーになる理由がわかりません。 どなたかお力ぞえ頂けないでしょうか。 よろしくお願いいたします。 ---------------------------------------------------------------------- <?PHP require_once("Smarty.class.php"); $s=mysql_connect("hogehoge.db.sakura.ne.jp","hogehoge","hoge") or die("失敗しました"); mysql_select_db("hogehoge",$s); $sql = "SET NAMES utf8"; $result = mysql_query($sql); $template = "../templates/itiran_page_test.tpl"; $sakuin = "sakuin1"; //フッターリンク(1)のキー定義 $h_link = "sakuin1"; //下層ページファイル名一覧の取得 $ra=mysql_query("select * from sougou_db where key5 LIKE 'sakuin1'"); while ($ra2 = mysql_fetch_array($ra)) { $ra3 = array($ra2[filename]); foreach( $ra3 as $value ){ //テンプレートの読み込み $contents = file_get_contents( $template); // 作成するファイル名の指定 $file_name = $dir.$value; //ページ要素の取得とテンプレートへの挿入 $rb=mysql_query("select * from sougou_db where (filename = '$value')"); while ($rb2 = mysql_fetch_array($rb)) { //echo $rb2[title]; //⇒ちゃんと表示できます            $objSmarty->append('data2',$rb2); } //索引一覧の取得とテンプレートへの挿入 $rc=mysql_query("select * from sougou_db where (key5 = '$sakuin') "); while ($rc2 = mysql_fetch_array($rc)) { //$objSmarty->append('data3',$rc2); //echo $rc2[title]; } //フッターリンクの取得とテンプレートへの挿入 $rd=mysql_query("select * from sougou_db where (key5 = '$h_link') "); while ($rd2 = mysql_fetch_array($rd)) { //$objSmarty->append('data4',$rd2); //echo $rd2[title]; } if( !file_exists($file_name) ){ touch( $file_name ); chmod( $file_name, 0666 ); echo('Info - ファイル作成完了。 file name:['.$file_name.']'); $handle = fopen( $file_name, 'w'); fwrite( $handle, $contents); fclose( $handle ); }else{ // すでにファイルが存在する為エラーとする echo('Warning - ファイルが存在しています。 file name:['.$file_name.']'); exit(); } } } ?>

    • ベストアンサー
    • PHP
  • PHP 別ドメインへのファイル保存法

    phpプログラムでわからないことがあるのですが。 レンタルサーバを2つ(AとB)もっているとします。 AからBにファイルを保存したいのです。 これは可能なのでしょうか、 可能でしたらコードの記述法を教えていただきたいのです。 たとえばこのような感じです。エラーになります。 <?php $write_data = "123456"; if($fn = fopen("ftp://b@b.com/public_html/b.com/test.data", 'a')) { fwrite( $fn, $write_data); fclose($fn); } ?>

    • ベストアンサー
    • PHP
  • ファイルに書き込むためのPHPを教えてください

    いつもお世話になります。PHPの初心者です。 フォームの一部($text)からデータを受け取って、ファイル(log.cgi)に書き込むPHPを作りましたが、うまく作動しません。 どなたかお分かりになるかた教えてください。 //保存用ログファイル define('DE_LOGFILE', 'log.cgi'); $logtext = @file(DE_LOGFILE); //ログに書き込む $handletext = @fopen(DE_LOGFILE, "w") or _error_page(DE_LOGFILE.'に書き込めません'); fwrite($handletext, $text); @fclose($handletext);

    • ベストアンサー
    • PHP
  • PHPのデータベース(postgresql)への保存

    いま日記機能付カレンダーを作成しています。 データベース(postgresql)に接続までできているのですが、保存ができません。エラーが出ている部分は--- $sql = "INSERT INTO DIARY_MASTA       VALUES('".$DIARY_DATE."','".$DIARY_DATA."');"; $result = pg_query($sql); ---です。 エラーメッセージはWarning: pg_query() [function.pg-query]: Query failed: ERROR: invalid input syntax for type date: "" in ・・・・ 保存方法や確認しなければいけない個所を教えていただきたいので、よろしくお願い致します。 //保存ボタンを押すと保存 if($_POST['enter'] == "保存"){ //日記の記入がない日 if($data == null){ $data = $day; } //記入年月日・日記内容 $DIARY_DATE = $year."年".$month."月".$day1."日"; $DIARY_DATA = $_POST["DIARY"]; } //データベース接続開始! //(ホスト名・データベース名・ユーザー名・パスワード) $conn = "host = localhost dbname = **** user = ****      password = ****"; $link = pg_connect($conn); if($link){ echo "接続成功 .\n"; //日記の日付・日記の内容をDIARY_MASTAより取得 $sql = "INSERT INTO DIARY_MASTA       VALUES('".$DIARY_DATE."','".$DIARY_DATA."');"; $result = pg_query($sql); if(!$result_pg){ die("保存できません"); } } else { echo "接続できません"; } //データベース切断 $close = pg_close($link); if($close){ echo("切断できました"); }

    • ベストアンサー
    • PHP
  • phpでMysqlにデータを書き込むと文字化

    皆様、教えて下さい。 phpで、日本語文字を入力させて、その内容をMysqlデータベースに保存しようと しているのですが、文字化けしてしまってます。(>_<) 素人なので、ネットで色々と方法を検索してみたのですが、よく判りません。 どなかた、教えて頂けますでしょうか? php側: mb_language("Japanese"); mb_internal_encoding("EUC-JP"); $aaa = 'あああ'; $query = "UPDATE database1 SET data2 = '$aaa' WHERE data1 = '$id'"; mysql_query($query); print $aaa; 上記のような内容ですが、画面上では、きちんと「あああ」と表示されている のですが、Mysqlのデータを見ると、文字化けしております。 お手数ですが、どなたか宜しくお願いします♪

    • 締切済み
    • PHP

専門家に質問してみよう