Hallo Bernhard,
Ist das nicht etwas unpraktisch? Dadurch würd ich die Festplatte doch wegen einer kleinen Abfrage ziemlich belasten.
Festplattenzugriffe sollte es dabei keine geben.
Ists on-fly ned schneller und effizienter?
Wahrscheinlich weder noch. Effizienter Code ist übrigens auch wartbarer Code. Dein Code ist nicht wartbar.
Wie sind meine Abfrage-Ausgaben eigentlich zwischengespeichert? Als Array oder Objekt?
Lies bitte den entsprechenden Handbuchabschnitt.
Speichere den zuletzt ermittelten Anfangsbuchstaben in einer Variable.
Überprüfe bei jedem Durchlauf, ob sich dieser geändert hat.
Schreibe optgroup nur dann, wenn eine Änderung erfolgt.Genau an dieser Stelle habe ich ja mein Problem, ich weis nämlich nicht wie ich die Überprüfung hinkriege!!
Folgender Algorithmus könnte dies in etwa bewirken (sowas wie Pseudocode):
Lies Deine Daten in ein zweidimensionales Array (Du könntest Dir dies als Tabelle vorstellen ein).
Setze Letzter_Anfangsbuchstabe auf Leerstring
Solange es noch Zeilen in Deinem Array gibt
Ermittle den Anfangsbuchstaben des Namens
Wenn dieser Anfangsbuchstabe ungleich Letzter_Anfangsbuchstabe ist
Setze Letzter_Anfangsbuchstabe auf aktuellen Anfangsbuchstaben
Schreibe Optgroup mit diesem Anfangsbuchstaben
Ende Wenn
Schreibe den Namenseintrag
Hole die nächste Zeile
Ende Solange
Ich empfehle Dir ganz dringend, das PHP-Handbuch, das MySQL-Handbuch Deiner MySQL-Version und die PHP-FAQ in Deine Lesezeichen mitaufzunehmen. Ich wüßte nicht mehr, wie ich ohne diese auskäme.
<anmerkung type="Godot">
Bei Fragen zu MySQL ist es immer eine gute Idee, die genaue Version anzugeben, da sich der Leistungsumfang von MySQL sehr stark versionsbedingt unterscheidet. *bg*
</anmerkung>
Ach ja, SELECT (in Großbuchstaben) im Thema ist natürlich ein weiterer Faktor für die Bewertung als unsauberes Posting :-)
Freundliche Grüße
Vinzenz