mehrere Werte in ein Arry schreiben
Tommi
- php
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
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
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';
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.