kostenloser Webspace werbefrei: lima-city


Datenbank-Inhalt in array speichern

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    mpsftp

    mpsftp hat kostenlosen Webspace.

    Hallo zusammen,

    ich habe zunächst eine tag/date">Datenbankabfrage:

    include ('config.php');
    
    $link = mysqli_connect("$datenbank_host", "$datenbank_username", "$datenbank_passwort");
    
        if (!$link)
            {
            die("Es ist ein schwerwiegender Fehler bei der Verbindung mit der Datenbank aufgetreten. Fehlerbeschreibung: " .
                mysqli_error());
            }
    
    mysqli_select_db($link, $datenbank_datenbank);
    
    include ('functions_config.php');


    In der functions_config.php soll nun folgendes passieren:

    In der Tabelle fins_config gibt es "config_value" und "config_name". Wie kriege ich es hin, dass ich in Zukunft überall nur noch

    $config["zeile1"];


    verwenden muss, wenn ich den Wert von Value haben möchte, wo der Name "zeile1" ist?

    Ich habe mich schon an While-Schleifen oder an der Funktion mysqli_fetch_array versucht, jedoch klappt einfach nichts so wie ich es will.

    Kann mir jemand helfen oder eine php-Funktion dazu nennen?

    Vielen Dank!

    Gruß,
    mps
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. matthias-detsch

    Kostenloser Webspace von matthias-detsch

    matthias-detsch hat kostenlosen Webspace.

    zunächst mal hast du keine abfrage, sondern du hast nur eine verbindung zur db hergestellt.
    um deine daten zu erhalten benötigst du also eine abfrage:
    $mysqli_query = "SELECT * FROM `fins_config` WHERE `config_name`='zeile1' ";

    Jetzt hast du schon mal die daten so, dass du sie einer variable zuweisen kannst.
    du möchtest jedoch auf ein array zugreifen, ich weiß nicht, wie das gehen soll.
    aber ich würde was anderes vorschlagen, nämlich eine funktion:
    function config($config_name){
    // die datenbank verbindung muss vor aufruf der Funktion hergestellt worden sein
    $mysqliQuery = "SELECT * FROM `fins_config` WHERE `config_name`='".$config_name."' ";
    $mysqliOutput = mysqli_query($link, $mysqliQuery);
    //jetzt das heraussuchen des wertes config_value
    if($data=mysqli_fetch_assoc($mysqliOutput)){
    // wenn überhaupt ein datensatz gefunden wurde.
    // bei mehreren vorkommen von 'zeile1' sollte eine while-schleife verwendet werden, 
    //welche dann ein array erstellt und zurück gibt
    $value = $data['config_value'];
    }
    return $value;

    ist noch nicht getestet, sollte aber funktionieren

    jetzt noch die erwähnte while-schleife:
    $value = array();
    while($data=mysqli_fetch_assoc($mysqliOutput)){ ?>
          array_push($value , $data['config_value']);
     }
    return $value;

    und so rufst du sie dann auf, sofern du sie eingebunden hast oder eingefügt. (sollte am besten ganz oben stehen)
    $configValue = config('zeile1');



    ich hoffe, dass es funktioniert und es das war, was du wolltest.

    matze

    Beitrag zuletzt geändert: 23.4.2015 19:32:44 von matthias-detsch
  4. Lass dir via while-Schleife und _fetch_assoc dir entsprechend alle Zeilen raus.
    Über das Array, dass du im Kopf der Schleife definierst kannst du deine config z.B. so basteln:

    $query = mysqli_query($link, 'SELECT config_name, config_value FROM fins_config');
    $config = array();
    while($data = mysqli_fetch_assoc($config))
        $config[$data[0]] = $data[1];


    Damit hast du dein Array $config
  5. Autor dieses Themas

    mpsftp

    mpsftp hat kostenlosen Webspace.

    Hallo,

    erstmal vielen lieben Dank euch beiden für eure Hilfe.

    @muellerlukas: Leider funktioniert dein Code bei mir nicht, trotzdem jedoch vielen Dank für die Hilfe.

    @matthias-deutsch: Dein Code funktioniert fast, jedoch hast du (mit While-Schleife) am Ende 2x } vergessen und mittendrin den PHP-Code schon beendet (?>). Leider wird die Variable (oder ist es doch ein Array?) jedoch nicht gefüllt, sprich es wird kein Inhalt ausgegeben.
  6. Tausche mal den Link und die Query, das müsste afaik anders rum sein. War spät. ;)
    Ansonsten hilft mysqli_error.

    Problem beim Code von Matthias ist, das für jede Config-Abfrage eine Query läuft. Unschön.
  7. Autor dieses Themas

    mpsftp

    mpsftp hat kostenlosen Webspace.

    Leider auch nicht besser. Das mit der Query: Da hast du natürlich auch recht.

    Nach einer Fehlerabfrage kam das (nicht mit mysqli_error()):

    Use of undefined constant aktueller_bediener - assumed 'aktueller_bediener' in /home/webpages/lima-city/mpsftp/finS/includes/frame_top.html on line 12


    Aktueller_bediener ist der Wert in der Datenbank (config_name).

    An entsprechender Stelle befindet sich die Abfrage:

    <?php echo $config['aktueller_bediener']; ?>


    Muss das Query nicht noch irgendwie in den Code rein? Bisher ist es ja nur in der Variable "query" gespeichert.

    Beitrag zuletzt geändert: 24.4.2015 22:00:03 von mpsftp
  8. Groß- und Kleinschreibung, mein Freund. ;)
    Ansonsten mal ein print_r der config
  9. Autor dieses Themas

    mpsftp

    mpsftp hat kostenlosen Webspace.

    Ein print_r zeigt nur Array ( ) an.

    Hatte mich im Beitrag vertippt. In der Datenbank steht es auch klein drin - also soweit korrekt.
  10. Hallo Zusammen,

    mal eine grundsätzliche Frage:
    Was soll das bringen eine ganze Datenbank in ein Array zu bringen?
    Soll das Performance bringen? Oder warum sollte man das machen?
    Normalerweise holt man sich doch nur die Daten aus der DB mit denen man gerade arbeiten will.

    Gruss
    Dunkeltuten
  11. Autor dieses Themas

    mpsftp

    mpsftp hat kostenlosen Webspace.

    Es geht nicht um eine ganze Datenbank, sondern nur um eine Tabelle. Diese Tabelle wird bei mir sehr sehr häufig verwendet und enthält 2 Werte: Name und Value, also Wert. Ich finde es 2000mal einfacher, das ganze als Array abrufen zu können, als ständig mit huderten Variablen rum zu hantieren.
  12. michaelkoepke

    michaelkoepke hat kostenlosen Webspace.

    Hallo,

    mpsftp schrieb:
    Es geht nicht um eine ganze Datenbank, sondern nur um eine Tabelle. Diese Tabelle wird bei mir sehr sehr häufig verwendet und enthält 2 Werte: Name und Value, also Wert. Ich finde es 2000mal einfacher, das ganze als Array abrufen zu können, als ständig mit huderten Variablen rum zu hantieren.

    Warum du das so machst und weshalb kann uns allen egal sein! Jeder entwickelt schließlich seine eigenen Programme und Funktionen. (Ich mache es auch so, ich lade meine Config in ein Array.)

    Aber wichtiger, funktioniert nun deine Funktion? Kannst du nun auf das Array zugreifen? Wenn nicht, könntest du nochmal deinen Code posten, damit wir die Fehler suchen können.

    PS: Ein Tipp von mir, (sofern du bei jedem Aufruf die Config lädst) speichere dieses Array in eine SESSION, dann greifst du nur einmal auf die DB zu, somit werden lange Ladezeiten vermieden. (Für dich als Entwickler solltest du etwas einfallen lassen, aber für Besucher ideal)

    MFG Michael
  13. Autor dieses Themas

    mpsftp

    mpsftp hat kostenlosen Webspace.

    Ok. Also:

    Auf diese Datei wird zugegriffen:

    <?php
    
    include ('includes/functions.php');
    
    $mode = $_GET['mode'];
    
    switch($mode)
    {
      case ("top"):
      $temp = "frame_top.html";
      $re = "10";
      $re_url = "./frames.php?mode=top";
      break;
    
      case ("btn"):
      $temp = "frame_btn.html";
      break;
    
      case ("list"):
      $temp = "frame_list.html";
      $re = "2";
      $re_url = "./frames.php?mode=list";
      break;
    
      case ("info"):
      $temp = "frame_info.html";
      $re = "2";
      $re_url = "./frames.php?mode=info";
      break;
    
      default:
      echo "Falscher MODE-WERT (GET)";
      exit;
      break;
    }
    
    include ($template_loader);
    
     ?>


    Dann der Template-Loader:

    <?php
    
    $templa = "includes/$temp";
    
    if ($sh != "0") {
        include ('overall_header.html');
    }
    
    if ($temp == "") {
        echo "Error: TEMPLATE KONNTE NICHT GELADEN WERDEN (ERROR 74)";
        exit;
    }
    else {
        include ($templa);
    }
    
    if ($sf != "0") {
        include ('overall_footer.html');
    }
    
     ?>


    Hier die functions.php, die überall includet wird:

    <?php
    
    // SESSION_STARTEN:
    
    session_start();
    
    // DATENBANK VERBINDUNG
    
    include ('config.php');
    
    $link = mysqli_connect("$datenbank_host", "$datenbank_username", "$datenbank_passwort");
    
        if (!$link)
            {
            die("Es ist ein schwerwiegender Fehler bei der Verbindung mit der Datenbank aufgetreten. Fehlerbeschreibung: " .
                mysqli_error());
            }
    
    mysqli_select_db($link, $datenbank_datenbank);
    
    include ('functions_config.php');
    
    //Beispiel für eine Datenbank-Abfrage
    
    /*
    
    $ergebnis = mysqli_query($link, "SELECT nickname, user_id FROM fins_user");
    while($row = mysqli_fetch_object($ergebnis))
    {
      echo $row->nickname;
      echo $row->user_id;
    }
    */
    
    // Vergabe der globalen Variablen
    
     $template_loader = "includes/templates.php";
    
     $logo1 = "images/logo1.png";
     $logo2 = "images/logo2.png";
    
     $soft_name = "FinS";
    
     // Datum und Uhrzeit
     $timestamp = time();
     setlocale(LC_TIME, "de_DE.utf8");
    
     $tag = date("d",$timestamp);
     $monat = date("m",$timestamp);
     $jahr = date("Y",$timestamp);
    $stunde = date("H",$timestamp);
    $minute = date("i",$timestamp);
    $sekunde = date("s",$timestamp);
    
    $tage = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
    $tage_s = array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa");
    
    $wwtag = date("w");
    $wtag = $tage[$wwtag];
    
    $wwtag_s = date("w");
    $wtag_s = $tage_s[$wwtag_s];
    
     ?>


    Und der Code soll in die functions_config.php. Die Abfrage soll im Template erfolgen mit:

    <?php echo $config['aktueller_bediener']; ?>


    Beitrag zuletzt geändert: 27.4.2015 17:36:31 von mpsftp
  14. michaelkoepke

    michaelkoepke hat kostenlosen Webspace.

    OK,

    so richtig verstehe ich es nicht, aber du willst nun einfach deine Variablen (aus DB) in Form von $config[Variablenname] = Variableninhalt aufrufen!?

    Wenn ja, dann schau dir folgenden Code an ...
    // Den Verbindungsaufbau zur DB hast du ja schon ...
    // Nun Folgt die Abfrage...
    $sql = "SELECT * FROM fins_config";
    $tresult = mysqli_query($connection, $sql);
    // Nun bekommen wir die komplette Tabelle zurückgeliefert
    // Über eine while-Schleife lesen wir nun jede Zeile in dieser Tabelle aus 
    while ($row = mysqli_fetch_assoc($result)) {
    	// Nun können wir festlegen was mit den Variablen passieren soll
    	$config[$row['config_name']] = $row['config_value'];
    }

    Nun kannst du die $config in Form von $config['config_name'] aufrufen.

    Und mein Tipp: (da du ja die SESSION verwendest) diese Inhalte nicht in die $config zu schreiben, sondern in eine SESSION-Variable ($_SESSION['config'][config_name']) dann kannst du sie überall verwenden und brauchst deine DB nicht jedes mal mit dieser Abfrage belasten.

    MFG Michael

    Beitrag zuletzt geändert: 28.4.2015 12:08:58 von michaelkoepke
  15. Autor dieses Themas

    mpsftp

    mpsftp hat kostenlosen Webspace.

    Ich danke dir! Alles klappt wunderbar. Vielen Dank

    Das mit der Session werde ich berücksichtigen - vielen Dank auch für den Tipp.
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!