Vinzenz Mai: SELECT und Namensliste übersichtlich halten

Beitrag lesen

Hallo Bernhard,

A
  ein Name mit A
  anderer Name mit A
B
  ein Namen mit B
  anderer Name mit B

<? $abfr = "SELECT benutzer.vname , benutzer.name , benutzer.strasse , orte.ort<br>
   FROM benutzer LEFT JOIN orte ON benutzer.ort-nr = orte.id<br>
   ORDER BY benutzer.vname ASC";<br>

meine erste Anmerkung:
Verlasse Dich lieber nicht auf short_open_tag=on verlassen und statt dessen eine der beiden beschriebenen _immer_ funktionierenden Methoden verwenden, um PHP-Bereiche zu kennzeichnen.

zweitens:
Du benutzt nur die Spalten

vname, name und strasse

Deiner Abfrage. Deswegen ist es eine gute Idee, auch nur diese Felder abzufragen:

SELECT  
    vname,        -- vollqualifizierte Spaltennamen sind nur erforderlich  
    name,         -- wenn diese innerhalb der Tabellen einer Abfrage  
    strasse       -- nicht eindeutig sind  
FROM benutzer b   -- Aliasnamen helfen Schreibarbeit zu sparen  
LEFT JOIN orte ON b.`ort-nr` = orte.id  -- Spalten mit Sonderzeichen  
                                        -- sind meist keine gute Idee  
                                        -- Das Minuszeichen hat eine  
                                        -- besondere Bedeutung :-)  
ORDER BY vname    -- Aufsteigend ist die Standardsortierreihenfolge  
                  -- Das Semikolon am Ende der SQL-Anweisung solltest Du  
                  -- weglassen.

$res = mysql_query($abfr);?>
  <form style="float:right">

Ständiger Wechsel zwischen PHP- und HTML-Bereichen ist keine gute Idee.
Speichere lieber vorher die Daten, die Deine Datenbankabfrage zurückliefert, in einem Array zwischen und schreibe dann z.B. mit echo das HTML.

<br>$index=$ind[0]; $initi=$ausg->name; ?><br>

<optgroup label="<? echo $index;?> "><br>

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.

<p style="font-size:50%;i;text-align:right">f&uuml;r Anzeige Name ausw&auml;hlen</p><br>

Inline-CSS macht den Code nicht lesbarer und erst recht nicht wartbarer. Nutze geeignete Selektoren. Die Lektüre von SELFHTML kann Dir dabei helfen. Eine geeignete Wahl der Zeichenkodierung macht übrigens die Verwendung von &uuml; und Konsorten überflüssig.

Und nein, Du musst hier in der Textarea eine Zeile _nicht_ mit <br> abschließen. Es gibt übrigens eine Vorschau ;-)

Freundliche Grüße

Vinzenz