0

私は独自のCMSソリューションを作成しましたが、ページの順序を変更する際に常に問題が発生しました。私のデータベースには、ページの自動IDを取得するorderという名前の列があります。たとえば、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']; ?>&amp;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から始まる場合に特にうまく機能しますしかし、空になったテーブルやどこかで削除されたページは常に問題を引き起こします。上または下のリンクをクリックしても、値は交換されません

4

0 に答える 0