2012-01-16 16 views
1

OKこれでショップがサインアップするたびに10個のデフォルトスライドが作成され、後でカスタマイズできるシステムを作成しています。デフォルトのスライドデータは、それらの開始点にすぎません。しかし、私は多くのショップがログインして情報を更新しないと仮定しなければなりません。PHP/MySQL - データベースまたはファイルにデフォルトテキストを保存しますか?

ダッシュボードのスライドでは、すべてのショップが同じ見出しとテキストで始まり、入るまで自分自身で更新します。データベースに挿入しますか?

id | slide_id | user_id | headline | text 
1 | 1  | 1000 | ...  | .... 
2 | 1  | 1001 | ...  | .... 

したがって、データベースはデフォルトであるため、その見出しとテキストの複製が多数含まれます。それは良いアイデアですか?

それとも、私がこのような何かを実行します。

define("DEFAULT_TEXT", "The text goes here and just used once in a file."); 
$text = ($stmt->num_rows < 1 ? DEFAULT_TEXT : $text); 

ので、私は何もそのスライドIDのために存在するかどうかを確認するために私のslide_dataを通じてテーブルを検索するクエリを持っており、それがない場合は、単に使用その見出しとテキスト..しかし、まだ何も追加していない行がない場合は、定数DEFAULT_TEXTを使用してください。そしてその方法では、私は別の言語設定ファイルを持つことができ、そこに翻訳があるので、言語がフランス語の場合は、手動翻訳を持つDEFAULT_TEXT_FR定数を使用します。


どちらをお勧めしますか?私はここに正しいアイデアがあるかどうか分からないので、他の意見や提案を探しています。

ありがとうございます!

答えて

1

デフォルトのテキストをデータベースの外に定義して、dbに格納すると、不要な重複したエントリが作成され、最終的にはパフォーマンスが時間とともに変化します(dbテーブルのサイズが大きくなるほど、表)。

$result = mysql_query(your check to see if slide exists); 
while ($row= mysql_fetch_assoc($result)) { 
    $displayText = $row['text']; 
}; 

if ($displayText != '') { 
    $sql = 'update command'; 
} else { 
    $displayText = DEFAULT_TEXT; 
    $sql = 'insert command'; 
} 

mysql_query($sql); 
+0

ありがとうございました。私の懸念は、テキストを編集できるバックエンドで、インライン編集スクリプトを使いたいということです。データベースに格納されている場合は、簡単です。データベースを更新するだけです。外部のファイルから引っ張ってきて、人がインラインで編集するときに何をするかわからない場合は、何も存在しないときにデータベースを更新しようとします。 – Drew

+0

バックエンドでは、テキストを取得するために最初のクエリを実行する必要がありますデータベースから、何も返されない場合は、単にデフォルトのテキストを表示することも、非表示にすることもできます...何も返されなければ、SQLのクエリを更新ではなく挿入に変更し、条件の後にmysql_query $ sql);ここで$ sqlはテキストのチェック中に作成されます –

+0

私の編集を表示します、私が話しているものの大まかな例です。明らかに、ユーザーがトリガーすると挿入/更新をトリガーしたいと思うでしょう –

0

あなたのやり方は必ずしも間違っているとは限りませんが、ヒントとしては大量の重複データが出る可能性があります。

ショップでデフォルト値と設定値を保持するShopSlidesなどのオブジェクトにこれらをラップすることを検討してください。

これは非常に迅速な形でこのようなものが考えられます。あなたは、データの冗長を避けることができますし、簡単に多くのことを更新する必要なしに、デフォルトのメッセージをカスタマイズすることができますので、私は、定数のソリューションを好む

<?php 
class ShopSlides{ 

    protected $slides = array(); 
    protected $defaults = array(
     '1' => 'Headline', 
     '2'=> 'Healine 2' 
     ... 
    ); 
    public function __construct($slides){ 
     $this->slides = $slides; 
    } 

    public function getSlide($id){ 
     if(array_key_exists($id,$this->slides)){ 
      return $this->slides[$id]); 
     } elseif(array_key_exists($id,$this->defaults)){ 
      return $this->defaults[$id]); 
     } 
     return false; 
    } 
} 
0

簡単:あなたはそれだけでそれ以外の場合は、あなたの定義済みのテキスト

編集をデフォルトと、彼らはそのスライドのテキストを作成したかどうかを確認するためにユーザIDでクエリを実行する定義した後。あなたは、管理メンバーshopSlidesを解析する必要があります。そうすれば、デフォルトのShopSlideをすべて追加して管理することができます!あなたのテーブルに "isDefaultShopSlide"という列を追加するだけです!

関連する問題