2016-03-18 45 views
0

我目前正在製作基本的內容管理系統。在這段代碼中,我從數據庫的'posts'中抓取一個頁面列表,然後將它們回顯出來。列表的目的是讓用戶能夠選擇現有頁面,然後編輯標題&內容,但是我不確定如何從所選鏈接獲取數據,然後使我的page-edit.php顯示正確的內容進行相應編輯。我已將變量$ i分配給每個在整個while循環中遞增的錨定標記,理想情況下,我會使用$ i從數據庫中選擇正確的頁面。我想避免使用jQuery,儘管我假設這將被建議。任何見解都會很棒,事先要感謝。從點擊的定位標記抓取變量

<?php 
     $connection = mysql_connect('localhost', 'root', 'root'); 
     mysql_select_db('posts'); 
     $query = "SELECT * FROM pages"; 
     $result = mysql_query($query); 
     $i = 0; 
     while($row = mysql_fetch_array($result)){ 
      $i++; 
      echo '<a href="edit-page.php">' . $row['page_title'] . ' - ' . $i . '</a>' . '</br>'; 
     } 
     mysql_close(); 
?> 
+3

爲什麼不使用它作爲錨定標記中的GET變量:'echo' Egg

+0

嗨,謝謝你的迴應!你能給我一些進一步的見解嗎? –

+0

@Egg提出了一個很好的建議!還有Leon,你確定你想創建自己的CMS嗎?我沒有看到真正的理由這樣做(除非它是一個訓練練習)。 –

回答

1

使用$i作爲GET在while循環中的鏈接變量:

echo '<a href="edit-page.php?id=' . $i . '>' . $row['page_title'] . ' - ' . $i . '</a>' . '</br>';

然後你可以檢查$_GET['id']讓你知道ID /頁就是要編輯,並從數據庫中獲取的數據是:

if (!empty($_GET['id'])) { 
    $query = 'SELECT * FROM pages WHERE id=' . $_GET['id']; 
    ... 
    // Show the form populated with data from the above query. 
} 

我保持這個非常簡單,讓你開始。

不要忘記考慮對SQL Injection進行保護並遠離已棄用的MySQL API以使用MySQLi APIMySQL PDO

+0

我的目的不是爲了讓CMS安全/黑客證明,因爲我目前正在學習很多SQL和PHP的基礎知識,但是如果我曾經計劃使用CMS網站去住。 –

0

使用此方法,您需要爲每個頁面創建一個編輯頁面。

主PHP文件

<?php $db = mysqli_connect("localhost","user","pass","name"); 
foreach($this->db->query("SELECT * FROM pages") as $row): ?> 
    <a onclick="loadPage(<?php echo $row['id']; ?>)"> 
     <?php echo $row['page_title']; ?> 
    </a> 
<?php endforeach; ?> 

<script> 
    function loadPage(id){ 
     $.get('handler.php', { param: id }) 
     .done(function (loaded){ 
       document.getElementById("example").innerHTML = loaded; 
     }); 
    } 
</script> 

處理程序PHP文件

<?php if(isset($_GET['param'])): 
    foreach($this->db->query("SELECT * FROM pages") as $row): 
     catch($_GET['param']){ 
      case 1: 
       require_once 'edit-data.php'; 
       break; 
      case 2: 
       require_once 'edit-data-two.php'; 
       break; 
      default: 
       break; 
     } 
    endforeach; ?> 

編輯data.php =編輯頁X
編輯數據two.php =編輯頁面Y

0

我相信@egg提供了最好的答案。就我所知,這種方式相對簡單並且沒有缺陷。

我進入我的遞增$變量i到錨標籤href屬性while循環中,像這樣:

<?php 
     $connection = mysql_connect('localhost', 'root', 'root'); 
     mysql_select_db('posts'); 
     $query = "SELECT * FROM pages"; 
     $result = mysql_query($query); 
     $x = 0; 
     while($row = mysql_fetch_array($result)){ 
      $x++; 
      echo '<a href="edit-page.php?id=' . $x . '">' . $row['page_title'] . ' - ' . $x . '</a>' . '</br>'; 
     } 
     mysql_close(); 
?> 

然後用下面的代碼在另一頁(編輯page.php文件),以呼應從數據庫中選擇合適的頁面內容作爲用戶選擇的錨點:

<?php 
    $edit_page_query_url = $_SERVER['QUERY_STRING']; 
    $edit_page_url = preg_replace("/[^0-9]/","",$edit_page_query_url); 
    $connection = mysql_connect('localhost', 'root', 'root'); 
    mysql_select_db('posts'); 
    $query = "SELECT * FROM pages WHERE page_id = $edit_page_url"; 
    $result = mysql_query($query); 
    $x = 0; 
    while($row = mysql_fetch_array($result)){ 
     $x++; 
     echo $row['page_content']; 
    } 
    mysql_close(); 
?> 

謝謝@egg,非常感謝您的幫助! :]

有人對上面的代碼有意見嗎?

+1

'$ x'必須是頁表的每一行的標識符(通常是主鍵)(不僅僅是一個實時生成的id號。 '。 – Egg

+0

再次感謝您的幫助。 –