Avatar billede retake Nybegynder
20. april 2011 - 20:09 Der er 3 kommentarer og
1 løsning

Ombytning af id'er

Hej jeg har min database.

menu ->
id, titel, content, parent_id, order.

Alle oprettet menu'er får et unik id.

Parent_id henviser til deb id som en side/menu er oprettet under.

eks så har jeg en parent med
id(1) som heder Forside.
Så to subs:
id(2), parent_id(1), titel(side 1), order(1)
id(3), parent_id(1), titel(side 2), order(2)

Nu er det så jeg vil trykke på et link som så skal bytte om på id1 og id2's order, alså op eller ned alt efter hvilket link man trykker på

som vist her.
<td align="center" style="border-bottom:1px #CCC solid;"><a href="?admin_page=menu&order=up&order_id='.$Get->id.'">UP</a>

<a href="?admin_page=menu&order=down&order_id='.$Get->id.'">NED</a></td>


dette er mit udskat men det virker ikke :/ kan bare ikke komme vidre

if($_GET['order'] == "up"){
        $order_id = $_GET['order_id'];
        $SQL = "SELECT `order`, `id`, `parent_id` FROM menu WHERE id = '$order_id'";
        $loadin = mysql_query($SQL) or die("Error");
        while ($Get = mysql_fetch_object($loadin)){
       
            $id = $Get->id;
            $parent_id = $Get->parent_id;
            $order = $Get->order;
            $order2 = $Get->order;
            $order--;
            $the_parent = mysql_fetch_array(mysql_query("select id from menu m where m.parent_id =" . $parent_id . " and m.order = " . $change_order, $link));

           
            mysql_query("update menu set
            `order` = '$order'
            WHERE id = '$id'") or die ("<strong>Fejl</strong> - Der skete en teknisk fejl, pr&oslash;v igen senere.".mysql_error());
            mysql_query("update menu set
            `order` = '$order2'
            WHERE id = '$the_parent'") or die ("<strong>Fejl</strong> - Der skete en teknisk fejl, pr&oslash;v igen senere.".mysql_error());
        }
    }
Avatar billede retake Nybegynder
20. april 2011 - 20:47 #1
Ahh fandt en løsning.

nogle som har en bedre så skriv enlig så får de 200 point. også for at gøre den mere simpel.

if($_GET['order'] == "up"){
        $order_id = $_GET['order_id'];
        $SQL = "SELECT `order`, `id`, `parent_id` FROM menu WHERE id = '$order_id'";
        $loadin = mysql_query($SQL) or die("Error");
        while ($Get = mysql_fetch_object($loadin)){
            $id = $Get->id;
            $parent_id = $Get->parent_id;
            $order = $Get->order;
            $order2 = $Get->order;
            $order--;
            $query = "SELECT id FROM menu WHERE parent_id = '0' && `order` = '$order'";
            $result = mysql_query($query) or die(mysql_error());
            $row = mysql_fetch_array($result) or die(mysql_error());
            $the_parent = $row['id'];
            mysql_query("update menu set
            `order` = '$order2'
            WHERE id = '$the_parent'") or die ("<strong>Fejl</strong> - Der skete en teknisk fejl, pr&oslash;v igen senere.".mysql_error());
            mysql_query("update menu set
            `order` = '$order'
            WHERE id = '$id'") or die ("<strong>Fejl</strong> - Der skete en teknisk fejl, pr&oslash;v igen senere.".mysql_error());
        }
    }
Avatar billede retake Nybegynder
20. april 2011 - 20:58 #2
Her er de færdige hvis nogle har løst at bruge dem ;o)

if($_GET['order'] == "up"){
        $order_id = $_GET['order_id'];
        $SQL = "SELECT `order`, `id`, `parent_id` FROM menu WHERE id = '$order_id'";
        $loadin = mysql_query($SQL) or die("Error");
        while ($Get = mysql_fetch_object($loadin)){
            $order = $Get->order;
            if($order > "1"){
                $id = $Get->id;
                $parent_id = $Get->parent_id;
                $order = $Get->order;
                $order2 = $Get->order;
                $order--;
                $query = "SELECT id FROM menu WHERE parent_id = '0' && `order` = '$order'";
                $result = mysql_query($query) or die(mysql_error());
                $row = mysql_fetch_array($result) or die(mysql_error());
                $the_parent = $row['id'];
                mysql_query("update menu set
                `order` = '$order2'
                WHERE id = '$the_parent'") or die ("<strong>Fejl</strong> - Der skete en teknisk fejl, pr&oslash;v igen senere.".mysql_error());
                mysql_query("update menu set
                `order` = '$order'
                WHERE id = '$id'") or die ("<strong>Fejl</strong> - Der skete en teknisk fejl, pr&oslash;v igen senere.".mysql_error());
            }
        }
    }
   
    if($_GET['order'] == "down"){
        $order_id = $_GET['order_id'];
        $SQL = "SELECT `order`, `id`, `parent_id` FROM menu WHERE id = '$order_id'";
        $loadin = mysql_query($SQL) or die("Error");
        while ($Get = mysql_fetch_object($loadin)){
            $order = $Get->order;
            $how_high = mysql_result(mysql_query("SELECT COUNT(*) FROM menu WHERE parent_id = '0'"),0);
            if($order < $how_high){
                $id = $Get->id;
                $parent_id = $Get->parent_id;
                $order = $Get->order;
                $order2 = $Get->order;
                $order++;
                $query = "SELECT id FROM menu WHERE parent_id = '0' && `order` = '$order'";
                $result = mysql_query($query) or die(mysql_error());
                $row = mysql_fetch_array($result) or die(mysql_error());
                $the_parent = $row['id'];
                mysql_query("update menu set
                `order` = '$order2'
                WHERE id = '$the_parent'") or die ("<strong>Fejl1</strong> - Der skete en teknisk fejl, pr&oslash;v igen senere.".mysql_error());
                mysql_query("update menu set
                `order` = '$order'
                WHERE id = '$id'") or die ("<strong>Fejl2</strong> - Der skete en teknisk fejl, pr&oslash;v igen senere.".mysql_error());
            }
        }
    }
Avatar billede wanze Nybegynder
21. april 2011 - 18:40 #3
Der findes mange JavaScripts, der tillader dig at sortere elementer nemt i din browser. Nogle af disses output gør det så nemt, at du bagefter blot kan sende en enkelt UPDATE-sætning til din database, hvorefter det hele bliver sorteret perfekt. Det ville jeg kigge på, hvis jeg var dig.
Avatar billede retake Nybegynder
04. september 2011 - 14:04 #4
done holdte på min egen metode :P
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