Я думаю, что проблема заключается в этой строке:
if ($row2 = mysql_fetch_object($result2)) {
Это переместит счетчик записи вперед, поэтому при следующем вызове:
while ($row2 = mysql_fetch_object($result2)) {
$row2
будет заполнено вторым рядом. Поскольку вы не используете первый ряд между двумя выделенными строками, вы потеряете его.
Я предлагаю вызвать mysql_num_rows($result2)
, чтобы получить количество возвращаемых строк вместо первого mysql_fetch_object($result2)
в операторе if.
$result2 = mysql_query("SELECT * FROM web_navbar_links WHERE link_child='1' AND parent_relationID='".$parentID."' AND visible='1' ORDER BY position ASC");
if (mysql_num_rows($result2) > 0) {
echo "<ul>"; //PROBLEM LIES HERE!! ATM THE <UL> WRITES ONCE BUT THE LOOP ONLY READS BACK THE LAST ENTRY FROMT HE db.
while ($row2 = mysql_fetch_object($result2)) {
echo "<li><a href='http://". ROOT . ADMIN . SECTIONS . TEMPLATES . $row2->link_href."?".$row2->slug."=".$row2->slug."' title='".$row2->link_title."'>".$row2->link_name."</a>";
echo "<ul>";
echo "<li><a href='#'>blah</a></li>";
echo "</ul>";
echo "</li>";
}
echo "</ul>";
}