PHP: elegante lösung für datenbank daten fetching
-
hallo zusammen
ich überlege mir gerade wie ich am besten daten aus einer datenbank am elegantesten zusammenführe und ausgebe. es ist so das ich in einer anfrage 5 tabellen benutze und das resultat dann als zusammengeführte zeile erhalte. ich möchte nun folgendes:
a) die daten aus dem resultat dynamisch verarbeiten. soll heissen, dass ich mir keine gedanken darüber machen muss, jedes feld statisch zu überprüfen und dann auszugeben
b) die daten dann auch dynamisch ausgeben. also auch hier möchte ich nicht wirklich unnützige if/else bedingungen wenn man es vereinfacht und dynamisch mit einer schleife, einem objekt und arrays lösen könnte
jetzt meine frage: wie löst man sowas am besten? ich muss am ende die daten einem kriterium zuteilen, damit ich wenigstens weiss, das die felder des result von X-Y aus der tabelle1 kommen und so weiter. sonst weiss ich beim output ja nicht was z.B. preisinformationen sind, was artikelinformationen und so weiter.
zum mysql teil sieht meine anfrage als beispiel inetwa so aus:
SELECT * FROM table1 AS t1, table2 AS t2, table3 AS t3, table4 AS t4, table5 AS t5 WHERE t1.id = '2344' AND t2.id = '2344' AND t3.id = '2344' AND t4.id = '2344' AND t5.id = '2344'
hier weiss ich im result aber leider nicht welches feld vom resultat welcher tabelle angehörig ist. zwar könnte man glaub ich sowas wie:
SELECT id AS table1.id, article AS table2.article FROM ....
aber da ich viele felder habe und beinahe alle davon brauche, macht eine limitierung im SELECT statement keinen sinn meiner meinung nach.
zum php teil:
jetzt stelle ich mir eben die frage, wie baue ich am besten ein dynamisches fetching auf, wobei ich mir nur gedanken um die zuweisung der bereiche machen muss, also z.b. "artikel", "kunden", "preise" usw. jedoch aber nicht um die einzelnen felder, also sie wirklich statisch ansprechen. und zuguter letzt muss ich aber für den output dann noch wissen, wie ich das feld article_name von der tabelle "artikel" dann so ausgeben kann "Artikel Name:". dazu müsste ich ja meiner meinung nach mehrdimensionales array erzeugen welches die feldnamen in der ersten spalte enthält und in der zweiten spalte die bezeichnung fü den web output. so mache ich es zumindest derzeit.ich hoffe ihr könnt mein problem verstehen. eigentlich ganz simpel und mit wenig text wie folgt erklährt:
- datenbank anfrage auf mehrere tabellen gleichzeitig in einem query
- das resultat einem objekt mit arrays oder ähnliches so zuweisen, damit es klar ist woher die daten kommen und für was sie bestimmt sind, damit ein print logisch und ohne hexerei vonstatten gehen kann.
-
harry_carry schrieb:
- datenbank anfrage auf mehrere tabellen gleichzeitig in einem query
Das kommt stark auf den Einzelfall an. Die Datenbank muss clever/abstrakt entworfen worden sein. Für komplexere Bedingungen gibt es verschiedene JOINs. Damit müsstest du dich allgemein beschäftigen.
harry_carry schrieb:
- das resultat einem objekt mit arrays oder ähnliches so zuweisen, damit es klar ist woher die daten kommen und für was sie bestimmt sind, damit ein print logisch und ohne hexerei vonstatten gehen kann.
Für sowas gibt es Funktionen, um einzelne Implementierungen zu unterteilen. Der Programmierer, der die Daten eines Artikels x braucht, ruft so eine Funktion mit dem Argument x auf und erhält die benötigten Daten in jeweiliger Form (Array, Objekt oder was auch immer), um damit ohne DB-Kenntnisse weiterzuarbeiten. Du musst eine Schnittstelle haben/entwerfen, die anwendungsabhängig Daten aus der DB im PHP-Code benutzen lässt. Die Logik entwickelst du dann, wenn du die Anforderungen der Anwendung klar definierst. Je nachdem, wie gut du die Vorarbeit, sprich die Schnittstelle, machst, kannst du später auch schneller und einfacher spezielle Aufgaben (Artikel bearbeiten, löschen, prüfen, vergleichen ...) lösen.
Gruß
-
danke für deine bemühung