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

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

ただいまの
回答率

89.99%

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,114

hyskyo

score 72

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);
?>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • test0001

    2016/03/24 17:36

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

    キャンセル

  • hyskyo

    2016/03/24 18:17

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

    キャンセル

回答 2

checkベストアンサー

+2

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/03/25 10:05

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

    キャンセル

  • 2016/03/25 16: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毎に全部入っています

    キャンセル

  • 2016/03/25 19: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を作成し変数に代入
    ・適当なテキストをファイルに書き出し
    これがそれぞれできれば、後は組み合わせれば完成すると思います。

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/03/24 21:09

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

    キャンセル

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

  • ただいまの回答率 89.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

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