Autor Zpráva
Akali
Profil
Ahoj. Snad pochopíte můj problém..
Potřebuji nějak udělat vypisování menu z databáze.
Vysledek by měl být asi takový->
<h1>Hlavní menu</h1>
odkaz v hlavním menu
odkaz v hlavním menu

<h1>Podmenu 1</h1>
odkaz v podmenu 1
odkaz v podmenu 1
odkaz v podmenu 1

<h1>Podmenu 2</h1>
odkaz v podmenu 2
odkaz v podmenu 2
odkaz v podmenu 2

Když napíšu do souboru na tvrdo
<h1>Hlavní menu</h1>
a zde provedu vípis odkazů z databáze

tak je mi to vše jasné.
Ale jak udělat abych yypisoval kategorie menu (Hlavní menu, podmenu 1, podmenu 2) a pod každou z této kategorie teprve vypsal odkazy?
Tori
Profil
Tohle je myslím stejný princip: Nejčastější potíže s PHP (FAQ) » Nadpis skupiny nejen při výpisu z databáze
Akali
Profil
Aha, tak zde jsem se toho nedohledal :-).. Příště se pokusím hledat líp : )

Už mi to sice funguje, ale potřeboval bych ty pododkazy zabalit do <ul>

                                    $pamet = '';
                                          while ($radek = mysqli_fetch_array($objekt_vysledku))
                                          {
                                            if ($radek['kategorie'] != $pamet)
                                            {
                                              $pamet = $radek['kategorie'];
                                              echo "<div id=\"menu\">".$radek['kategorie']."</div><ul>";
                                            }
                                                 echo '<li><a href="stranka.php?id='.$radek['id'].'&kategorie='.$radek['menu'].'">',$radek['menu'],'</a></li>';
                                          }
Je mi jasné, kde <ul> začít, ale kde ho ukončit?
Tori
Profil
Podmínkou na řádku 4 zjistíte začátek nové kategorie. Pokud je to první iterace (= neukončovat seznam), $pamet bude mít výchozí hodnotu. Plus navíc jedno uzavření za cyklem.
Akali
Profil
Čím víc si to čtu, tím míň tomu rozumím :-o
Tori
Profil
Akali:
Čím víc si to čtu, tím míň tomu rozumím
Pardon, mám dneska nějaký nesrozumitelný den. :-)
$pamet = '';
while ($radek = mysqli_fetch_array($objekt_vysledku))
{
    if ($radek['kategorie'] != $pamet)
    {
        if ($pamet !== '')
            echo '</ul>';
        $pamet = $radek['kategorie'];
        echo "<div id=\"menu\">".$radek['kategorie']."</div><ul>";
    }
    echo '<li><a href="stranka.php?id='.$radek['id'].'&kategorie='.$radek['menu'].'">',$radek['menu'],'</a></li>';
}
// edit: doplněna podmínka pro případ, že by v DB nebyly žádné záznamy.
if ($pamet !== '')
    echo '</ul>';
Akali
Profil
Tak takhle bych to z toho textu nepochopil :-). Vůbec se nemlouvejte
Poklona a velké díky!
Tori
Profil
Ještě jsem zapomněla jednu drobnost, doplněno.
Bylo by to srozumitelnější takhle?

„Potřebujete uzavřít seznam po každé kategorii. Podmínkou na ř.4 zjišťujete, jestli začíná další kategorie, takže tam přidáte </ul> před <div>, s výjimkou úplně první kategorie (před ní se seznam neotevíral). Jestli to je první kategorie zjistíte podle toho, že v $pamet je ještě výchozí hodnota (z řádku 1). Seznam z poslední kategorie uzavřete až za cyklem (ale jen v případě, že cyklus alespoň jednou proběhl, jinak by nebylo co zavírat).“
Akali
Profil
To už možná jo. Teď je mi to všechno jasné, když vidím hotový kód (takže těžko říct, jestli bych to dokázal takto dát dokupy)
děkuju ještě jednou : )

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: