2012-09-15 17 views
0

可以說我有一個名爲「頁面」的表,字段:id,名稱,內容,位置。 當我在我的cms中顯示所有頁面時,我想使用「向下」和「向上」按鈕來設置頁面位置。 我如何做位置更新? 我如何知道如何重新定位其他頁面?在PHP數據庫表中的位置記錄

例如:

id name content position 
1 Home bla bla 1 
2 Info bla bla 4 

如果我點擊「向上」的第二頁(信息)的位置需要更新爲1,第一頁的位置必須大於1 - 樣2。

我使用MySQL數據庫,我需要PHP上的解決方案。

+0

排序位置互換上下 – HanhNghien

回答

0

既然你沒有發佈任何代碼,我不能給出具體的解決方案,但我可以給你一個通用的解決方案。這將是這樣的(未測試)

減少頁面的位置(假設它的名字是在$pageName,而表名是pages)這樣的:

mysql_query("UPDATE `pages` SET position=position-1 WHERE name=$pageName"); 

您可能要如果您不允許負排名,請先檢查排名是否大於0。增加與當前頁面現在具有相同等級的頁面的位置

mysql_query("UPDATE `pages` SET position=position+1 
     WHERE position = (SELECT position FROM `pages` WHERE name=$pageName) 
     AND NOT name=".$pageName) 

這當然假設在頁面級別上沒有UNIQUE約束。如果有,做這樣的事情:

  1. 選擇要編輯的頁面等級(說$thisRank
  2. $thisRank-1選擇頁面的ID,也就是上面的一個(說$aboveId)對未使用的等級。
  3. 設置你的網頁的排名,以$thisRank-1
  4. 設置的$aboveId職級$thisRank
0

一個娃要做到這一點,就是在同一頁面上提交。例如position.php

如果你有3條記錄,可以考慮:

約翰喇嘛喇嘛(1位)
瑪麗喇嘛喇嘛(位置2)
喬治喇嘛喇嘛(第3位)

起初,你需要這樣的

<a href="position.php?position=<?=$position?>&id=<?=$id?>">up</a> 

的$位置的鏈接元素的當前位置,你看到上面和ID是你的表的ID。

當您點擊鏈接與

$_GET['position'] and $_GET['id'] 

你的位置和當前記錄的ID。

所以,你可以做以下

<?php 
     //connect to DB 

     if(isset($_GET['position']) && isset($_GET['id'])){ 
      $line = $_GET['position'];  
      $id = $_GET['id']; 
      //if line is not the first one  
     if($line!=1){  

     $query = "select id,position from pages where position<$line order by position desc limit 0,1"; 
     $result = mysql_query($query); 
     $row = mysql_fetch_array($result); 
     $gotoLine = $row['position'];//line to go to 
     $idLine = $row['id']; 
     //one position up 
     $queryUpdate = "update pages set position=$gotoLine where id=$id"; 
     mysql_query($queryUpdate); 
     //one position down 
     $queryUpdate2 = "update pages set position=$line where id=$idLine"; 
     mysql_query($queryUpdate2); 

    }  
} 

    $queryLinks = "select * from pages order by position"; 
    $resultLinks = mysql_query($queryLinks); 
    while($rowLinks = mysql_fetch_array($resultLinks)){ 

    $name = $rowLinks['name']; 
    $id = $rowLinks['id']; 
    $position = $rowLinks['position']; 

    echo "$name<a href='position.php?position=$position&id=$id'> up </a><br/>"; 

}  


?>