如何使用PHP在MySQL中移动页面

时间:2010-11-20 15:12:42

标签: php mysql

我没有对PHP代码进行排序,但我希望有人会以任何代码作为示例。

MySQL表示例:

  • 回收站

我想创建一个删除页面,一旦点击删除链接,页面就会从页面表移动到垃圾箱表中。

因此该文件未从网站上完全删除,而是移至另一个表格(垃圾箱),并且在网站上不可见。

将使用什么代码将页面例如about_us.php从Pages表移动到垃圾箱表中?

3 个答案:

答案 0 :(得分:2)

如果我理解正确,您的数据库将至少有两个表:“Pages”和“Trash”。这些表格将包含您要在“Pages”和“Trash”之间移动的特定文件的名称。

表格

如果是这种情况,我建议你在一张桌子上做所有事情,使用一个字段作为天气的标志页面是否为“垃圾”。我们将此表称为“页面”,它将是这样的:

----------------------------
| PageName | isTrash |
| --------------------------- |
| about.php | 1 |
| home.php | 0 |

在这种情况下,字段isTrash分别通过使用值1和0来指示页面是否为垃圾页面。

守则

如果您要求PHP代码或SQL,我不太明白,所以这两者都是:

首先,您需要设置一些数据库信息并建立连接,如下所示:

<?
    //Information needed to make the connection
    $user="DB_username";
    $password="DB_password";
    $database="DB_name";
    //Same machine = localhost
    $host = "localhost";

    //Connect to the host
    mysql_connect(localhost,$user,$password);
    //Select the database
    @mysql_select_db($database) or die("Unable to select database");
?>

您可以在此处找到有关此主题的更多信息:http://www.w3schools.com/PHP/php_mysql_intro.asp

既然我们已准备好接受查询的数据库,那么让页面“home.php”成为垃圾页面:

<?
    //Information needed to make the connection
    $user="DB_username";
    $password="DB_password";
    $database="DB_name";
    //Same machine = localhost
    $host = "localhost";

    //Connect to the database
    mysql_connect(localhost,$user,$password);
    //Select the database
    @mysql_select_db($database) or die("Unable to select database");

    //MySQL query to make "home.php" a trash page
    $query = "UPDATE pages SET isTrash = 1 WHERE PageName = 'home.php'";
    //Execute the query
    mysql_query($query);
    //Close the connection
    mysql_close();
?>

此外,您可以在http://www.w3schools.com/sql/default.asp

找到有关SQL的更多信息

答案 1 :(得分:1)

我已经这样做了几次。它通常涉及使用以下字段创建通用trash表:

|------------|----------|------------|------|
| objectType | objectId | title      | data |
|------------|----------|------------|------|
| page       | 1        | Homepage   | ...  |
|------------|----------|------------|------|

因为您真的不想为数据库中的每个表创建一个垃圾表。

基本上,objectType字段包含已删除对象的表名,以及objectId中的ID。 title包含对象的用户友好描述,因为在向用户显示垃圾内容时,您不能指望他理解“页面1”的含义。 “页面:主页”更具说明性。

最后一个字段data包含page表中行的序列化副本。要取消删除,您将反序列化该行并重新插入。

删除页面涉及获取page记录,对其进行序列化,将其插入trash表,然后将其从原始page表中删除。

另一个解决方案是在page表中有一个标志,告诉记录是否被删除。但是,这个其他解决方案涉及在原始表(和索引)中留下一堆已删除的记录,并且可能会降低查询速度。它主要取决于您的流量,记录数量和预期响应时间。

答案 2 :(得分:0)

我不确定在一张桌子上做这个好主意实际上取决于页面的数量...... 因为它使得db表变得更大而没有实际使用的记录...所以每次你做一个选择或任何你必须考虑它们... 在我看来,它会减慢数据库的速度(除非你的数据中只有少量的记录) 怎么做插入(选择...))然后删除... 有2个查询没有戏剧性,因为它不是你经常会做的事情吗?

我认为在数据库中进行写操作时做慢的事情要比影响阅读的事情好得多......总是记住你读的比你写的要多。