我编写了自己的CMS解决方案,我一直遇到更改页面顺序的问题。在我的数据库中,我有一个名为order的列,它获取页面的自动id。例如,如果pageid = 16则order = 16。
function shift_page_up($pageid, $pageorder, $db, $database_db){
mysql_select_db($database_db, $db);
$sql_previouspage = "SELECT order from pages WHERE `order` < $pageorder ORDER by `order` DESC LIMIT 1 ";
$previouspage_result = mysql_query($sql_previouspage) or display_error(mysql_error());
$previouspage_row = mysql_fetch_assoc($previouspage_result);
$newpreviouspage_pageorder = $pageorder;
$newpageorder = $previouspage_row['order'];
$sql_update_currentpageorder = "UPDATE pages SET `order` = $newpageorder WHERE `pageid` = $pageid";
$update_currentpageorder = mysql_query($sql_update_currentpageorder) or display_error(mysql_error());
$sql_update_previouspageorder = "UPDATE pages SET `order` = $newpreviouspage_pageorder WHERE `pageid` = ".$previouspage_row['pageid']."";
$update_previouspageorder = mysql_query($sql_update_previouspageorder) or display_error(mysql_error());
}
function shift_page_down($pageid, $pageorder, $db, $database_db){
mysql_select_db($database_db, $db);
$sql_nextpage = "SELECT * from pages WHERE `pageid` = $pageid AND `order` > $pageorder ORDER by `order` ASC LIMIT 1 ";
$nextpage_result = mysql_query($sql_nextpage) or display_error(mysql_error());
$nextpage_row = mysql_fetch_assoc($nextpage_result);
$newnextpage_pageorder = $pageorder;
$newpageorder = $nextpage_row['order'];
$sql_update_currentpageorder = "UPDATE pages SET `order` = $newpageorder WHERE `pageid` = $subpageid";
$update_currentpageorder = mysql_query($sql_update_currentpageorder) or display_error(mysql_error());
$sql_update_nexpageorder = "UPDATE pages SET `order` = $newnextpage_pageorder WHERE `pageid` = ".$nextpage_row['pageid']."";
$update_nexpageorder = mysql_query($sql_update_nexpageorder) or display_error(mysql_error());
}
因此,主要思想是交换从自动生成的页面ID复制的ORDER列上的页面顺序。我已经编写了机制来避免分别使用SELECT MIN(order)
和SELECT MAX(order)
来交换具有最高和最低顺序的网页。
要更改订单,请点击锚链接<a href="order_up.php?pageid=<?php echo $row_get_pages['pageid']; ?>&pageorder=<? echo $row_get_pages['order']; ?>&swapped=<?php echo str_replace( " ", "-", $row_get_pages['pagename']); ?>"> <img onclick="bounce_page('<?php echo $row_get_pages['pagename']; ?>');" src="images/ico/arrow-090.png" width="16" height="16" align="right" style="cursor:pointer;" /></a>
要将订单向下移动,请点击锚链接<a href="order_down.php?pageid=<?php echo $row_get_pages['pageid']; ?>&pageorder=<? echo $row_get_pages['order']; ?>&swapped=<?php echo str_replace( " ", "-", $row_get_pages['pagename']); ?>"><img onclick="bounce_page('<?php echo $row_get_pages['pagename']; ?>');" src="images/ico/arrow-270.png" width="16" height="16" style="cursor:pointer;" /> </a>
这种方式很有效,特别是当页面表被截断并且页面ID从0开始时。 但是在某处删除的空表或页面总会带来问题。当我点击任何向上或向下链接时,没有交换任何值