• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

[PHP] Archtitektur des Datenbank Zugriff

Dadelu

Reinette Coulon
Registriert
06.07.05
Beiträge
939
Hallo Zusammen

Ich hätte da mal eine Grundlegende Frage. Momentan bastle ich an einer neuen Seite und wie ja bekannt ist, will man
da von Anfang an alles richtig machen ;)

Ich überlege gerade, wie ich das am besten mit der Datenbankverbindung machen soll. Ich habe die Prozeduren, welche einen DB Zugriff brauchen in eine externe Datei verlagert. Diese wird wiederum auf den entsprechenden Seiten includiert.

Die Verbindung zur Datenbank mache ich ganz normal mittels mysql_connect. Die Frage nun ist jedoch, wie/wo soll diese geschehen? Bis jetzt habe ich den Verbindungsaufbau immer in eine Prozedur verpackt und diese wiederum in jeder anderen Prozedur aufgerufen um die Verbindung zu erhalten.

Es sollte doch jedoch möglich sein, die Verbindung nur an einem Ort zu machen.. Die steht ja dann und die Prozeduren können mittels der bestehenden Verbindung arbeiten?

Ich hoffe ich habe es nicht zu kompliziert beschrieben :)

Wäre für jeden Input dankbar :)

Gruss D.
 

timmy38233

Rhode Island Greening
Registriert
20.07.08
Beiträge
474
Also ich habe das mit einer eigenen Klasse gelöst (Stichwort: Objektorientierte Programmierung). Falls Du noch nicht weißt was das ist, solltest Du die dazu mal Tutorials anschauen (Am besten Googlen, oder z.B. dieses), da das deinen Programmierstil verbessert und es einiges erleichtert ;)
In der Klasse habe ich dann Methoden wie "getRow" ,"insert" und "update" festgelegt. Die Verbindung zur Datenbank erfolgt also NUR in dieser Klasse (bzw mittels des Objekts).
Um bspw. einen neuen Eintrag in der Datenbank anzulegen schreibe ich in den eigentlichen Code also gar keine mysql-Befehle mehr sondern übergebe lediglich Arrays:
Code:
//Array mit den Daten festlegen
$dataToInsert = array("Spalte1"=>"Wert1", "Spalte2"=>"Wert2");
//Daten mittels Objekt-Methode einfügen
$datenbankObjekt->insert("Tabellenname", $dataToInsert);

In der Klasse selbst habe ich dann den MySQL-Teil übernommen. Wenn die insert-Funktion aufgerufen wird, wird innerhalb der Klasse eine weitere Funktion namens "query" aufgerufen, die dann den eigentlichen MySQL-Query erzeugt und ausführt. In dieser Funktion habe ich dann auch das mysql-connect und mysql_close verpackt ;)
Man kann das alles natürlich auch nur als "normale" PHP-Funktion definieren, aber der Ordnung halber verpacke ich vieles in Klassen...

Hoffe Du verstehst wie ich das meine... Am Besten einfach mal ein wenig mit Klassen und Objekten herumprobieren und Du wirst feststellen, dass das einiges erleichtert.