Как заставить плагин Superfish jQuery динамически работать с несколькими циклами в PHP

0

Надеюсь, какой-нибудь умный парень или лактейт поможет мне понять логику последующего кода.

Я начал использовать плагин jQuery superfish для моей навигации и получил код, работающий нормально и легко со статическими ссылками, но когда я пытаюсь изменить это на динамические ссылки, мне трудно получить правильный тег 2-го уровня; показывать только, когда найдены ссылки 2-го уровня, а затем показывать только один раз, прежде чем ссылки 2-го уровня будут выписаны из базы данных.

Надеюсь, я постараюсь понять проблему. Заявления, если я не знаю.

<ul class="sf-menu">
        <?php
            // A varible that increments on every loop of the below "while" statement
            $count == 0;

            $result = mysql_query("SELECT * FROM web_navbar_links WHERE link_parent='1' AND visible='1' ORDER BY position ASC");
            while ($row = mysql_fetch_object($result)) {
                $parentID    = $row->id;
                $parentLevel = $row->slug;
                // Increment the counter varible by one
                $count++;

                echo "<li";
                    switch ($parentLevel) {
                        case "business":
                            echo " id='business'";
                            break;

                        case "education":
                            echo " id='education'";
                            break;

                        case "consumer":
                            echo " id='consumer'";
                            break;
                    }
                    echo "><a>".ucwords(trim($row->link_name))."</a>";

                    $result2 = mysql_query("SELECT * FROM web_navbar_links WHERE link_child='1' AND parent_relationID='".$parentID."' AND visible='1' ORDER BY position ASC");
                    if ($row2 = mysql_fetch_object($result2)) {
                        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>";
                    }
                echo "</li>";

                if ($count < 3) {
                    echo "<li class='breaker'></li>";
                }
                else {
                    echo "";
                }
            }
        ?>
    </ul>
Теги:
jquery-plugins
php4
superfish

1 ответ

0
Лучший ответ

Я думаю, что проблема заключается в этой строке:

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>";
                }
  • 0
    идеальное решение Гас, спасибо за ваши знания и помощь: D

Ещё вопросы

Сообщество Overcoder
Наверх
Меню