Navigation aus MySQL

Radiate

Mitglied
Hallo Tutorials-User,

ich hänge voll im WirrWarr aber ich komme nicht ans Ziel.
Lange Rede kurzer Sinn, ich habe zwei Tabellen in die DB angelegt (menu & menu_link) und aus diesen beiden bilde ich nun einen Link.
Das Prob ist wenn ich mehrere Links bilde, wird immer nur der letzte angezeigt.

PHP:
        /* Dynamic Navigation >> Category */
	$abfrage = "SELECT cat, link_l, link_m, link_r FROM menu WHERE id = '1'";
	$ergebnis = mysql_query($abfrage);
	while($row = mysql_fetch_object($ergebnis))
		{
		$cat = "$row->cat";
		$link_l = "$row->link_l";
		$link_m = "$row->link_m";
		$link_r = "$row->link_r";
		};
	
	/* Dynamic Navigation >> Link */
	$abfrage = "SELECT name, ahref FROM menu_link";
	$ergebnis = mysql_query($abfrage);
	while($row = mysql_fetch_object($ergebnis))
		{
		$name = "$row->name";
		$ahref = "$row->ahref";
		};
	
	/* Dynamic Navigation >> Prepare */
	$navigation = "$link_l $ahref $link_m $name $link_r";

	// Template index parsen
	$tpl = new Template();
	
	$tpl->set_file("index", "tpl/standard/index.tpl");
	$tpl->set_var(array(
		// View
		'V_LEFT'        		=> $lang['Left'],
		'V_CONTENT'    			=> $lang['Content'],
		'V_RIGHT'       		=> $lang['Right'],
		// Navi
		'N_CAT'					=> $cat,
		'N_NAME'				=> $name,
		'N_LINK_L'				=> $link_l,
		'N_AHREF'				=> $ahref,
		'N_LINK_M'				=> $link_m,
		'N_LINK_R'				=> $link_r,
		'N_NAVIGATION'			=> $navigation
	));
	
	$tpl->parse("out", "index");
	$tpl->p("out");

Jetzt mal tachelese hier. :D
Also nur Spaß gell. ;)

Mein Prob ist also das ich eine Navigation aus zwei tabellen preparen will.

menu:

Bildet die ( id ), (<a href="), (" onfocus="if(this.blur)this.blur()">) und (</a>).

menu_link:

Bildet nun den Link Inhalt (id), (ahref) und den Verweis/Link (name).

Und zum Schluss wird das ganze prepared indem ich die Variablen zusammen bilde und das sieht bei mir so aus:

PHP:
$navigation = "$link_l $ahref $link_m $name $link_r";

Also wie bekomme ich das hin, das er dennoch alle auflistet und nicht nur die letzte aus der TABELLE menu_link?

Ich danke euch vielmals für eure Hilfe im voraus, wobei mir durchaus bewusst ist das Hilfe kein Privileg ist, es ist wie Sex, nimm sie wo du kannst, nur kleiner Witz. ;)
 
PHP:
 while($row = mysql_fetch_object($ergebnis))
        {
        $name = "$row->name";
        $ahref = "$row->ahref";
        }

Da wird ja auch $name und $ahref jedesmal überschrieben.

So sollte es richtig sein:

PHP:
 while($row = mysql_fetch_object($ergebnis))
        {
        $name[] = "$row->name";
        $ahref[] = "$row->ahref";
        }

Dann werden $name und $ahref zu einem numerischen Array mit allen Werten.
 
Zuletzt bearbeitet:
Das war wirklich sehr schnell, nur leider steht dann da wo etwas stehen sollte "Array".
Hm, vielleicht Arrays vordefinieren, also das nun Arrays folgen?
Aber wie?
 
Die Variante von Felix ist dafür, um die Ergebnisse aus der DB komplett in einem Array zu halten.Du müsstest in seiner variante die Arrays durchlaufen und daraus die Links bilden - was aber m.E. etwas unnötig scheint.

Einfacher wäre es, deine while-schleife nicht nach der DB-Ausgabe zu beenden, sondern erst nach "$navigation = ..."
Du misst jedoch Anstelle der Zuweisung an die Variable "$navigation" nun eine Verkettung anlegen, was ganz einfach mit einem Punkt vor dem " = " geht:
PHP:
$navigation .= "$link_l $ahref $link_m $name $link_r";
 
Hätte die Internetgemeinde damals schon gekannt, ich will garnicht wissen was noch so alles passiert wäre. *ups*

Was ich damit sagen wollte, hatte keine Ideen, ich habe ebenfalls schon wirklich einiges versucht, aber... ohne euch die Tutorial-User würde ich immernoch Google-Ergebnisse wälzen.
Dankeschön an die Mitwirkenden, ihr habt mir sehr geholfen, es nun mit folgendem Code:

PHP:
        /* Dynamic Navigation >> Link */
	$abfrage = "SELECT name, ahref FROM menu_link";
	$ergebnis = mysql_query($abfrage);
	while($row = mysql_fetch_object($ergebnis))
		{
		$name = "$row->name";
		$ahref = "$row->ahref";
	/* Dynamic Navigation >> Prepare */
	$navigation .= "$link_l $ahref $link_m $name $link_r <br>";
	};

Von mir aus kann dies als abgehackt gesehen werden. ;)
 
Zurück