人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでの質問です。
掲示板などでHTML上で設定を変更できるようなものがありますが
あれは仕組みとしては
1.基本的な情報が入ってる場所からデータを取ってくる
2.取って来たデータを設定画面に表示
3.設定を変更
4.変更されたデータを書き込み
大雑把に上記の4点になると思いますが
変更されたデータの書き込みは
ereg_replaceで置き換えて書き込みをすればいいと思っているのですが
もっと効率の良いやり方やサンプルなどあれば教えていただけないでしょうか?

●質問者: quocard
●カテゴリ:インターネット ウェブ制作
✍キーワード:HTML PHP データ 掲示板
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● heppokoA
●23ポイント
$settei1 = {?settei1}

みたいな感じで別に読み取り専用のひな形ファイルを用意しておき,str_replace()などを使って新しい設定データで{?settei1}の部分を置き換えておいて,設定ファイル全体をそっくり上書きする方法もあります。

あるいは,設定がデータベースに入っていればUPDATE文でいいですね。

◎質問者からの返答

すんません。

未熟者なもんで{?settei1}の意味がわかりませんでした。

検索しても{}や?の意味が出てこないのですが・・・。

検索の仕方が悪いのかな・・・。


2 ● heppokoA
●23ポイント

すみません。heppokoAです。

$new_config = str_replace("{?settei1}",$new_settei1,$hinagata_file_text);

という風にするというだけで,特別な意味合いはありません。混乱させてしまい申し訳ありません。

◎質問者からの返答

ありがとうございます。

理解出来ました。置き換え1つをとっても色々とあるので

どれが最適なのかまだわかりませんが

こちらもとても参考になりました。

ありがとうございます。


3 ● にぎたま
●22ポイント

>掲示板などでHTML上で設定を変更できるようなものがありますが

とのことですが、これって例えば

「ツリー表示」と「フラット表示」を切り替える

そういう感じのことですよね?

いろいろあると思うのですが、

一番最初に思いつくのは、

設定がデータベースに入っていて

表示する前にその設定を取得して、

設定の値に応じて表示を切り替えるのかなと考えました。コードはイメージですけど以下のような感じです。

$setting = データベースに設定を問い合わせ;

switch($setting){

case "flat":

echo フラット表示のHTML;

break;

case "tree":

echo ツリー表示のHTML;

break

}

こうすることで、スムーズになると思いますが、

どんな人でも、管理者が決めた設定にしかなりません。

そこで、ユーザーが任意の表示に切り替えたいというならば、

<a href='http://sample.com/bbs.php?display=flat'>フラット表示</a>

<a href='http://sample.com/bbs.php?display=tree'>ツリー表示</a>

というようなアンカーを用意して、

bbs.phpのはじめを以下のように。

$setting = $_GET['display'];

(以下は同じ・・・)

としてもよいと思います。

また、ユーザーが自身で決めた設定方法を保存するのであればクッキーを使用してもよいですし、

ログインさせるようなサイトであればデータベースのユーザー情報みたいなところに格納するのもひとつの方法かと思います。

解決になりますか?

◎質問者からの返答

なるほど。

アンカーなども手段の1つとしてありますね。

参考にさせていただきます。


4 ● tezcello
●22ポイント

一般の訪問者が変更をするのではなく、そのページのオーナーが設定を変更する為の仕組みという事で説明します。

php では外部ファイルをプログラムとして読込む事ができるので、

例えば以下のようなグローバル定数を設定するファイルを作っておき(cfg.php というファイル名と仮定します)

<?php
// 設定値一覧
define("SETTEI1", 'atai1');
define("SETTEI2", 'atai2');
?>

そして、本体のプログラムの始めの方で

require('cfg.php');

として読み込むようにします。

値を変更したい時は、"define"等のコマンドも単純に文字列としてこのファイルをそっくり上書してしまいます。(パーミッションを666にしておかないと上書き出来ないと思います)

他にも普通の変数や配列変数への代入文を並べておくという事もできます。

◎質問者からの返答

そういった手法もあるのですね。

とても参考になります。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