Hallo,
ich habe mir ein fertiges PHP-Script gesucht, das Daten aus meiner DB ausließt, sie alphabetisch gruppiert und unter dem jeweiligen Buchstaben ausgibt. Nun möchte dieses Script an meine Bedürfnisse anpassen.
Hier das Script, wie es zur Zeit läuft:
In diesem Script werden die Werte id, marke, produkt, datum am Ende unformatiert in einem String ausgegeben
Beispiel:
Ich möchte gern, dass die Werte aus den Spalten id, marke, produkt, datum am Ende einzeln zur Verfügung stehen, weiß aber nicht wo ich in diesem Script ansetzen muss, um das zu erreichen
Hat jemand von euch eine Idee?
ich habe mir ein fertiges PHP-Script gesucht, das Daten aus meiner DB ausließt, sie alphabetisch gruppiert und unter dem jeweiligen Buchstaben ausgibt. Nun möchte dieses Script an meine Bedürfnisse anpassen.
Hier das Script, wie es zur Zeit läuft:
PHP:
/
// array_combine läuft nur mit PHP 5
if (!function_exists('array_combine')) {
function array_combine($keys, $values)
{
// nicht ganz die selbe Funktionalität
$combined = array();
for ($i = 0, $x = min(count($keys), count($values)); $i < $x; ++$i) {
$combined[$keys[$i]] = $values[$i];
}
// aber ausreichend
return $combined;
}
}
// Funktion die uns den Anfangsbuchstaben eines Strings liefert
// mit der Besonderheit Umlaute auf das 26-Buchstaben-Alphabet umzulegen (leider manuell)
function getInitial($string)
{
$initial = $string{0};
if (preg_match('/^[a-z]$/i', $initial)) {
return strtoupper($initial);
}
switch ($initial) {
case 'ä': case 'Ä':
return 'A';
case 'ö': case 'Ö':
return 'O';
case 'ü': case 'Ü':
return 'U';
default:
// Anfangsbuchstabe ein anderes Zeichen? Dann Raute als Default
return '#';
}
}
// Query zur Abfrage
$sql = 'SELECT id, marke, produkt, datum FROM tabelle ORDER BY marke ASC';
$res = mysql_query($sql) or die(mysql_error());
// Schlüssel zwischen A-Z erstellen
$keys = range('A', 'Z');
// Raute für unbekannte Zeichen
$keys[] = '#';
// Die Werte sollen leere Arrays sein
$values = array_fill(0, 27, array());
// Das ganz kombinieren und wir erhalten unsere leere $data-Maske, deren Schlüssel das Alphabet und die Raute sind
//und deren Werte leere Arrays sind
$data = array_combine($keys, $values);
while ($line = mysql_fetch_assoc($res)) {
// Anfangsbuchstaben ermitteln
$initial = getInitial($line['marke']);
// und den $data Array dahingehend füllen
$data[$initial][] = $line;
}
// Den Array durchlaufen
foreach ($data as $initial => $group) {
// Den Anfangsbuchstaben ausgeben
$inhalt .= sprintf('<br />-= %s =-<br />', $initial);
for ($i = 0, $x = count($group); $i < $x; ++$i) {
// Und natürlich noch die aus der Datenbank zugeordneten Gruppen
$inhalt .= sprintf("%u: %s <br />", $i + 1, implode(' - ', $group[$i]));
}
}
// Fertig
In diesem Script werden die Werte id, marke, produkt, datum am Ende unformatiert in einem String ausgegeben
Beispiel:
Code:
-= R =-
1: 113 - Radeberger - Pilsner - 1126027502
Ich möchte gern, dass die Werte aus den Spalten id, marke, produkt, datum am Ende einzeln zur Verfügung stehen, weiß aber nicht wo ich in diesem Script ansetzen muss, um das zu erreichen
Hat jemand von euch eine Idee?