Vinzenz Mai: SELECT und Namensliste übersichtlich halten

Beitrag lesen

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