Problem:
- Lese mehrfach beliebige Daten aus verschiedenen Tabellen mit unterschiedlichen Datenstrukturen (Konfig, Listen, etc.)
- Vermeidung von Redundanzen (diverse Funktionen die Daten aus Tabellen lesen jeweils auf die Tabelle angepasste Strukturen, Abfragen etc.)
Lösung:
- "EINE" universell einsetzbar Funktion, die meine Daten in Form eines Arrays zurück gibt
Die EINE Funktion wird wie folgt aufgerufen:
$content = read_value_from_db("close", $db, $db_server, $db_name, $db_pass, "ch_config", "id, searchkey, content_varchar, content_bigint, content_decimal, description", "id");
"close/open" legt fest ob die Verbindung zur DB geschlossen wird oder offen bleiben soll. (Bei vielen Abfragen auf einer Seite schließt erst die letze die Verbindung)
$db, $db_server, $db_name, $db_pass sind die vorher global festgelegten Parameter deiner Datenbank (die brauchst Du sonst ja auch)
"ch_config" ist in diesem Beispiel der Name meiner Konfigurationstabelle, die momentan ausgelesen werden soll
"id, searchkey, content_varchar, content_bigint, content_decimal, description" diese Felder der Tabelle sollen ausgelesen werden
"id" dies ist der Sortierschlüssel für die aktuelle Abfrage
Die Daten werden anschließend wie folgt weiterverarbeitet: (liegen ja in einem Array namens $content):
$content_size = $content[arraysize][0]; ... ist für jede Abfrage standartmässig vorhanden und gibt die Anzahl der Datensätze (Zeilen) zurück, die gelesen wurden
Die Daten selbst sind im Array wie folgt angeordnet:
Array[schlüssel][zähler]
...schlüssel = die feldnamen deiner tabelle, die du abgefragt hast (id, searchkey, content_varchar, content_bigint, content_decimal, description)
...zähler = ist die aktuelle Zeilennummer der Abfrage beginnend bei 0 bis Anzahl der gefundenen Datensätze
Entweder ich spreche das Feld direkt an:
Bsp. echo $content['searchkey'][1] ... dies zeigt mir das erste gefundene Vorkommen meiner Abfrage Inhalt des Feldes "Searchkey"
oder eleganter ich lasse alles anzeigen in einer Schleife (zur Erinnung die Anzahl der gefundenen Daten steht immer in $content[arraysize][0]
for ($zreg = 0; $zreg <= $content[arraysize][0]; $zreg++) {
echo $content['id'][$zreg]
echo $content['searchkey'][$zreg]
echo $content['content_varchar'][$zreg]
...
bis
echo $content['description'][$zreg]
}
Zum Schluss noch der Quellcode für die EINE Funktion, die das auslesen der Daten übernimmt:
function read_value_from_db($db_endstate, $db, $db_server, $db_name, $db_pass, $var_database, $var_items, $var_order) {
// diese Funktion liest Daten aus einer Datenbank
$ausgabe = "";
$items = explode(', ', $var_items);
$zreg = 0; $zreg2 = 0;
$dbh = mysql_connect($db_server, $db_name, $db_pass);
$query = "use " . $db;
if (!mysql_query($query, $dbh)) die("Datenbank existiert nicht.n");
$anfrage = "SELECT " . $var_items . " FROM " . $var_database . " ORDER BY " . $var_order;
$inhalt = mysql_query($anfrage);
while($zeile=mysql_fetch_row($inhalt)) {
$ausgabe['arraysize'][0] = $zreg;
for ($zreg2 = 0; $zreg2 < count($items); $zreg2++) { $ausgabe[$items[$zreg2]][$zreg] = $zeile[$zreg2]; }
$zreg++;
}
if ($db_endstate != "open") { if ($closecfg == "close") { mysql_close(); } } else { $num_rows = "variable open/close zum funktionsaufruf fehlt"; }
return $ausgabe;
} // *** end function ***
----
Server IP: 217.160.72.57
Probable Submitter: 84.162.253.187
----
Manual Page -- http://www.php.net/manual/en/function.mysql-query.php
Edit -- https://master.php.net/note/edit/86290
Del: integrated -- https://master.php.net/note/delete/86290/integrated
Del: useless -- https://master.php.net/note/delete/86290/useless
Del: bad code -- https://master.php.net/note/delete/86290/bad+code
Del: spam -- https://master.php.net/note/delete/86290/spam
Del: non-english -- https://master.php.net/note/delete/86290/non-english
Del: in docs -- https://master.php.net/note/delete/86290/in+docs
Del: other reasons-- https://master.php.net/note/delete/86290
Reject -- https://master.php.net/note/reject/86290
Search -- https://master.php.net/manage/user-notes.php
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.