Split dropdownlijst in tweeen na elke 7 items

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Snelle Jaap

Snelle Jaap

12/04/2016 11:04:17
Quote Anchor link
Ik heb een veel te lange dropdownlist die ik in tweeen wil splijten om de 7 items. Moet te doen zijn want het is bootstrap, maar mijn code plaatst overbodige tags over heel de html structuur, ziet iemand wat ik fout doe?

Dit is wat ik veel nabootsen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
<ul class="dropdown-menu dropdown-menu-large row" role="menu">
   <
li class="col-sm-6">
        <
ul>
            <
li><a href="life-insurance.html">Life Insurance</a></li>
            <
li><a href="life-insurance.html">Home Insurance</a></li>
            <
li><a href="life-insurance.html">Travel Insurance</a></li>
            <
li><a href="life-insurance.html">Pet Insurance</a></li>
        <
/ul>
   <
/li>

   <
li class="col-sm-6">
        <
ul>
            <
li><a href="life-insurance.html">Boat Insurance</a></li>
            <
li><a href="life-insurance.html">Auto Insurance</a></li>
            <
li><a href="life-insurance.html">Bike Insurance</a></li>
            <
li><a href="life-insurance.html">Business Insurance</a></li>
        <
/ul>
   <
/li>
<
/ul>
?>


Mijn code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
$tel
= 1;

foreach ( $nmenuccr as $cmenu ) {

    // If id matches and category id is 11 (services) split in half
    if ( $cmenu['id'] && $cmenu['catid'] == '11' ){

        if($tel == 1) {
            $hmenu .= '<li class="col-sm-6"><ul>';  
        }



        $hmenu.= '
                <li><a href="'
.$cmenu['alias'].'.html">'.$cmenu['title'].'</a></li>
            '
;

        if(($tel % 7) == 0){
            $hmenu .= '</ul></li> <li class="col-sm-6"><ul>';
        }

        $tel++;    


        if(($tel % 7) != 0){
            $menu .= '</li>';
        }

    //Else use the normal dropdown layout
    }else{

        if (strlen($cmenu['title']) > 25){  
           $shortstrmen = substr($cmenu['title'], 0, 25) . '...';

           $hmenu.= '
                <li><a href="'
.$cmenu['alias'].'.html">'.$shortstrmen.'</a>
            '
;
        }
else{
        $hmenu.= '
                <li><a href="'
.$cmenu['alias'].'.html">'.$cmenu['title'].'</a>
            '
;
        }

    }

}

?>


En dit krijg ik als resultaat met die code:

https://jsfiddle.net/sms16v44/
 
PHP hulp

PHP hulp

20/04/2024 12:03:20
 
Thomas van den Heuvel

Thomas van den Heuvel

12/04/2016 13:40:24
Quote Anchor link
Weet niet precies wat er misgaat, maar
- je houdt nergens bij dat je een lijst geopend hebt? pas vanaf dat moment zou je moeten gaan tellen, en na afloop zou deze teller gereset moeten worden? het gaat toch om het aantal aaneengesloten items van een bepaald type (catid 11)?
- de condities voor het openen en het sluiten van de lijst zijn mogelijk niet handig gekozen of gewoon onjuist

Indien je de lijst nog niet begonnen was en je het eerste item tegenkomt, dan open jhet col-sm-6 list-item.
Indien je het achtste aaneengesloten (of vijftiende et cetera) item met catid 11 hebt bereikt weet je pas dat je een tweede (of derde et cetera) sublijst moet openen, dan is die noodzaak er ook pas.
Indien de lijst is afgelopen (de lijst was eerder gestart, en het item heeft een catid is ongelijk aan 11), dan pas sluit je het col-sm-6 list-item.
 
Snelle Jaap

Snelle Jaap

12/04/2016 13:53:05
Quote Anchor link
Thomas van den Heuvel op 12/04/2016 13:40:24:
Weet niet precies wat er misgaat, maar
- je houdt nergens bij dat je een lijst geopend hebt? pas vanaf dat moment zou je moeten gaan tellen, en na afloop zou deze teller gereset moeten worden? het gaat toch om het aantal aaneengesloten items van een bepaald type (catid 11)?
- de condities voor het openen en het sluiten van de lijst zijn mogelijk niet handig gekozen of gewoon onjuist

Indien je de lijst nog niet begonnen was en je het eerste item tegenkomt, dan open jhet col-sm-6 list-item.
Indien je het achtste aaneengesloten (of vijftiende et cetera) item met catid 11 hebt bereikt weet je pas dat je een tweede (of derde et cetera) sublijst moet openen, dan is die noodzaak er ook pas.
Indien de lijst is afgelopen (de lijst was eerder gestart, en het item heeft een catid is ongelijk aan 11), dan pas sluit je het col-sm-6 list-item.

Klopt ik wil alleen aan het begin de col md 6 toevoegen en die afsluiten na 7 items, en dan bij de 8e weer een li tag eromheen gooien met col md 6 die ook na 7 items weer afsluit en opnieuw begint (mochten er zoveel items zijn).

Wat doe ik nu dan fout? Als ik bijvoorbeeld de ul tag weghaal uit het script dan plaatst hij de li tag met col md 6 om de 7 items, maar hij sluit de tag gelijk af met niets er in. De tag staat dus niet om 7 items heen maar sluit gelijk elke 7 items.

Zoals hier: https://i.gyazo.com/90dae793d61e068a308a1c6ecb729457.png
 
Thomas van den Heuvel

Thomas van den Heuvel

12/04/2016 14:22:35
Quote Anchor link
Hoe ziet je code er nu uit?
 
Snelle Jaap

Snelle Jaap

12/04/2016 15:29:09
Quote Anchor link
Thomas van den Heuvel op 12/04/2016 14:22:35:
Hoe ziet je code er nu uit?


Welke code bedoel je?
Als ik de ul eruit haal?
 
Thomas van den Heuvel

Thomas van den Heuvel

12/04/2016 16:57:37
Quote Anchor link
De code die deze lijsten / dit menu genereert.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.