Datenbank-Inhalt in array speichern
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
array
break
bringen
code
date
datenbank
datum
form
funktion
inhalt
list
mode
schleife
session
tabelle
tag
tip
verbindung
zugreifen
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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 -
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. -
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. -
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 -
Groß- und Kleinschreibung, mein Freund. ;)
Ansonsten mal ein print_r der config -
Ein print_r zeigt nur Array ( ) an.
Hatte mich im Beitrag vertippt. In der Datenbank steht es auch klein drin - also soweit korrekt. -
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.
-
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 -
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 -
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 -
Ich danke dir! Alles klappt wunderbar. Vielen Dank
Das mit der Session werde ich berücksichtigen - vielen Dank auch für den Tipp. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage