![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Dynamisches Füllen einer SELECT-Liste
Vorwort Dieses Tutorial beschreibt in vielen kleinen und hoffentlich auch einfach zu verstehenden Schritten, wie man es schafft eine SELECT-Liste dynamisch mit Inhalt zu füllen. Dabei ist es egal, wie die Daten gespeichert werden. In unserem Beispiel wählen wir als Speicherform eine MySQL-Datenbank aus, weil dieses Szenario wohl am häufigsten vorkommt. Prinzipiell könnten die Daten aber auch in einer XML- oder Textdatei gespeichert sein. Es wird eine Funktion geschrieben, die es uns ermöglicht zum Einen die Daten in der Liste unterzubringen, zum Anderen aber auch noch einen Eintrag vorzuselektieren. Dieses Tutorial soll Euch nicht nur eine Lösung für ein Problem von Euch geben, sondern es soll Euch auch dazu animieren selbst einmal darüber nachzudenken, was in dieser Funktion passiert, wie sie arbeitet. Es sollte gesagt sein, dass man für das volle Verständnis dieses Tutorials sicherlich kein (My)SQL-Experte sein muss, allerdings ist es nicht hinderlich, wenn man schon mal mit PHP auf eine MySQL-Datenbank zugegriffen hat, da darauf in diesem Tutorial nicht eingegangen wird. Nun aber genug des Vorworts, auf geht es. Inhaltsübersicht Geändert von Jann Hendrik (26.05.2007 um 10:11 Uhr). |
|
|
|
|
|
Nach oben #2 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
1. Schritt - Füllen der Datenbank mit Testdaten
Wir brauchen natürlich einige Testdatensätze in einer MySQL-Datenbank, damit wir dieses Tutorial durcharbeiten können. Wir müssen schließlich etwas zum Auslesen haben. Wir legen uns also eine Beispieltabelle an. Hier ist der von PHPMyAdmin generierte SQL-Code. SQL Code:
Diesen könnt Ihr jetzt per PHPMyAdmin ausführen oder PHP arbeiten lassen. Das könnte dann z.B. so aussehen. PHP-Code:
Wenn Ihr nun mittels PHPMyAdmin oder einer anderen Verwaltungsanwendung in die verwendete Datenbank schaut sollte dort eine Tabelle selectdemo mit fünf Datensätzen enthalten sein. Ist dies der Fall, so könnt Ihr zu Schritt zwei springen. Sollten Probleme aufgetaucht sein, so versucht diese einzugrenzen und bewusst zu reproduzieren. Wir haben eine Linkliste mit vielen Verweisen zu guten Anlaufstellen zum Erlernen von SQL zusammengestellt. Solltet Ihr z.B. Verständnisschwierigkeiten bzgl. des SQL-Codes haben, so empfehlen wir Euch dringends Euch mit einem SQL-Tutorial auseinanderzusetzen. Es ist einfacher, als man zu Beginn denkt. Geändert von Ben (07.03.2007 um 09:10 Uhr). |
|
|
|
|
|
Nach oben #3 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
2. Schritt - Planen der eigentlichen Funktion
Da wir nun auf eine Datenbasis zurückgreifen können, können wir uns nun der eigentlichen Arbeit zuwenden. Wir erstellen also eine Funktion, die aus Daten, die in einem Array vorliegen eine SELECT-Liste füllt. Warum die Daten in einem Array vorliegen werden wir etwas später sehen. Bevor wir anfangen diese Funktion zu schreiben sollten wir uns erst einmal überlegen, was diese Funktion im Endeffekt alles können sollte und welche Informationen dafür benötigt werden.
Da die Anzahl der Konfigurationsangaben für die SELECT-Liste variieren kann ist es clever hier auf ein assoziatives Array zurückzugreifen. Die optionale Ausgabe innerhalb der Funktion ist natürlich kein Muss, allerdings ist es in manchen Fällen sinnvoll nicht direkt HTML-Code auszugeben, sondern diesen bis zu einem späteren Zeitpunkt zwischenzuspeichern. In anderen Fällen ist dies wiederum nicht nötig. Wir legen fest, dass standardmäßig der erstellte HTML-Code zurückgegeben werden soll. Wir können mit den bisherigen Informationen, die wir zusammengetragen haben also nun die Signatur der Funktion definieren PHP-Code:
Machen wir uns nochmal grob klar, wie eine SELECT-Liste in konkretem HTML-Code aussieht. HTML-Code:
<select name="nameDerListe" size="anzahlDerAngezeigtenElemente"> <option selected value="wert">Beschriftung</option> [..] </select> Nachdem wir uns nun klargemacht haben, was wir im Endeffekt erhalten wollen und was wir dazu brauchen, können wir nun zu Schritt 3 weitergehen, der Implementierung der Funktion. Geändert von Ben (07.03.2007 um 09:12 Uhr). |
|
|
|
|
|
Nach oben #4 | |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
3. Schritt - Implementierung der Funktion build_selectlist
Der Titel dieses Kapitels trifft nicht 100%ig zu, da wir nicht nur die Funktion implementieren, sondern uns auch noch damit beschäftigen die benötigten Daten zu beschaffen. Das heißt, die Konfigurationseinstellungen für die Liste und die anzuzeigenden Datensätze. Das ist auch unser erster Schritt. Je nach der Tabellenstruktur, die Ihr in Eurer Produktivumgebung verwendet, müsst Ihr hier natürlich die SQL-Abfrage anpassen. Mit diesem Code erstellen wir ein Array $data, welches dann die anzuzeigenden Datensätze enthält. PHP-Code:
Mit $data[] wird, wie hier beschrieben, ein neuer Datensatz an das Ende des Arrays angehängt. Lässt man das array_pop($data) nun weg erhält man bei einer Testausgabe mit PHP-Code:
Code:
array(6) {
[0]=>
array(4) {
[0]=>
string(1) "1"
["id"]=>
string(1) "1"
[1]=>
string(3) "Ben"
["name"]=>
string(3) "Ben"
}
// ...
[4]=>
array(4) {
[0]=>
string(1) "5"
["id"]=>
string(1) "5"
[1]=>
string(5) "Peter"
["name"]=>
string(5) "Peter"
}
[5]=>
bool(false)
}
Aus diesem Grunde behandeln wir es mit array_pop(). Zitat:
Nun erstellen wir uns ein assoziatives Array, welches für die Konfiguration der SELECT-Liste zuständig sein wird. In diesem Beispiel weisen wir der Liste einen Namen zu, geben an, wie viele Datensätze angezeigt werden sollen und definieren den vorselektierten Wert. Ich emfehle einen Blick auf die möglichen Attribute, die bei einer SELECT-Liste verwendet werden können. PHP-Code:
Die eigentliche Funktion Mit dem, was wir nun alles wissen, können wir folgende Funktion schreiben. PHP-Code:
Code:
$selectHTML .= "\n"; Man beachte, dass an dieser Stelle Anführungszeichen verwendet werden müssen. Hochkommata haben in Zusammenhang mit \n eine andere Wirkungsweise. Die Funktion erstellt uns nun schon eine Liste mit den Daten aus der Datenbank. Wir müssen jetzt nur noch eine Abfrage einbauen, um den vorselektierten Wert zu markieren. Diese Abfrage muss in die foreach-Schleife, da ja jeder Datensatz überprüft werden muss. PHP-Code:
Bitte beachtet, dass Ihr selected="selected" verwenden müsst, wenn Ihr XHTML-konform arbeiten möchtet. Stimmen also der Name des aktuell geprüften Datensatzes und der im Konfigurationsarray definierte Name überein, so wird dieser Zusatz hinzugefügt. Ansonsten passiert nichts. Ich nutze für diese Abfrage den ternären Operator. Bauen wir diese Abfrage also in unsere Funktion ein erhalten wir folgendes Ergebnis. PHP-Code:
Und jetzt merken wir auch, dass es egal ist, woher die Daten ursprünglich stammen. Es spielt keine Rolle, ob sie in einer Datenbank, Textdatei oder im XML-Format abgespeichert sind, solange man sie so ausliest, dass man beim Aufruf der Funktion ein Datenarray zur Verfügung hat. Die Implementierung ist hiermit abgeschlossen und wir können unsere Arbeit austesten. Wir springen also ins nächste Kapitel. Geändert von Ben (07.03.2007 um 09:15 Uhr). |
|
|
|
|
|
|
Nach oben #5 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
4. Schritt - Test der Funktion
Nachdem wir uns nun eine Funktion programmiert haben, die es uns ermöglich eine SELECT-Liste dynamisch mit Inhalt zu füllen und sogar einige Konfigurationen an ihr vorzunehmen sollten wir unsere Arbeit austesten, um zu sehen, ob wir wirklich das gewünschte Ergebnis erhalten. An alle selbsternannten Profis: Natürlich sollte man nicht erst nach Abschluss der Implementierung mit dem Testen anfangen. Aber an dieser Stelle passt das doch ganz gut ins Tutorial, oder? Wir erstellen uns also eine Datei, die z.B. so aussehen könnte PHP-Code:
Es klappt so, wie wir das wollen. Somit haben wir das erreicht, was wir wollten und können uns zufrieden dem nächsten Tutorial auf Developers-Guide.net zuwenden. Geändert von Ben (09.02.2007 um 21:14 Uhr). |
|
|
|
|
|
Nach oben #6 | |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Nachwort
Nachdem Ihr nun dieses Tutorial durchgearbeitet habt, hoffe ich, dass es Euch insofern weitergeholfen hat, dass Ihr wisst,
Ich habe versucht so wenig Vorkenntnisse wie möglich vorauszusetzen und die benötigten Schritte bei der Implementierung bestmöglich zu erläutern. Sollte es dennoch zu Fragen kommen, so könnt Ihr diese selbstverständlich in unserem PHP-Forum stellen, sofern Ihr ein registriertes Mitglied unseres Hilfeforums seid. Ist dies nicht der Fall, so könnt Ihr Euch hier, natürlich völlig kostenfrei, registrieren. Solltet Ihr über die Suche keine Lösung für eventuell auftretende Probleme finden und einen Thread erstellen, so bitten wir Euch folgende Passage per Copy & Paste zu kopieren und im erstellten Thema in quote-Tags einzufügen. Zitat:
Dort werden zu Beginn vom Mitglied flupsi einige sehr gute Fragen gestellt. Vielleicht könnt Ihr dort noch etwas mitnehmen. Solltet Ihr Verbesserungsvorschläge haben oder einen Fehler finden, so freue ich mich selbstverständlich über eine private Nachricht. Bitte beachtet, dass es keine Problemhilfe per ICQ, PN, Mail etc. gibt. Genau für diese Fragen gibt es unser Hilfeforum. Ich danke Euch für Euer Interesse an diesem Tutorial und würde mich freuen, wenn Ihr es weiterempfehlen würdet. Bitte lest dazu: Weiterverwendung der Tutorials In diesem Sinne, viel Spaß beim Programmieren. Grüße Ben. Geändert von Ben (07.03.2007 um 09:18 Uhr). |
|
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Frage zu dynamisches Füllen einer select Liste. | Scout | PHP-Programmierung | 10 | 30.03.2007 09:49 |
| Your most abnormal Query | Guradia | Datenbanken | 21 | 19.04.2006 00:15 |
| [PHP] Wie kann ich eine Textdatei erstellen und mit Inhalt füllen? | Ben | Tutorials | 2 | 06.09.2005 11:17 |