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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

2141閲覧

phpで作ってデータベース(Mysql)に保存してあるデータをidごと別々にhtmlにて書き出したいですが可能でしょうか?

hyskyo

総合スコア79

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/03/24 08:29

編集2016/03/25 07:43

phpで作ってデータベース(Mysql)に保存してあるデータをidごと別々にhtmlにて書き出したいですが可能でしょうか?
したいことは、管理画面に表示されているidごとの項目にstg同期ボタンがあって、それを押すとid.htmlとしてそれぞれ書き出したいです。
例えば、100.htmlとして、一つのユーザーが観れるhtmlページを書き出したいです。
例2:データベースに
test_id, test_title, test_contents, test_date.test_imageのデータを保存しています。このデータのid毎にhtmlにて書き出したいです。WordPressやMovable Typeとかに似ているイメージです。
例えば:添付した画像test3の書き出すボタンを押すと/Applications/MAMP/htdocs/test/のディレクトリーの下に書き出したいです
/Applications/MAMP/htdocs/test/1.html
/Applications/MAMP/htdocs/test/2.html

1.htmlと2.htmlにデータベースに保存されているtest_id, test_title, test_contents, test_date.test_imageのデータがid毎に全部入っています
何を使ってどうすればいいかわかりません、誰かが助けてください!!

index.htmlの一覧ページがありますその中に<a href="100.html"></a>あるとします、これの飛ぶ先の100.htmlファイルを書き出したいです
ユーザー側が観れる、index.html一覧ページ:

<div><a href="100.html"></a></div> <div><a href="99.html"></a></div> <div><a href="98.html"></a></div> <div><a href="97.html"></a></div> <div><a href="96.html"></a></div>

イメージ説明
これは管理画面ですべての記事ページを作っています。
管理画面のview.phpです:

