Avatar billede webcreator Nybegynder
27. december 2003 - 01:03 Der er 4 kommentarer og
2 løsninger

Flyt menupunkter op/ned - rækkefølge

Hej Eksperter.

Jeg har endnu ingen kode at vise, da jeg pt. kun har ideen i hovedet. Men kort og godt handler det om, at mine menupunkter hentes i en database. Dog udskrives de som "ordered by name", hvilket betyder at jeg ikke selv kan bestemme rækkefølgen. Jeg har derfor tænkt mig at tilføje et felt af typen INTEGER, og heri angive rækkefølge.

Men hvordan laver jeg nemmest mit system ? Findes der en SQL-streng, der "rykker" tallene i en kolonne enten op eller ned ? Eller skal jeg lave det hele vha. PHP?

Gode ideer modtages gerne :)
Avatar billede codebase Praktikant
27. december 2003 - 01:06 #1
skal kodes selv..
Avatar billede webcreator Nybegynder
27. december 2003 - 01:11 #2
Ja, tænkte jeg nok. Nogen der har et godt forslag til hvordan ? Kan jo blive en noget anstændig process. Visse menupunkter forsvinder, og der kan blive mange tal mellem de forskellige menupunkter.

Kunne fx. se sådan ud :

NAVN        RAEKKEFOELGE
------------------------------
Index        1
About        2
Info          8
Kontakt      10
Andet        32
Avatar billede codebase Praktikant
27. december 2003 - 01:17 #3
Her er de funktioner som gør trikset i eZ Publish http://ez.no
Du må udfra disse to funktioner kunne kode dine egne.

/*!
      Moves the article placement with the given ID up.
    */
    function moveUp( $id )
    {
        $db =& eZDB::globalDatabase();

        $db->query_single( $qry, "SELECT * FROM eZArticle_ArticleCategoryLink
                                  WHERE ArticleID='$id' AND CategoryID='$this->ID'" );

        if ( is_numeric( $qry[$db->fieldName("ID")] ) )
        {
            $linkID = $qry[$db->fieldName("ID")];
            $placement = $qry[$db->fieldName("Placement")];

            $db->query_single( $qry, "SELECT ID, Placement FROM eZArticle_ArticleCategoryLink
                                    WHERE Placement<'$placement' AND eZArticle_ArticleCategoryLink.CategoryID='$this->ID'
                                    ORDER BY Placement DESC" );

            $newPlacement = $qry[$db->fieldName("Placement")];
            $listid = $qry[$db->fieldName("ID")];

            if ( $newPlacement == $placement )
            {
                $placement += 1;
            }

            if ( is_numeric( $listid ) )
            {
                $db->query( "UPDATE eZArticle_ArticleCategoryLink SET Placement='$newPlacement' WHERE ID='$linkID'" );
                $db->query( "UPDATE eZArticle_ArticleCategoryLink SET Placement='$placement' WHERE ID='$listid'" );
            }
        }
    }

    /*!
      Moves the article placement with the given ID down.
    */
    function moveDown( $id )
    {
        $db =& eZDB::globalDatabase();

        $db->query_single( $qry, "SELECT * FROM eZArticle_ArticleCategoryLink
                                  WHERE ArticleID='$id' AND CategoryID='$this->ID'" );

        if ( is_numeric( $qry[$db->fieldName("ID")] ) )
        {
            $linkID = $qry[$db->fieldName("ID")];
            $placement = $qry[$db->fieldName("Placement")];
            $db->query_single( $qry, "SELECT ID, Placement FROM eZArticle_ArticleCategoryLink
                                    WHERE Placement>'$placement' AND eZArticle_ArticleCategoryLink.CategoryID='$this->ID' ORDER BY Placement ASC" );

            $newPlacement = $qry[$db->fieldName("Placement")];
            $listid = $qry[$db->fieldName("ID")];

            if ( $newPlacement == $placement )
            {
                $newPlacement += 1;
            }

            if ( is_numeric( $listid ) )
            {
                $db->query( "UPDATE eZArticle_ArticleCategoryLink SET Placement='$newPlacement' WHERE ID='$linkID'" );
                $db->query( "UPDATE eZArticle_ArticleCategoryLink SET Placement='$placement' WHERE ID='$listid'" );
            }
        }
    }
Avatar billede fbb Nybegynder
27. december 2003 - 23:36 #4
Hmm, jeg skal faktisk også bruge sådan en løsning som denne, men jeg kan ikke rigtige finde rundt i det der kode :(
Avatar billede webcreator Nybegynder
28. december 2003 - 00:46 #5
Synes heller ikke, at det hele siger mig så meget.
Avatar billede webcreator Nybegynder
09. januar 2004 - 08:48 #6
Jeg siger tak for forslaget. Men jeg fandt en nemmere løsning - som ikke kræver refresh for min side hver gang.

Jeg har ud for hvert punkt lavet en inputboks, som der kan skrives et nummer i. Mine menupunkter sorteres således efter værdien i dette felt (som ligger i DB, self).

På den måde har brugeren fuld kontrol over opstillingen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-specialist til Lokal IT Servicecenter ved Personelkommandoen

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til taktiske netværksradioer i Kommunikationssektionen

Scan Global Logistics

PMO Project Manager

Roskilde Universitet

AV Tekniker

Capgemini Danmark A/S

Microsoft AI Solution Architect