ARRAY aus DB bei nem Template Problem

raphk

Mitglied
Also mein Problem ist folgendes:

Ich versuche mich gerade an Templates. Klappt auch alles ganz gut bis auf wenn ich Daten aus meiner DB lese die ich dann blockweise parsen will.

PHP:
$sql = "SELECT quicknav_name, quicknav_link FROM $db_quicknav";
$_result 	 = mysql_query($sql);
$_array  	 = mysql_fetch_assoc($_result);
	
$name = $_array["name"]; 
$link = $_array["link"];

$quicknav = array(
	array("QUICKNAV_NAME" => $name, "QUICKNAV_LINK" => $link)
                    );
$tpl->assignLoop("quicknav", $quicknav);

Er sollte den Linknamen und den Link aus meiner DB lesen um ihn dann im Template zusammen zu setzen. Wenn ich alles manuell eingebe also ...

PHP:
$quicknav = array(
	array("QUICKNAV_NAME" => "SEITE1", "QUICKNAV_LINK" => "LINK1"),
	array("QUICKNAV_NAME" => "SEITE2", "QUICKNAV_LINK" => "LINK2"),
	array("QUICKNAV_NAME" => "SEITE3", "QUICKNAV_LINK" => "LINK3"),
	array("QUICKNAV_NAME" => "SEITE4", "QUICKNAV_LINK" => "LINK4"),
	array("QUICKNAV_NAME" => "SEITE5", "QUICKNAV_LINK" => "LINK5")	
            );
$tpl->assignLoop("quicknav", $quicknav);

... funktionniert das auch. Also liegt der Fehler beim auslesen der DB und der deklarierung des Arrays. Hab schon einiges probiert und auch mit der Suche hier gearbeitet aber nichts gefunden was mit aufschluss über Arrays in Arrays mit dynamischer Größe gibt.

Danke für die Hilfe!

Gruß vom Raph
 
Was passiert denn überhaupt?
Ich könnte mir vorstellen, dass es so besser klappt:

PHP:
$sql = "SELECT quicknav_name, quicknav_link FROM $db_quicknav"; 
$_result = mysql_query($sql); 
while ($_array = mysql_fetch_assoc($_result))
{
$name = $_array["name"]; 
$link = $_array["link"]; 
$quicknav = array(array("QUICKNAV_NAME" => $name, "QUICKNAV_LINK" => $link));
}
$tpl->assignLoop("quicknav", $quicknav);
 
Also passieren tut gar nix. Im Normalfall sollte pro Array eine Tabellenspalte erzeugt werden in welcher der Link steht. Aber er gibt mir (wenn ich die DB Version mache) nur EINE leere Spalte die die ganze Tabellenbreite einnimmt und keinen Inhalt hat. Wenn ich die Daten manual eingebe dann macht der brav seine Spalten und schreibt den Link auch rein.

BTW deine WHILE Schleife drum herum bringt auch keine Besserung. Klappt immer noch nicht. Trotzdem danke!
 
Problem gelöst

Das Problem hat sich erledigt. Bin bei php.net auf ne Funktion namens array_push gestoßen die einen Wert am Ende des arrays einfügt. Diese konnte man dann in die Schleife einbauen und gut wars!

Für alle dies interessiert:

PHP:
$sql 	 = "SELECT quicknav_name, quicknav_link FROM $db_quicknav"; 
$_result = mysql_query($sql); 

$quicknav = array();
	
while ($_array = mysql_fetch_assoc($_result)) 
{ 
	$name = $_array["quicknav_name"]; 
	$link = $_array["quicknav_link"]; 
		
	array_push($quicknav, array("QUICKNAV_NAME" => $name, "QUICKNAV_LINK" => $link)); 
};
$tpl->assignLoop("quicknav", $quicknav);
 
Zurück