PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datensätze nach Alphabet sortieren und verlinken


Hetfield
11.11.2005, 13:30:34
Hallo Leute!

Ich möchte ein Adressbuch realisieren. Darin soll eine komfortable Navigation per Alphabet enthalten sein. Es werden alle Datensätze ausgelesen, oberhalb soll das Alphabet von links nach rechts stehen. Nur die Buchstaben, für die Datensätze vorhanden sind, sollen Links sein. Beim Klick auf den jeweiligen Buchstaben wird zu den entsprechenden Datensätzen gesprungen ( Per Ankerverlinkung "a name" ?). Wenn für einen Buchstaben kein Datensatz vorhanden ist, soll er nicht anklickbar sein. In der Liste selbst soll nach jedem Buchstaben ein Trennzeichen kommen und die Möglichkeit wieder nach oben zu kommen ("a href=#top"). Mein Problem ist das Alphabet oben drüber.

Bisher erzeuge ich das Alphabet so:

$a=65; //65 entspricht dem Buchstaben A
while($a <= 90) { //65 + 25 = 90
echo '<a href="#'.chr($a).'" class="liste">'.chr($a).'</a> ';
$a++; }


Allerdings ist dann immer jeder Buchstabe anklickbar, auch wenn nix drin steht. Den neuen Anfangsbuchstaben in der Liste finde ich so heraus:

$tempchar=substr($row["name"],0,1);


Ich weiss nur nicht, wie ich beide Dinge datenbankschonend hinbekomme.
Kann mir vielleicht jemand auf die Sprünge helfen?

Vielen Dank im Voraus!!

Euer Hetfield!

StefanL
11.11.2005, 13:36:36
... Es werden alle Datensätze ausgelesen...
Ich weiss nur nicht, wie ich beide Dinge datenbankschonend hinbekomme.


Und wieso liest du alle Datensätze auf einmal aus und willst dann datenbankschonend arbeiten? Was machst du, wenn dein Adressbuch 5.000 einträge hat?

Ich würde erst die Alphabetnavi aus einer Abfrage bauen und dann erst nach dem Klick auf den Buchstaben die entsprechenden Datensätze auslesen.

Hetfield
11.11.2005, 13:49:49
Im Prinzip hast du recht, so habe ich es schon für mich gemacht (inkl. Kategorien wie z.B. "Verwandte", "Freunde", etc.). Jetzt baue ich mein Script gerade für einen kleinen Verein um, bei dem es höchstens 50 Mitglieder gibt. Und die wollen es so. So werden einmal alle Datensätze ausgelesen und auf der erzeugten Seite per Anker navigiert. Eigentlich könnte man die paar auch ohne SQL und PHP einfach in HTML einpflegen, aber das können die nicht. Und ich will nicht ständig bei denen was ändern müssen. Mit einem Script können die das selbst verwalten und ich habe in Zukunft meine Ruhe.

StefanL
11.11.2005, 14:03:44
OK, wenn es nur so wenige Datensätze sind...

Es wäre hilfreich, wenn du mal das komplette Script posten würdest.
Ansonsten schüttel ich einfach mal das hier aus dem Ärmel:


$tempchar=substr($row["name"],0,1);
$a=65; //65 entspricht dem Buchstaben A
while($a <= 90) { //65 + 25 = 90
if($tempchar == $a) {
echo '<a href="#'.chr($a).'" class="liste">'.chr($a).'</a> | ';
}
$a++;
}


Aber keine Gewähr, ich kenne ja den Rest des Scripts nicht...