16. april 2011 - 15:59Der 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ø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øv igen senere.".mysql_error()); } }
<?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ø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ø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ø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> </td> <td colspan="2" align="center" style="border-bottom:1px #999 solid;">Antal sider</td> <td> </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 <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 <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> Ønsker du at der skal vœ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 }}?>
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.
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.