Datenbankabfrage zuordnen

peter_knüller

Grünschnabel
Hi!
Ich habe folgendes Problem:

Angenommen ich habe eine Datenbank mit folgender Struktur:

Felder:
id
name

also id ist auto_increment und name sind irrgendwelche Namen von A-Z oder auch mit 0-9 beginnend.

Nun rufe ich diese alphabethisch durch eine Php-Abfrage ab:

PHP:
...
$hohlen = "SELECT * FROM test ORDER BY name";
$ergebnis = mysql_query($hohlen);

while($row = mysql_fetch_object($ergebnis))
{
echo "$row->name<br>";
}
...

und nun das problem:
wie Bringe ich es fertig, das ich ganz oben auf der ausgegebenen HTML Seite eine Reihe von Buchstaben habe ([A]-[Z]), und wenn ich auf diese klicke, hüpft er zu dem 1. Namen des geklickten Buchstabens. Zusätzlich bräuchte ich noch eine Unterordnung, also das bei allen A-Namen ein [A] davorsteht usw.
wie bringe ich das fertig?

vielen Dank,
peter
 
Hm, du könntest es mal so versuchen:
PHP:
$aNameArray = array();
$aIdArray = array();
$iResult = mysql_query("SELECT * FROM `test` ORDER BY `name`;");

while($row = mysql_fetch_array($iResult)) {
    $aNameArray[$row['name']{0}] = $row['name'];
    $aIdArray[$row['name']{0}] = $row['id'];
}

foreach ($aIdArray as $cChar=>$devnull) {
    echo "<a href=\"#".$sChar."\">[".$sChar."]</a> ";
}

$aHad = array();
foreach($aIdArray as $sChar=>$devnull) {
    if (!isset($aHad[$sChar])) {
        echo "<br><br>\n<a name=\"".$sChar."\">[ ".$sChar." ]</a><br>\n>";
    }

    echo "<a href=\"info.php?id=".$aIdArray[$sChar]."\">".$aNameArray[$sChar}."</a>";
    echo "<br>\n";
}

Is nur mal so ne Idee, auch nicht gerade bester Stil.
 
Hi!
Erstmal DANKE für deine schnelle Antwort :-)
Dein Code funktioniert sehr gut, jedoch wird mir nun immer nur ein einziger Name pro Buchtabe angezeigt. Wie kann ich den machen, das alle angezeigt werden?
Zudem funktionieren die "Jump-To" Links noch nicht (das sieht dann so aus:
<a href="#">[]</a> <a href="#">[]</a> <a href="#">[]</a> <a href="#">[]</a> <a href="#">[]</a> <a href="#">[]</a> <a href="#">[]</a> <a href="#">[]</a> <a href="#">[]</a> <a href="#">[]</a> <a href="#">[]</a> <a href="#">[]</a> <a href="#">[]</a> <a href="#">[]</a> <br><br>)

Also VIELEN, VIELEN, VIELEN DANK nochma,
Peter
 
Stimmt, kann ja gar nicht gehn *kopf-anhau*
Richtiger Code kommt gleich!

//Edit: So, versuch mal das (sorry, wegen der breiten Zeile):
PHP:
<?php
$aNameArray = array();
$aIdArray = array();
$iResult = mysql_query("SELECT * FROM `test` ORDER BY `name`;");

while($row = mysql_fetch_array($iResult)) {
	$sChar = $row['name']{0};
	if (!isset($aNameArray[$sChar])) {
    	$aNameArray[$sChar] = array();
        $aIdArray[$sChar] = array();
    }
    $aNameArray[$sChar][] = $row['name'];
    $aIdArray[$sChar][] = $row['id'];
}

foreach ($aIdArray as $cChar=>$devnull) {
    echo "<a href=\"#".$sChar."\">[".$sChar."]</a> ";
}

foreach($aIdArray as $sChar=>$devnull) {
    echo "<br><br>\n<a name=\"".$sChar."\">[ ".$sChar." ]</a><br>\n>";

    foreach($aNameArray[$sChar] as $iKey=>$devnull) {
    echo "<a href=\"info.php?id=".$aIdArray[$sChar][$iKey]."\">".$aNameArray[$sChar][$iKey]."</a>";
    echo "<br>\n";
    }
}
?>
 
Zuletzt bearbeitet von einem Moderator:
Zurück