Skip to main content

PHP/MySQL - store default text in database or in a file?



OK so I am creating a system where whenever a shop signs up, they get 10 default slides that they can then customize later. The default slide data is just a starting point for them. But I have to assume a lot of shops will not log in and update the information, they just want something up ASAP.





So say for the Dashboard slide, every shop starts out with the same heading and text until they go in and update it themselves. Do I insert it in the database, like so:







id | slide_id | user_id | headline | text

1 | 1 | 1000 | ... | ....

2 | 1 | 1001 | ... | ....







So the database will contain many duplicates of that headline and text since it is the default. Is that a good idea?





Or do I do something like this:







define("DEFAULT_TEXT", "The text goes here and just used once in a file.");

$text = ($stmt->num_rows < 1 ? DEFAULT_TEXT : $text);







so I have a query that searches through my slide_data table to see if anything exists for that slide id, and if it does, then just use that headline and text.. but if there are no rows, which means they have not added anything yet, then just use the constant DEFAULT_TEXT . And that way, I can have different language config files and have translations in there, so if the language is French then it will use the DEFAULT_TEXT_FR constant which will have the manual translation.








Which one do you recommend? I'm not sure if I have the right idea here, so looking for some other opinions and suggestions.





Thanks!


Comments

  1. I would define the default text outside of the database, storing it in the db creates unecessary duplicate entries which will ultimately effect performance over time (the larger a db table gets the longer it takes to quuery that table). Once you have it defined just run a query by user id to see if they created text for that slide, otherwise default to your predefined text

    Edit:

    $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);

    ReplyDelete
  2. The way you are doing it is not necessarily incorrect, but as you hint, you may end up with a large amount of duplicate data.

    You may want to consider wrapping these into an object such as ShopSlides which holds default values and configured values by Shop.

    This could in a very quick form be something like this:

    <?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;
    }
    }

    ReplyDelete
  3. I'd prefer the constants solution because you can avoid data redundance and you can easily customize default messages without the need to update a lot of records...

    ReplyDelete

Post a Comment

Popular posts from this blog

Slow Android emulator

I have a 2.67 GHz Celeron processor, 1.21 GB of RAM on a x86 Windows XP Professional machine. My understanding is that the Android emulator should start fairly quickly on such a machine, but for me it does not. I have followed all instructions in setting up the IDE, SDKs, JDKs and such and have had some success in staring the emulator quickly but is very particulary. How can I, if possible, fix this problem?

CCNA 1 Final Exam 2011 latest (hot hot hot)

  Hi! I have been posted content of ccna1 final exam (latest and only question.) I will post the answer and insert image on sunday. If you care, please subscribe your email an become a first person have full test content. Subcribe now  Some question  have not content because this question have images content. So that can you wait for me? SUNDAY 1. A user sees the command prompt: Router(config-if)# . What task can be performed at this mode? Reload the device. Perform basic tests. Configure individual interfaces. Configure individual terminal lines. 2. Refer to the exhibit. Host A attempts to establish a TCP/IP session with host C. During this attempt, a frame was captured with the source MAC address 0050.7320.D632 and the destination MAC address 0030.8517.44C4. The packet inside the captured frame has an IP source address 192.168.7.5, and the destination IP address is 192.168.219.24. At which point in the network was this packet captured? leaving host A leaving ATL leaving...