2014-05-15 97 views
3

當更新按鈕提交功能edit_page()被稱爲改變的數據。該功能使用輸入的新數據改變數據庫表格行。
這工作正常表正確地修改條目是好的。
但問題是,當更新按鈕提交
1項是數據庫插入或正確地改變。
2.但是,當頁面重新加載這個更新頁面的內容保持原來的狀態時,就像之前或之前更新前或剛剛提交之後一樣。

抓取頁面更新後

我的代碼:

<?php 

function edit_page() 
{ 
add_cat(); 
global $page_id; 
?> 
<?php 
if (isset($_GET['page_action']) && ($_GET['page_action'] == 'edit')) 
    { 
    $page_id = $_GET['post']; 
    } 
?> 
<?php 
$page_id = $_GET['post']; 
$result = mysql_query("SELECT * FROM pages WHERE page_id = '$page_id'"); //execute the SQL query and return records 
$row = mysql_fetch_array($result); 
$page_title = $row['page_title']; 
$page_content = $row['page_content']; 
?> 
<form method="post" action="" name="edit_page" class="edit_page"> 
<h4>Page Title:</h4> <input type="text" name="title" class="title" placeholder="Add title of the Page" required value="<?php echo $page_title;?>"/><br/> 
<h4>Page Content:</h4><br/> 
<textarea cols="80" id="content" name="content" rows="10"><?php echo $page_content;?></textarea> 
<input type="hidden" name="page_edits" value="yes" /> 
<input type="submit" name="edit_page" class="button" value="Update"/> 

<?php 
save_edits(); } 

function save_edits() 
    { 
if (isset($_POST['edit_page']) && $_POST['page_edits']) 
    { 
    $page_id = $_GET['post']; 
    $page_id = $_GET['post']; 
    $page_title = $_POST['title']; 
    $page_content = $_POST['content']; 
    $date = date('Y-m-d h:i'); 
    $query = "UPDATE pages SET page_title='$page_title', page_content='$page_content', date_gmt='$date' WHERE page_id = '$page_id'"; 
    $result = mysql_query($query) or die("Unable to create Page: " . mysql_error()); 
    } 
} 
?> 
<div class="right_sidebar"> 
<?php edit_page();?></div> 

最後,我的意思是說,我只是希望像WordPress的功能,當更新按鈕被點擊其中剛過,我們看到更新的數據。

+1

您應該在加載頁面內容之前保存更改。 –

回答

2

你在這裏做PHP程序的方式。這意味着這些陳述會一個接一個地執行,所以問題在於你放置陳述的方式。

在代碼中,你是第一個也是唯一然後顯示的形式對其進行更新,所以這就是爲什麼以前的值獲得牽強,雖然更新只是後來發生的事情。

解決方案:功能save_edits()和其調用應該放在第一位,然後edit_page().

在安全方面另一個重要的事情,你直接將你從地址欄中獲得的價值。現在就是這樣,有人可以通過在piece of code中寫下你的整個桌子。您可以使用mysql_real_escape_string()來防止它(儘管不是完全)或更好:

Please, don't use mysql_* functions in new code。他們不再維護and are officially deprecated。請參閱red box?請改爲了解prepared statements,並使用PDOMySQLi - this article將幫助您決定哪個。如果您選擇PDO,here is a good tutorial

最後,您不關閉您的<form>標籤。

+1

確定即時試圖代碼

標籤在我的代碼實際上關閉這裏我粘貼只需要代碼等我刪除了,因此它可能在這裏錯字錯誤 – Nothing

+0

我從來沒有像鑫卡特您在聲明中感謝工作@I能有Kittenz,這是我的管理面板不是前端。後來我正在尋找實施你的其他建議。 – Nothing