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

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

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

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

Q&A

解決済

1回答

921閲覧

掲示板における投稿番号の増やし方について教えていただきたいです。

prominence4563

総合スコア8

PHP

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

0グッド

0クリップ

投稿2017/08/06 13:46

###前提・実現したいこと
私は独学でphp言語を学んでいる中で簡易掲示板なるものを作ろうと考え、以下のようなプログラムを組みました。
投稿番号、名前、コメント、日付の順に表示させたいと思っております。

###発生している問題・エラーメッセージ

投稿番号を1から順に表示させていきたいのですが、なぜか何度投稿しても1のまま変わりません。numの部分に問題が生じていると思われますが、それ以上のことがわかりません。
ちなみにそれ以外の部分に関しましては、問題なく動作しております。
どなたか改善点について教えていただけると助かります。

###該当のソースコード

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>簡易掲示板</title> </head> <body> <form action="keijiban.php" method="post"> 名前<input type="text" name="name" ><br /> コメント<input type="text" name="comment"><br /> <br /> <input type="submit" value="送信" /> </form> </body> </html> <?php $num = 0; $str = $num++ . '<>' . $_POST['name'] . '<>' . $_POST['comment'] . '<>' . date('Y-m-d') . "\n"; $fp = fopen('keijiban.txt','a'); fwrite($fp, $str); fclose($fp); ?>

###試したこと
このサイトで以前同じような質問をした方がいらっしゃったので確認してみましたが、numの増やし方については具体的に書いてありませんでした。
それらしいものはあったのですが(for関数などをつかったもの)、組み込み方がわからず、また組み込んでもエラーになってしまいました。

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

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

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

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

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

m.ts10806

2017/08/25 02:39

既に次の質問で次の段階にうつられているように思います。こちら解決したのであれば解決済みとしてはいかがでしょうか。
prominence4563

2017/08/25 03:53

御指摘ありがどうございます。解決済みに致しました。
guest

回答1

0

ベストアンサー

phpはページが表示されるごとにゼロから実行されます。

変数の値をページ移動を超えて保存しておきたいならば、
・ファイルやDBなどに保存しておいた内容を読み込んで利用する
・セッション変数を使う
・保存したい内容をinputタグなどで持ち回る
などの方法を取る必要があります。

今回の場合は、keijiban.txtに保存している最後の番号を読み取ってそれに1を足した数を投稿番号にするなどの対策をとるのがよいと思います。

具体的には、$num = 0;と書いている箇所を

php

1$lines = file('keijiban.txt'); 2$lastLine = $lines[count($lines) - 1]; 3$num = explode('<>', $lastLine)[0];

のように変更してみてはどうでしょう。
$numに常に0を代入するのではなく、keijiban.txtに保存している最後の番号を読み取ってそれを$numに代入することができます。

投稿2017/08/06 15:40

編集2017/08/07 08:43
ku__ra__ge

総合スコア4524

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問