Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
gestaltungsproblem mit dynamisch generierter liste [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
gestaltungsproblem mit dynamisch generierter liste


 
andyB
22-11-2006, 04:17 
 
moin moin!

ich schreibe gerade für meinen arbeitgeber an einer rezept-datenbank.
in dem projekt gibt es zwei seiten, auf denen man sich alle kategorien und alle rezepte alphabetisch anzeigen lassen kann.

diese listen zu generieren, ist kein problem und funktioniert.

jetzt würde ich diese seiten gerne struckturieren.
zum beispiel:

[0-9] [a] [b] ... [z] /* <- evtl. als link. */

<h3>A</h3>
<a href="">1. rezept mit a</a>
<a href="">2. rezept mit a</a>
...
...

<h3>B</h3>
<a href="">1. rezept mit b</a>
...
...

und so weiter.

mein problem ist, das ich für die einzelnen "überschriften-buchstaben" (<h3>A</h3>) keinen ansatz finde, um sie aus dem datensatz zu generieren.
=> wahrscheilich eine denk-blockade.

ich habe schon gegoogelt und das forum durchsucht.
und ich bin mir auch ziemlich sicher, das ich sowas schon hier gesehen habe.
aber ich finds nicht mehr.

vermutlich bin ich einfach zu blöd um meine suchanfrage zu formulieren.

vllt. kennt ja jemand den entsprechenden thread, oder kann mir sonstwie helfen.

/thx

 
eintrachtemil
22-11-2006, 11:20 
 
Du hast das ganze doch schon alphabetisch sortiert, wo ist da dann noch das Problem?

Sobald ein neuer Anfangsbuchstabe kommt, fügt du <h3>BUCHSTABE</a> ein. Musst dir halt nur bei jedem Schleifendurchlauf den Anfangsbuchstaben merken und dann entsprechend mit dem jeweils aktuellen vergleichen.

 
andyB
22-11-2006, 16:11 
 
ahhhh, wie kann man nur so doof sein??

da hätte ich wirklich auch selber drauf kommen können.

hab das jetzt so gelöst:

<?php


/* ein Array zu Testzwecken erstellen */
$testArray = array(
"Anton","Anton","Anton",
"Berta","Berta","Berta",
"Cäsar","Cäsar","Cäsar",
"Doris","Doris","Doris",
"Emil","Emil","Emil",
"Friedrich der Kleine","Friedrich der Mittlere","Friedrich der Große",
"Gustav","Gustav","Gustav",
"Heinrich I","Heinrich II","Heinrich III",
"Ida","Ida","Ida",
"Julius","Julius","Julius",
"Konrad","Konrad","Konrad"
);



/* gibt die Navigationszeile aus. */
$i=0;
while(list($key, $val) = each($testArray)) {
$firstLetter = substr($val,0,1);
if (!isset($lastFirstLetter) || $firstLetter != $lastFirstLetter) {
echo "[".$firstLetter."]&nbsp;&nbsp;";
}
else {
echo "";
}
$i++;
$lastFirstLetter = $firstLetter;
}



/* Array zurücksetzten */
reset($testArray);



/* gibt die struckturierte Liste mit dem jeweiligen Anfangsbuchstaben aus */
$i=0;
while(list($key, $val) = each($testArray)) {
$firstLetter = substr($val,0,1);
if (!isset($lastFirstLetter) || $firstLetter != $lastFirstLetter) {
echo "<h3>".$firstLetter."</h3>";
echo $val."<br />\n";
}
else {
echo $val."<br />\n";
}
$i++;
$lastFirstLetter = $firstLetter;
}
?>


auf jeden fall danke für deinen "gedankenanstoß"!


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:01 Uhr.