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

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

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

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

Q&A

3回答

2813閲覧

データベースなしで返信機能のある掲示板を作りたい。

igleij

総合スコア2

PHP

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

0グッド

0クリップ

投稿2021/05/06 23:09

前提・実現したいこと

返信機能のある掲示板をphpで作成したいです。
ふつうならこのような場合、データベースを使い実装するべきかとは思いますが、どうも使っているレンタルサーバーの今のプランではデータベースが使用できず。
しょうがないのでテキストファイルに保存しようと考えているのですが、どのような構造にすれば返信機能が実装できるかわかりません。

どのような作りにすれば実装できるかどうか、ヒントを教えてもらいたいです。
よろしくお願いします。

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

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

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

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

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

K_3578

2021/05/07 01:06

作る前に契約するの気が早すぎない?せめてローカルで動くもんが出来てからでも良いと思うけど。 (それとも他の事で既に契約してたのかな)
igleij

2021/05/07 02:49

もともと他のことで契約していますから。
退会済みユーザー

退会済みユーザー

2021/05/07 02:55

サーバーのスペック、設定マニュアルなどのドキュメントにあたって、できることできないことを把握するよう努めてください。とくにphpであれば phpinfo() を使って使える機能なモジュールを表示させることもできますし。
m.ts10806

2021/05/07 05:07

あえて茨の道選択しても使えないものメンテナンス性に乏しいものが出来上がって負債にしかならないので、データベース使える環境を用意するところからがスタートです。 それにいきなり公開狙ったところでクラッカーの攻撃の的になって利用者に迷惑かけるだけなので、ローカルでデータベース立てて作れてから公開云々考えては。 制約の多いレンタルサーバーマターでは何もできないですよ
guest

回答3

0

どのくらいの技量をお持ちなのかわかりませんので確認したいこととしては、
返信機能付きの掲示板が作れないだけで、
返信機能を伴わない掲示板なら作れるということなのでしょうか。

お持ちの技量がわからないため、
システム開発を家を建てるのになぞらえるなら
大工道具の使い方や建材の調達にまで言及しないといけないのかという、
困った状況にしか見えません。

フォーム入力を受け付け、データファイルを更新して記録し、
データファイルを読み込んで表示する、基本的な動きとして掲示板というのは
よく題材に取り上げられるので、
インターネット上にも、teratail上にも多数見かけます。
(わたし個人としてはあまり掲示板では題材として力不足に思えますが。)

自力で設計できなければ、まず他人の作ったものを真似して組んでみてください。
そこから何かしらの気づきを得るはずです。

それと、作り方もわからないうちにレンタルサーバーを借りてしまうのは良くないと思います。
おそらく無料で借りられるものだと、データベースの利用に制限があったり、
外部のコンテンツの取得ができなかったり、
他の便利機能もいくつか封じられていることが多く、
思い通りに作れず学習に支障が出ます。
借りるなら月千円くらいのものを借りましょう。(独断と偏見。)

レンタルサーバーとは別に、
MacでもWindowsでも、自分のパソコン上に開発環境をしっかり立ち上げて、
PHPであればXDebugモジュールを使ったリモートデバッグできるようにすると、
初期の学習の助けになるかと思います。
もちろんデータベースもMySQLとかPostgreSQLとか本物を入れて使えば良いです。
どんなプロでもいきなりレンタルサーバー上で組んだりはしないと思います。
不完全なプログラムでサーバー業者やユーザーや第三者に迷惑をかけてしまうことのないよう、
パソコン上でしっかり準備をします。

これは独断と偏見ですが、
サーバー構築のスキルという別のスキルが絡んでくるものの、
とことん無料でやるならAmazon(AWS)やGoogle(GCP)の無料枠でやったらいいです。
激しく制限のついている無料レンタルサーバーで苦労するよりも実践的で
処理能力とストレージが抑えられているくらいで
データベースもWebサーバーも本物が使えますので。
構築に関わる資料を探し当て自分で考えて構築するスキルが問われます。

サーバー構築からとことん逃れたいなら、
クラウド開発環境 PaizaCloudクラウドIDE - クラウドIDEでWeb開発!
もありかもしれません。
あまり使ったことがないので具体的なコメントは差し控えます。

問題を切り分けて細分化して、
一つ一つじっくり解決していくことをおすすめします。
なにも鍛えていない人が急に富士山に登ろうとするようなもので、
自分自身のトレーニングや、登山にまつわる事前調査や用品の手配など、
やるべきことは多数あるはずです。

投稿2021/05/07 01:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

igleij

2021/05/07 03:05 編集

とても役に立つ回答を本当にありがとうございます! 普通の返信機能がない掲示板なら作ることができます。 ただ、どのような動作をさせたら返信機能付き掲示板を作ることができるのかが知りたくてご質問させていただいた次第です。 “問題を切り分けて細分化して、 一つ一つじっくり解決していくことをおすすめします。“ わかりました。ありがとうございます!
guest

0

どうも使っているレンタルサーバーの今のプランではデータベースが使用できず。

別に立てるデータベースサーバがなくても、PHP内からSQLiteを使えるかもしれません。

投稿2021/05/06 23:29

maisumakun

総合スコア145183

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

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

igleij

2021/05/07 02:50

レンタルサーバーなのですが、それでもできるでしょうか。
maisumakun

2021/05/07 02:52

phpinfo()で確認してみましょう。
guest

0

3つのポイントがあると考えます。

ポイント、その1。

「 parent の概念が重要 」
発言には連番で自身の ID がふられ、そして parentID で、その発言がどの発言にぶらさがっているかを管理します。
そこを押さえれば、返信の各個に対しても返信できますし、また巨大に枝分かれするスレッドに発展しても管理できます。

ポイント、その2。
「ファイルシステムと glob なりをフル活用」
ファイルシステム自体が、ひとつのデータベース的なオブジェクトである、と言えます。ファイルシステムと glob なりをフル活用すれば、そこそこ強力なデータ管理ができるでしょう。たとえば、の構想として。

直近nヵ月の発言は、1発言を1テキストファイルで管理する。
ファイル名は以下のように。

'P0000_yyyymmddhhmmss_M0000.txt'

・P0000のところは ペアレントID (ルートは0000)
・yyyymmddhhmmss 発言タイムスタンプ
・M0000のところは、自身のID

とファイル名に情報をもたせておき、マッチング検索とデフォルトのソートを活用します。

ポイント、その3。
「再帰関数でファイル検索」
返信は親子1階層まで、なら必要ありませんが、そうでないタイプなら、
親子関係の抽出と内容表示がコーディング上のハードルとなるでしょう。
以下は、ポイント2と連動しての無限階層型のツリーを表示させるコード例です。(ファイル名のみ)

PHP

1$indent = 0; 2printChild('0000'); 3 4function printChild($parentID){ 5 global $indent; 6 $indent++; 7 foreach (glob('P'.$parentID.'*.txt') as $filename) { 8 echo str_repeat('&nbsp;', $indent * 8).$filename."<br/>"; 9 $myID = substr($filename, 22, 4); // 22 is Len'Pnnnn_yyyymmddhhmmss_M' 10 printChild($myID); 11 } 12 $indent--; 13}

投稿2021/05/07 14:51

FromMZ1500

総合スコア496

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問