2017-05-04 58 views
0

我目前正在處理個人內容管理系統項目,但我遇到了問題。

<ul> 
    <?php 
    if(!$result) { //Check for result 
     die("You have no pages &#9785 Why not create one?"); 
    } else { 
     while ($pages = mysqli_fetch_assoc($result)) { //Loop through results 
     ?> 
     <li class="triple"><span><?php echo $pages["title"]?></span><span><?php echo $pages["visible"] ?><span /><form action = "editPage.php" method="post"><input type="submit" value="Edit Page" name="<?php $pages["title"];?>" /></form></li> //Create li elements for each result that gets created 
    <?php 
     }; 
    }; 
    ?> 
</ul> 

基本上我使用查詢從MySQL表結果做出頁面列表,我碰到的問題是,到底是什麼形式,我希望發生的是我想要一個會話要存儲的變量說明哪個頁面將被編輯,但我不能在末尾的表格中使用$_POST來獲取名稱,因爲顯然名稱是從表中自動生成的。每個使用它的人都會有不同的頁面名稱,所以我不能只用一個名字,例如$_POST['homepage']

如果任何人都可以提供關於如何解決我的問題的任何建議,甚至如何提出一個更好的解決方案來存儲哪個頁面將被編輯,因爲它會進入另一個頁面(editPage.php),這將是偉大的。

+0

如果它的數據來自MySQL表,那麼我假設「pages」表中有一個唯一的鍵,爲什麼不使用那個鍵呢? 「名稱」在這個意義上是不相關的,不是? – Cninroh

+0

那麼唯一的關鍵是'身份證',而且即使我做了一個MySQL查詢,我也不太明白這是怎麼讓我選擇我想編輯的頁面的內容,因爲我已經有約10或如此活躍的頁面和5個儲備,所以這些ID有點混亂起來。最重要的是,我不認爲使用靜態ID會允許我查看動態生成的li項目 – ParadAUX

回答

0

使用$_SESSION[]來存儲$ page數組的數據並在editPage.php中再次訪問它。您需要確保您在兩個頁面上都撥打start_session();,以便按預期工作。由於您正在創建多個表單並且不知道在PHP運行時將提交哪個表單,因此您需要將所有頁面存儲在$ _SESSION中,然後遍歷它們以檢查在editPage中選擇的頁面.PHP:

$_SESSION['pages'] = array(); 
while ($page = mysqli_fetch_assoc($result)) { 
    $_SESSION['pages'][] = $page; 
    echo "<li class=\"triple\"> 
    <span>".$page["title"]."</span> 
    <span>".$page["visible"]."</span> 
    <form action=\"editPage.php\" method=\"post\"> 
     <input type=\"hidden\" name=\"pageID\" value=\"".$page['id']."\"> 
     <input type=\"submit\" value=\"Edit Page\"> 
    </form> 
    </li>"; 
} 

然後在editPage.php

foreach($_SESSION['pages'] as $page){ 
    if($page['id'] == $_POST['pageID']){ $editpage = $page; break; } 
} 
// do stuff with $editpage data 

另一種選擇是使用serialize($page)併發送與表單數據陣列中的隱藏的輸入元件。

<input type='hidden' name='data' value='<?php echo serialize($page); ?>'> 

然後,您可以使用$editpage = unserialize($_POST['data']);將其重新轉換爲editPage.php中的數組。

+0

感謝您的快速回復,我會測試它的工作方式,我會盡快與您聯繫。還有很多東西要學習PHP XD – ParadAUX

+0

@ParadAUX,我對最初沒有考慮過的問題做了一些更新。如果您選擇使用$ _SESSION var,則應該查看更新 – M31