Split dropdownlijst in tweeen na elke 7 items

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Open Source Developer Engineer Ontwikkelaar

Functieomschrijving Open Source Developer Engineer Ontwikkelaar Doorontwikkelen van de software; Het naadloos integreren van de verschillende componenten Het geven van advies over het inrichten; Het kiezen van methoden en technieken voor het realiseren (waarbij je gebruik maakt van Opensource); Het meedenken met de ontwikkelingen in de markt. Functie-eisen HBO werk- en denkniveau; Ervaring als Open Source Ontwikkelaar; Ruime ervaring met Open Source software (bijv. Zimbra, Alfresco, Nextcloud, Kopano etc, etc); Je hebt kennis van producten als Kubernetes, Openvswitch, Ceph, ZFS, Proxmox, Terraform, Puppet en Ansible; Nieuwsgierig en pro-actief /Out-of-the-box denken / Analytisch en conceptueel denken / Gepassioneerd, gedreven en bedreven

Bekijk vacature »

OutSystems Developer / International environment /

Functieomschrijving Would you like to work in a professional and international working environment and do you have experience in the field of OutSystems? Apply now! Translate wishes and requirements into technical designs; Design and develop new software feautures and technologies, mainly in the field of logistics/planning; Maintainance, administration and improvement of the OutSystems platform; Solving issues and bugs within the software; Define and run test plans; Documentation of development and bugfixes; Constant improvement of the OutSystems platform and follow-up of newest innovations within this field. Functie-eisen Knowledge of and experience with OutSystems is required. Experience with other low-code platforms is

Bekijk vacature »

Senior OutSystems Developer / International enviro

Functieomschrijving Would you like to work in a professional and international working environment and do you have extensive experience in the field of OutSystems? Apply now! Translate wishes and requirements into technical designs; Design and develop new software feautures and technologies, mainly in the field of logistics/planning; Maintainance, administration and improvement of the OutSystems platform; Solving issues and bugs within the software; Define and run test plans; Documentation of development and bugfixes; Constant improvement of the OutSystems platform and follow-up of newest innovations within this field. Functie-eisen Knowledge of and multiple of years experience with OutSystems is required. Experience with

Bekijk vacature »

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

25/09/2020 23:56:48
 
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.