Tommi: mehrere Werte in ein Arry schreiben

Ich habe folgendes Script, das ich gerne um eine Ausgabe erweitern möchte, und zwar um den Bereich, Titel

Hier ist das Script:

  
  
  $query = 'SELECT ID,  
    IFNULL(parent, 0) AS parent,  
    prio,  
    Name  
    FROM menu  
    ORDER BY parent ASC,  
    prio DESC,  
	Name ASC';  
    $res = mysql_query($query);  
    $nodes = array();  
    while ($row = mysql_fetch_assoc($res))  
    $nodes[$row['parent']][$row['ID']] = $row['Name'] = $row['Name'];  
    mysql_free_result($res);  
  
		  
	  
	function dumpNodes($nodes, $parent = 0)  
		{  
		echo "<ul class=\"last\">\n";  
		foreach ($nodes[$parent] as $id => $name)  
			{  
			echo '<li><a class="folder" href="">', htmlSpecialChars($name);  
			if (isset($nodes[$id]))  
				{  
				dumpNodes($nodes, $id);  
				}  
			echo "</a></li>\n";  
			}  
		echo "</ul>\n";  
		}  
		  
	echo'<div id="sitemap">';	  
    dumpNodes($nodes);  
	echo'</div>';  
  

Mit dem ersten Teil komme ich klar...

  
  $query = 'SELECT ID,  
    IFNULL(parent, 0) AS parent,  
    prio,  
    Name, Titel  
    FROM menu  
    ORDER BY parent ASC,  
    prio DESC,  
	Name ASC';  

Doch ich schaffe es nicht den Titel in mein Array zu bekommen, so das ich es nachher auslesen kann.

  
  
    $res = mysql_query($query);  
    $nodes = array();  
    while ($row = mysql_fetch_assoc($res))  
    $nodes[$row['parent']][$row['ID']] = $row['Name'] = $row['Name'];  
    mysql_free_result($res);  

Kann mir da jemand helfen?

Tommy

  1. Hi,

    $nodes[$row['parent']][$row['ID']] = $row['Name'] = $row['Name'];

    die doppelte Zuweisung erscheint mir hier nicht für sinnvoll. Sie sollte allerdings auch zu keinen Nachteilen führen, abgesehen vielleicht von einem gering(st)en Performanceverlust.

    Doch ich schaffe es nicht den Titel in mein Array zu bekommen, so das ich es nachher auslesen kann.

    $nodes ist offenbar als Array von Strings konzipiert. Wenn Du dies in z.B. ein Array von Arrays änderst (z.B. array('Name'=>..., 'Title'=>...)), dann sorge dafür, dass *alle* Codes angepasst werden, die diese Wertesammlung verwenden.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Das braucht es ja gar nicht

      $nodes[$row['parent']][$row['ID']] = $row['Name'] = $row['Name'];

      so reicht es:

      $nodes[$row['parent']][$row['ID']] = $row['Name'];

      Aber ich bekomme in mein Array trotzdem nicht noch meinen Titel

      $query = 'SELECT ID,
          IFNULL(parent, 0) AS parent,
          prio,
          Name, Titel
          FROM menu
          ORDER BY parent ASC,
          prio DESC,
              Name ASC';

      1. Tach!

        Aber ich bekomme in mein Array trotzdem nicht noch meinen Titel

        Ein Array-Element kann immer nur einen Wert aufnehmen. Dieser Wert kann aber von irgendeinem der PHP-Typen sein. Für das Aufnehmen mehrerer Werte kennt PHP die Typen Array und Objekt. Im Klartext: Wenn du mehrere Werte speichern möchtest, solltest du diese in ein Array (oder Objekt) packen und dieses anstelle nur des Namen zuweisen.

        dedlfix.