Avatar billede retake Nybegynder
16. april 2011 - 15:59 Der er 3 kommentarer og
1 løsning

skal bytte om på 2 id'er i database.

Hej jeg har en database hvor jeg styre min menu.

Min menu ser sådan ud Menu1, Menu2, Menu3, Menu4. Eks skal Menu3 og Menu2 bytte plads når jeg trykker på et link ved menu3 der heder UP.

Alså Menu3 skal tage Menu2's 'order' id.

Den der har order 1 ligger nr 1 i min menu og 2 ligger nr 2 i menu etc.

til dette bruger jeg denne kode men jeg er gået helt i sort og kan ikke få det til at virke. håber i kan hjælpe

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, $SQLk));

           
            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
16. april 2011 - 16:10 #1
her er hele koden hvis det hjælper


<?php
//-- UPDATE MENU -- //
    if($_POST['do'] == "menu"){
    $id = $_GET['id'];
    $label = $_POST['label'];
    $visible = $_POST['visible'];
    $content = $_POST['content'];
    $date = date("Y-m-d");
    mysql_query("update menu set
    label = '$label',
    visible = '$visible',
    content = '$content',
    date = '$date'
    WHERE id = '$id'") or die ("<strong>Fejl</strong> - Der skete en teknisk fejl, pr&oslash;v igen senere.".mysql_error());
    }
   
   
    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());
        }
    }
   
    if($_GET['order'] == "down"){
       
    }
   
   
    if(empty($_GET['id'])){
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="background-color:#DBDBDB; border:1px #666 solid;">
  <tr class="top">
    <td align="center"><a style="color:#900;" href="">Opret</a></td>
    <td>&nbsp;</td>
    <td colspan="2" align="center" style="border-bottom:1px #999 solid;">Antal sider</td>
    <td>&nbsp;</td>
  </tr>
  <tr class="top">
    <td align="center" style="color:#06C; border-bottom:1px #999 solid;">Title</td>
    <td width="80px" align="center" style="border-bottom:1px #999 solid;">Orden</td>
    <td width="80px" align="center" style="border-bottom:1px #999 solid;">#Synlige</td>
    <td width="80px" align="center" style="border-bottom:1px #999 solid;">#Usynlige</td>
    <td width="40px" align="center" style="color:#06C; border-bottom:1px #999 solid;">ID</td>
  </tr>
  <?php
  $SQL = "SELECT label, parent_id, id FROM menu WHERE parent_id = '0' ORDER BY `order`";
  $loadin = mysql_query($SQL) or die("Error");
  $c = 0;
  while ($Get = mysql_fetch_object($loadin)){
    $level1_id = $Get->id;
    $sub1 = mysql_result(mysql_query("SELECT COUNT(*) FROM menu WHERE parent_id = '$level1_id' && visible = 'true'"),0); // remember to add && visible = 'true'
    $sub2 = mysql_result(mysql_query("SELECT COUNT(*) FROM menu WHERE parent_id = '$level1_id' && visible = 'false'"),0); // remember to add && visible = 'false'
    echo '<tr'. ( $c++ % 2 == 0 ? ' class="tr1"' : ' class="tr2"' ) .'>';
    echo '<td align="left" style="border-bottom:1px #CCC solid;"><a href="?admin_page=menu&id='.$Get->id.'">'.$Get->label.'</a></td>';
    echo '<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>';
    echo '<td align="center" style="border-bottom:1px #CCC solid;"><a style="text-decoration:underline;" href="?admin_page=subs&visible=true&id='.$Get->id.'">'.$sub1.'</a></td>';
    echo '<td align="center" style="border-bottom:1px #CCC solid;"><a style="text-decoration:underline;" href="?admin_page=subs&visible=false&id='.$Get->id.'">'.$sub2.'</a></td>';
    echo '<td align="center" style="border-bottom:1px #CCC solid;">'.$Get->id.'</td>';
    echo '</tr>';
  }
  ?>
</table>
<?php }else{
    $id = $_GET['id'];
    $SQL = "SELECT label, id, content, visible FROM menu WHERE id = $id";
  $loadin = mysql_query($SQL) or die("Error");
  while ($Get = mysql_fetch_object($loadin)){
    $level1_id = $Get->id;
    $sub1 = mysql_result(mysql_query("SELECT COUNT(*) FROM menu WHERE parent_id = '$level1_id' && visible = 'true'"),0);
    ?>
<!-- Edit of Menu -->
<form name="newad" method="post" enctype="multipart/form-data"  action="">
<input type="hidden" name="do" value="menu" />
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="background-color:#DBDBDB; border:1px #666 solid;">
  <tr class="top">
    <td colspan="2" style="color:#06C;border-bottom:1px #999 solid;"><div style="margin:5px;">Menu :: <?=$Get->label?> :: Egenskaber</div></td>
  </tr>
  <tr style="background-color:#FFF;">
      <td align="left" width="100px"><div style="margin:5px;">Menu title*</div></td>
    <td align="left"><div style="margin:5px;"><input style="background-color: #6CF;" type="text" name="label" value="<?=$Get->label?>" /></div></td>
  </tr>
  <tr style="background-color:#FFF;">
      <td align="left"><div style="margin:5px;">Adgang</div></td>
    <?php if($Get->visible == 'true'){
        echo '<td align="left"><div style="margin:5px;"><input type="radio" name="visible" value="true" checked="checked" /> Ja &nbsp; <input type="radio" name="visible" value="false" /> Nej</div>';
        }else{
            echo '<td align="left"><div style="margin:5px;"><input type="radio" name="visible" value="true" /> Ja &nbsp; <input type="radio" name="visible" value="false" checked="checked" /> Nej</div>';
        }
        ?>
        </td>
  </tr>
  <tr style="background-color:#FFF;">
      <td align="left"><div style="margin:5px;">Indhold</div></td>
    <td align="left"><div style="margin:5px;">
            <?php
                if(empty($sub1)){
        include_once '../ckeditor/ckeditor.php';
        include_once '../ckfinder/ckfinder.php';
        $ckeditor = new CKEditor('content');
        $ckeditor->basePath = '../ckeditor/';
        CKFinder::SetupCKEditor($ckeditor, '../ckfinder/');
        $ckeditor->editor('content', $Get->content);
                }else{
                    echo 'Dette er kun et link til under menuer, derfor kan du ikke lave noget indhold.<br> &Oslash;nsker du at der skal v&oelig;re indhold, slet alle under menuer eller fjern adgang til dem.';
                }
      ?>
    </div></td>
  </tr>
  <tr style="background-color:#FFF;">
      <td align="left"><div style="margin:5px;">ID</div></td>
    <td align="left"><div style="margin:5px;"><?=$Get->id?></div></td>
  </tr>
  <tr style="background-color:#FFF;">
      <td align="center" colspan="2"><div style="margin:5px;"><a href="?admin_page=menu">Tilbage</a></div></td>
  </tr>
</table>
</form>
<?php }}?>
Avatar billede erikjacobsen Ekspert
16. april 2011 - 16:55 #2
Du skal nok ikke ændre ved id-erne - det er for bøvlet. Hellere udvide med et sorterings-felt, lade værdierne i dette felt bestemme rækkefølgen, og kun bytte rundt på disse værdier.
Avatar billede retake Nybegynder
16. april 2011 - 17:20 #3
min database er bygget sådan:

ID / unike identifyer id
label / navn på menu
order / række følge på menu
parent_id / id på den menu der er over.
Avatar billede retake Nybegynder
20. april 2011 - 20:02 #4
opretter ny og omformulere
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