Ankündigung

Einklappen
Keine Ankündigung bisher.

Variablen in Datenbank speichern und auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Variablen in Datenbank speichern und auslesen

    Hallo zusammen,

    ich will meine grundlegenden Parameter für meine Internetseite in einer Datenbank abspeichern um einfach neu Parameter hinzufügen zu können.

    Ich habe mir eine Tabelle mit zwei Spalten angelegt, einen für den Parameternamen und einen für den Wert des Parameters.

    Das Reinschreiben usw ist kein Problem.

    Bisher habe ich die Parameter alle in einer Datei stehen und include einfach die Datei. Dadurch werden die Parameter/Variablen als global gespeichert. Unter anderem sind unter den Parameter auch ein paar Arrays für den Seitentitel und sonst noch ein paar Sachen.

    Ich habe jetzt Versuche gemacht mit Datenbank auslesen und dann die Werte an den Array $GLOABALS[] angehängt.

    Das hat mit den normalen Variablen gut funktionert nur mit den Arrays hab ich Probleme.

    PHP-Code:
    function read_parameter $sql_host $sql_user $sql_pwd $sql_database )
        {
            
    // SQL Verbindung aufbauen
            
    $db_handling mysql_connect $sql_host $sql_user $sql_pwd );
            
    // Datenbank waehlen
            
    mysql_select_db $sql_database );
            
    // SQL Abfrage stellen
            
    $query "SELECT name,wert FROM parameter WHERE aktiv='TRUE'";
            
    $result mysql_query $query );
            
    // Abfrage auswerten
            
    for ( $row 0$row mysql_num_rows $result ); $row++ )
            {
                
    // Name und Wert in eine Variable schreiben
                
    $name string_replace mysql_result $result $row ) , "read" );
                
    $wert string_replace mysql_result $result $row ) , "read" );
                
    // Globale Variable definieren
                
    $GLOBALS$name ] = $wert;
            }
            
    // Mysql Verbindung beenden
            
    mysql_close $db_handling );
        } 
    Das ist der Code von meinem Versuch. Die normalen Variablen gehen nur die Arrays nicht. Hat jemand einen Tipp für mich wie ich das auch noch hinbekomme?

    Gruß
    Markus

  • #2
    Hallo freehawk,

    zunächst ein Herzliches Willkommen im phpfriend.de-Forum!

    Grundsätzlich kannst du keine Arrays direkt in einer Datenbank speichern. Hierzu musst du diese serialisieren und anschließend beim auslesen wieder deserialisieren.

    Für meinen Geschmack ist es aber nicht wirklich sinnvoll, die Konfiguration als globale Variablen zu publizieren. Eine derartige Funktion sollte man tunlichst in eine Funktion kapseln, die einem die nötigen Konfigurationswerte für einen gegebenen Key zurückliefert. Im einfachsten Fall sind das zwei Funktionen mit dem Namen get_config_value($Key) und get_config_array($Key). Möchtest du das hübscher gestalten, implementierst du dir einen configurationManager (Klasse), der die bereits geladenen Konfigurationen cached und nur einmal im kompletten Code instanziiert wird (Singleton). So garantierst du, dass die Performance der Applikation nicht in den Keller geht, weil z.B. in einem Formular zig Werte für die sprachabhängige Beschriftung geladen werden.

    Kommentar


    • #3
      Hallo dr.e.

      danke für die Antwort.

      Ich wollte eigentlich nur einmal auf die Datenbank zugreifen um die ganzen Variablen auszulesen. Die beiden Methoden zum Auslesen der jeweiligen Variable ist natürlich auch eine Möglichkeit nur muss ich dann jede einzeln Abfragen, was ich eigentlich nicht wollte, da ich meine, man kann mich gerne verbesseren, dass daurch die Performance zurück geht.

      Hast du ein Beispiel für so einen configurationManager? Ich will mir das mal anschauen.

      Gruß
      Markus

      Kommentar


      • #4
        Hallo freehawk,

        ob du nun einmal alle ausliest und dabei einige lädst, die du u.U. nicht brauchst, oder jeden einzeln und anschließend cachest ist IMHO egal. Letzteres ist nur ein wenig eleganter.

        Das Adventure PHP Framework enthält eine Implementierung eines configurationManagers. Eine API-Bescheibung kannst du dir unter http://www.adventure-php-framework.o...n_manager.html ansehen, den Source-Code findest du unter http://www.adventure-php-framework.o...-php4_php5.zip. Solltest du Fragen haben, dann her damit!

        Grundsätzlich kann man die Komponente in einer Klasse, die von coreObject erbt, wie folgt nutzen:
        PHP-Code:
        $Config = &$this->__getConfiguration('<NAMESPACE>,'<CONFIGNAME>');
        echo $Config->getValue('
        <SECTION>','<KEY>')); 

        Kommentar


        • #5
          Hallo,

          ich habe mir mal das mit dem configurationManager angeschaut. Das ist mir für meine paar Variablen zu aufwendig.

          Ich habe mich für das einzelne Auslesen der Variablen entschieden.

          Du hast da was mit Cachen geschrieben. Wie würdest du das machen?

          Gruß
          Markus

          Kommentar

          Lädt...
          X