2011-04-14 5 views
5

Je pourrais aboyer complètement le mauvais arbre alors pardonnez-moi si ce n'est pas du tout comment je devrais faire les choses.Données de configuration stockées dans la base de données

J'ai une table de configuration dans ma base de données qui doit contenir les détails de configuration pour mon site web. Je veux charger ces données dans le fichier config.php pour l'allumeur de code?

Est-ce quelque chose que je devrais faire ou totalement faux?

Si je mets un appel de base de données en haut du fichier config.php cela sera-t-il appelé chaque fois que quelqu'un charge le site ou juste la première fois?

Désolé si cela semble totalement stupide, je suis un peu confus.

Modifier

Je ne signifie les détails de la base de données, par exemple veulent stocker quelque chose comme la quantité de message à afficher par page. Le script que je crée doit être utilisé sur plus d'un serveur, le nombre de messages par page doit par exemple être modifiable. Je pourrais de ce fait charger ceci dans une session mais j'ai pensé le charger comme une constante *? dans un fichier de configuration serait une meilleure idée.

Répondre

7

Vous pouvez créer un nouveau modèle qui extrait les options de configuration de la base de données, puis charge automatiquement ce modèle afin qu'il soit disponible globalement. Ensuite, vous pouvez accéder à vos options via $this->model_name->function_name($db_column); et avoir $db_column être le nom de la colonne pour l'option que vous recherchez et avoir votre fonction de modèle sélectionner et retourner les données de la colonne.

Personnellement, j'utiliser un fichier de configuration personnalisé:
http://codeigniter.com/user_guide/libraries/config.html

+0

Je vais y jeter un coup d'oeil, merci! – flyersun

0

C'est quelque chose que vous ne devriez pas faire. L'appel de base de données est effectué chaque fois qu'une demande est effectuée et vous ne pouvez pas stocker les informations d'identification de la base de données dans la base de données elle-même.

+0

Je ne veux pas dire des détails de base de données, par exemple vouloir stocker quelque chose comme la quantité de message à afficher par page. Le script que je crée doit être utilisé sur plus d'un serveur, le nombre de messages par page doit par exemple être modifiable. Je pourrais de ce fait charger ceci dans une session mais j'ai pensé le charger comme une constante *? dans un fichier de configuration serait une meilleure idée. – flyersun

10

Voici comment je fais ceci:

D'abord, notre modèle:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

.

class Prefs extends CI_Model 
{ 
    function __construct() 
    { 
     parent::__construct();  
     $pre = array(); 
     $CI = &get_instance(); 

     if ($this->config->item("useDatabaseConfig")) { 
      $pr = $this->db->get("settings")->result();  
      foreach($pr as $p) 
      { 
       $pre[addslashes($p->key)] = addslashes($p->value); 
      }  
     } 
     else 
     { 
      $pre = (object) $CI->config->config; 
     } 
     $CI->pref = (object) $pre;  
    } 
} 
  • Auto-charge ce modèle.
  • dans votre config/config.php, ajoutez cette ligne (ou une autre coutume un, si vous utilisez un): $config["useDatabaseConfig"] = true;

Dans votre base de données, vous avez besoin d'un « paramètres » table « clé » et " valeur "colonnes.

C'est tout. Avec ce modèle, vous pouvez définir quand vous voulez utiliser la base de données et à chaque fois que vous allez avec les fichiers config/*. Php.

Dites, vous pouvez changer $config["useDatabaseConfig"] droit variable avant d'appeler cette méthode modèle (alors, autoload doit être désactivé.)

j'atteindre la variable à l'instance CI, juste parce qu'il est plus facile et agréable.
Lire les données de configuration comme ceci: $this->pref->sess_cookie_name

Questions connexes