页面更新后获取更改的数据

时间:2014-05-15 04:31:44

标签: javascript php jquery html mysql

提交更新按钮时,会调用函数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 个答案:

答案 0 :(得分: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>代码。