PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfangbuchstaben


The Serious Sam
27.03.2008, 11:55:36
Ich habe eine Datenbank mit verschiedenen Einträgen

Nun sollen alle vorkommenden Anfangsbuchstaben ausgegeben werden

Derzeit benutze ich vollgendes:




$sql = "SELECT
*
FROM
datenbank;";


$result = mysql_query($sql);

$types=array();

while($row = mysql_fetch_assoc($result))
{
$types[]=strtoupper($row['titel'][0]);
}

for ($i = 'A'; $i!='AA'; $i++) {
if(in_array($i, $types))
{
echo "<a href=\"index.php?type=page&id=datenbank&alpha=".strtolower($i)."\" >$i</a>";
}
}



Leider werden Sonderzeichen, Umlaute usw nicht berücksichtigt.

Ich habe mir das im endeffekt so vorgestellt:

Datenbank:

Programm1
2. Programm
Irgendeinprogramm
Aucheinprogramm
Ü-Ei Entschlüsselungs-Programm


Ausgabe:

| # | A | I | P | U |

=>

1.) In Raute werden alle Zahlen und Sonderzeichen zusammengefasst
2. ) Umlaute wie Ä Ö Ü werdem wie A O U behandelt
3.) Keine Unterschiede zwischen Groß- und Kleinschreibung

mfg

feuervogel
27.03.2008, 12:14:52
SELECT DISTINCT SUBSTR(`spalte`,0) AS `anfangsbuchstabe` FROM `tabelle`

einfach anpassen und benutzen :-)

The Serious Sam
27.03.2008, 14:19:25
gibt es auch in MYSQL eine funktion die alles was kein buchstabe ersetzt?
sowas wie preg_replace

hab mit
REPLACE
die umlaute wegbekommen und mit
UPPER
sind die anfangsbuchstaben immer groß

aber wie kann ich ALLE Sonderzeichen in # umwandel?
für jedes Sonderzeichen ein REPLACE einzubauen würde jahre dauern

The Serious Sam
27.03.2008, 14:40:41
Habs danke

Lösung:


$sql = new Query("
SELECT
DISTINCT SUBSTR(
REPLACE(
REPLACE(
REPLACE(
UPPER(`Nachname`)
,'Ü','U')
,'Ö','O')
,'Ä','A')
,1,1)
AS `Buchstabe`
FROM
daten
ORDER BY
Nachname;"
);

while($row = $sql->fetch()) {

$type[] = preg_replace('/[^a-zA-Z]/', '#', $row['Buchstabe']);

}

print_a(array_unique($type));