Hallo!
Ich habe ein Skript programmiert, das Daten aus einer Datenbank ausliest und diese dann ausgibt.
Man hat mehrere Suchkriterien nach denen man suchen kann.
Wie bereits in
diesem Thread erwähnt habe ich eine Filterleiste gemacht, mit denen man die Ergebnisse nach Anfangsbuchstaben filtern kann.
Das ganze funktioniert auch schon sehr gut, nur will der Inhaber der Seite jetzt auch noch, dass nur die Buchstaben angezeigt werden, die auch ein Ergebnis liefern (immer diese Extrawünsche
).
Bei Buchstaben mache ich das so:
SQL-Code:
SELECT SUBSTRING(serie,1,1) AS used
FROM page_series AS s, page_types AS t, page_publishers AS p
WHERE s.type = t.id
AND p.id = s.publisher
AND serie LIKE '%cat%'
GROUP BY used
ORDER BY used ASC
In diesem Fall hat jemand nach
cat im Feld
serie gesucht. Jetzt bekomme ich als Resultat dieses Querys 'B', 'C' und '.', weil sowohl Einträge mit B, C wie auch mit einem Punkt beginnend verfügbar sind.
Ich habe jetzt mit der PHP-Funktion
in_array() jeden Buchstaben vor der Ausgabe überprüft:
Code:
[color=#800080]for[/color] ([color=#000080][i]$i[/i][/color] = [color=red]65[/color]; [color=#000080][i]$i[/i][/color] <= [color=red]90[/color]; [color=#000080][i]$i[/i][/color]++)
{
[color=#000080][i]$a[/i][/color] = chr([color=#000080][i]$i[/i][/color]);
[color=#FF8000]// Print only chars which have a result.[/color]
[color=#800080]if[/color] (in_array([color=#000080][i]$a[/i][/color], [color=#000080][i]$need[/i][/color]))
{
[color=#000080][i]$charlist[/i][/color] .= [color=#008000]"<a href=\"[/color][color=#000080][i]$_SERVER[/i][/color][color=#008000][PHP_SELF]?char=[/color][color=#000080][i]$a[/i][/color][color=#000080][i]$VARS[/i][/color][color=#008000][view][/color][color=#000080][i]$VARS[/i][/color][color=#008000][find]\">[/color][color=#000080][i]$a[/i][/color][color=#008000]</a> | "[/color];
}
}
Das funktioniert auch alles ganz gut, nur will ich nicht für 0, 1, 2, .. 9 einen extra Link machen, da das überflüssig wäre. Ich will das ganze mit einem Link '0-9' erledigen, der alle Nummern anzeigt und einen Link mit etc. der alle Sonderzeichen ausgibt.
Soweit funktioniert nochimmer alles, bis auf die Tatsache, das mir kein vernünftiger Weg einfällt, wie ich überprüfe ob die Links 0-9 bzw etc. überhaupt benötigt werden, also angezeigt werden sollen.
Desweiteren wollte ich noch fragen, ob das Suchen des Buchstabens mit der Funktion in_array() sinnvoll ist oder ob das Resourcenverschwendung ist und jemandem etwas besseres einfällt. Gibts überhaupt allgemein eine Bessere Lösung?
Wäre über jeden Tipp froh.
Grüße
Faux