<form action="" method='post'> <table> <thead> <tr> <th>ID</th> <th>タイトル</th> <th>商品名</th> <th>作者</th> <th>項目名</th> <th>画像</th> <th>日付</th> <th>内容</th> <th>xxx</th> <th>編集</th> <th>削除</th> <th>STG同期</th> </tr> </thead> <tbody> <?php require_once("db.php"); $query = "SELECT * FROM test ORDER BY test_id DESC"; $select = mysqli_query($db, $query); while($row = mysqli_fetch_assoc($select)){ $test_id =$row['test_id']; $test_title = $row['test_title']; $test_product =$row['test_product']; $test_author =$row['test_author']; $test_koumoku =$row['test_koumoku']; $test_date = $row['test_date']; $test_hunbun = $row['test_hunbun']; echo "<tr>"; ?> <?php echo "<td>$test_id</td>"; echo "<td>$test_title</td>"; echo "<td>$test_product</td>"; echo "<td>$test_author</td>"; echo "<td>$test_koumoku</td>"; echo "<td>$test_image</td>"; echo "<td>$test_date</td>"; echo "<td>$test_hunbun</td>"; echo "<td><a href=''>xxx</td>"; echo "<td><a href=''>編集</td>"; echo "<td><a href=''>削除</td>"; //ここまで考えたのですが次はどうすればいいかわかりません、下記のstg同期ボタンを押したらid.htmlとして書き出したいです。 //sync.phpを作ればいいかと思いましたが書方がわかりません。例:100.htmlにてここにあるすべての項目がhtml式で書き出せるようにしたいです。 echo "<td><form action='sync.php' method='post'><div> <input type='submit' class='btn' name='$test_id' value='stg同期'></div></form></td>"; echo "</tr>"; } ?></tbody> </table> </form>

こちらがsync.phpですが問題はidごとに書き出したいので、ここはダメかなと

<?php if(isset($_GET['test_id'])){ $the_id = $_GET['test_id']; } $query = "SELECT * FROM test WHERE test_id = $the_id"; $select_query = mysqli_query($db, $query); while($row = mysqli_fetch_assoc($select_query)){ $test_id =$row['test_id']; $test_title = $row['test_title']; $test_product =$row['test_product']; $test_author =$row['test_author']; $test_koumoku =$row['test_koumoku']; $test_date = $row['test_date']; $test_hunbun = $row['test_hunbun']; ?> <p><?php echo $special_planning; ?><br> <p><?php echo $special_title; ?></p> <?php } ?> <?php $url = "http://superceo.local/test/sync.php"; $buff = file_get_contents($url); //ここをどうしたらいいですか?後stg同期を押した時に実行されません $fname ="/Applications/MAMP/htdocs/stg/test/ここに入るID.html"; $fhandle = fopen($fname, "w"); fwrite($fhandle, $buff); fclose($fhandle); ?>

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

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

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

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

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

test0001

2016/03/24 08:36

何を書き出せばよいのかわかりません。
hyskyo

2016/03/24 09:17

説明文を書き直しました。よろしくお願いします
guest

回答2

0

ベストアンサー

id毎に内容をtableタグに出力して、それぞれに「stg動機」ボタンを設置しているということで良いですか?
それで、仮にidが”0001”のデータがあって、その「stg動機」ボタンを押すと0001.htmlを保存するようにしたいということでしょうか?何故そうする必要があるのかという疑問はありますが、こういう理解で良いなら。

sync.phpで、そのidのデータを再びhtnl文字列に起こしてファイルに保存すれば良いかと。
ファイルi/oの関数 file_put_contents
関連する関数はページのリンクから辿れると思います。
保存予定のパスにphpの実行ユーザが書き込み権限を持っている必要があると思います。
phpが何処にでも書き込めるとセキュリティ的に良くないので、許可されたスペースに書き出して転送するのが良いかも知れません。例えばftp_put

サーバ上に書き出すイメージで書きましたが、ユーザにダウンロードさせるなら書き出したファイルをダウンロードさせる手順がもう一段階必要になると思います。

投稿2016/03/24 09:29

編集2016/03/24 09:34
hirohiro

総合スコア2068

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

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

hyskyo

2016/03/24 09:51

>>id毎に内容をtableタグに出力して、それぞれに「stg動機」ボタンを設置しているという>>>ことで良いですか? >>それで、仮にidが”0001”のデータがあって、その「stg動機」ボタンを押すと0001.html>>>を保存するようにしたいということでしょうか? はい、そうです。 ご指示通りにやってみましたが複雑でできませんでした。 sync.phpは勝手に考えたので、それ以外もっといい方法があれば教えていただけませんか?
hirohiro

2016/03/24 10:13 編集

目的が見えないのでなんとも。 「100.html」のようなid別のHTMLファイルが必要なのなら上記のような感じになると思います。 クリックしたらそのIDだけの情報がブラウザ上で見られればいいのなら、sync.phpでDBからidの情報を抜き出して表示するだけで良いのではないでしょうか? 後、formの部分は --- "<td><form action='sync.php' method='post'> <div> <input type='hidden' name='test_id' value='".$test_id."'> <input type='submit' class='btn' name='submit' value='stg同期'> </div> </form></td>"; echo "</tr>"; -- こんな風にすれば、sync.php側で「$_POST['test_id']」で受け取れるので処理がしやすくなると思います。 このIDを使って、IDの情報をDBから抜き出してHTML作成 SQL実行はプリペアードステートメントを使ったほうが良いと思います。
hyskyo

2016/03/24 11:37

ご指示通りにしてみましたができませんでした。 こちらがsync.phpですが問題はidごとに書き出したいので、これだとできませんでした。 ``` <?php if(isset($_GET['test_id'])){ $the_id = $_GET['test_id']; } $query = "SELECT * FROM test WHERE test_id = $the_id"; $select_query = mysqli_query($db, $query); while($row = mysqli_fetch_assoc($select_query)){ $test_id =$row['test_id']; $test_title = $row['test_title']; $test_product =$row['test_product']; $test_author =$row['test_author']; $test_koumoku =$row['test_koumoku']; $test_date = $row['test_date']; $test_hunbun = $row['test_hunbun']; ?> <p><?php echo $special_planning; ?><br> <p><?php echo $special_title; ?></p> <?php } ?> <?php $url = "http://superceo.local/test/sync.php"; $buff = file_get_contents($url); //ここをどうしたらいいですか?後stg同期を押した時に実行されませんでした $fname ="/Applications/MAMP/htdocs/stg/test/ここに入るID.html"; $fhandle = fopen($fname, "w"); fwrite($fhandle, $buff); fclose($fhandle); ?> ```
hirohiro

2016/03/24 14:35 編集

多分PHPで目的を達するために習得しなければいけない技術がまだ沢山あるのだと思います。こういう方向で作成してはどうでしょう?といった意見を述べることは出来ますが、ここで一つ一つに関して完成品ができるまで説明するのは(私には)ちょっと無理です。 仮に何とか動作してもセキュリティ的に怖いコードになってしまう気がします。 それと習得の際は一気に完成品を作ろうとせずに、細かな単位で動作確認していくほうが結果的に早く良い結果が得られると思います。 ・formのsubmitから呼び出してpost送信したデータを受け取って表示する ・(他ページとの通信無しで)ファイルを新規作成して、適当なテキストをファイルに保存する この辺りをばらばらに作成して、それぞれ動いたら次に組み合わせてみる。など 後$_GET[’test_id'] で受け取ろうとしていますが、formのsubmitで送ったならpostでないと受け取れないと思います。
hyskyo

2016/03/25 01:05

ありがとうございます。ご指摘通り一つ一つに完成していきたいです。 セキリティはまだ考えてなくてとりあえず書き出すところを身に付けたいと思っています!!
hyskyo

2016/03/25 07:42

もう少し説明しますと、データベースに test_id, test_title, test_contents, test_date.test_imageのデータを保存しています。このデータのid毎にhtmlにて書き出したいです。WordPressやMovable Typeとかに似ているイメージです。 例えば:添付した画像test3の書き出すボタンを押すと/Applications/MAMP/htdocs/test/のディレクトリーの下に書き出したいです /Applications/MAMP/htdocs/test/1.html /Applications/MAMP/htdocs/test/2.html 1.htmlと2.htmlにデータベースに保存されているtest_id, test_title, test_contents, test_date.test_imageのデータがid毎に全部入っています
hirohiro

2016/03/25 10:07

> 例えば:添付した画像test3の書き出すボタンを押すと はい。ですので、「<form action='sync.php' method='post'><input type='hidden' name='test_id' value='".$test_id."'><input type='submit' class='btn' name='submit' value='stg同期'></form>」同期ボタンがこのように作成されていると、test3のidがsync.phpにpostされsync.phpが実行されるはずですので、sync.phpでidを使ってtest3のデータをSQLで読み出し、そのデータを下にHTMLを変数内に作成して、ファイルに書き出せばよろしいかと思います。 ・postでのsync.phpへのデータの受け渡しとsync.phpでの受け取ったデータの利用 ・適当なidのデータをSQLで抜き出してHTMLを作成し変数に代入 ・適当なテキストをファイルに書き出し これがそれぞれできれば、後は組み合わせれば完成すると思います。
guest

0

user.php?id=100みたいな形にして、
user.php側で $_GET["ID"]でアクセスされているIDを取得してデータを表示するのでは駄目なのでしょうか?

投稿2016/03/24 10:03

pac894398

総合スコア429

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

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

hyskyo

2016/03/24 12:09

ご指示通りにしてみましたがidごとにできませんでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問