如何阻止为少数用户编辑相同的文本

时间:2013-04-17 19:27:56

标签: php phpmyadmin

我需要阻止用户同时编辑相同的文字或文章。

当一个用户在管理面板中编辑文本时,如何阻止其他用户进行编辑?

2 个答案:

答案 0 :(得分:2)

实际上有很多方法......但是当我坐在约翰的时候,我的头顶就是

  1. 当您的应用程序中有人开始编辑时,您将更新查询发送到数据库顶部更新“编辑”行

  2. 现在,如果下一个用户尝试编辑相同的帖子重定向,则转到错误消息。

  3. 如果第一个用户完成,则发送另一个查询以更新“编辑”行。现在第二个可以编辑他们想要的东西......

  4. 这样的事情会起作用:

    If($_POST['startedit'] ) { 
         ............... // start your editing and then also send a query to a database
    
    } else { 
       If($_POST['finished']){ 
           .............// send the update query and send them some where like homepage
       }
    }
    

    有任何问题请询问

      
        

    编辑1

      

    好的,所以你问你如何获得编辑时间?好吧,有很多方法可以让它变得简单,你可以使用数据库实际上为你做时间戳,我会告诉你有可能。

    步骤1)在数据库中创建一个包含所需字段的表,然后在表的末尾添加一个时间戳字段,该字段设置为在更新行时更新。 (如果你不知道任何sql,这可以很容易地使用PHPmyadmin)

    步骤2)当用户点击“startedit”按钮时

    您会发送如下查询:

    $query = $pdo->prepare("UPDATE `yourtable` SET `editing` = '1' WHERE `text_id` = ':id'"); //Using PDO you prepare a update query to dynamically update any ID based on what form a user is using.
    
    $query->bindParam(':ID', $form_id); // Bind your value of the form to the parameter being passed to the PDO query
    
    $query->execute() // Run the PDO query.
    

    现在你可以在$ query上执行条件检查以确定它是否已执行,如果是,它将返回true ...所以我们这样做:

    if($query) {
        Redirect(to the form that he / she wants to work on) // Redirect (obviously lol)
    } else { 
    ............ What ever? ...........
    }
    

    现在你问自己好好废话如何检查某人是否正在编辑此表单?

    那么我们需要在旁边运行查询以查看是否正在编辑表单。

    所以我们这样做:

    $query = $pdo->prepare("SELECT * from `yourtable` WHERE `editing` = `1` and `form_id` = :ID"); // Retrieve all forms that are being edited
    
    $query->bindParam(':ID', $form_id); // Bind the parameter 
    
     $query->execute();
    
     if ($query->rowCount() > 0 ) {
         die("OOOPS! Some one is editing this form!! - Sorry to late!")
     } else {
       echo "Have fun editing punk!"; 
     }
    

    你去了,这几乎就是它的要点。我不会为你编写所有代码。但这是完成这项工作的基本方法。现在当然你要添加一个超时是否发生了用户编辑和什么不是。如果用户完成,则将编辑更新为= 0.依此类推。

    这将有助于您建立自己的工作。

    我也在使用PDO,所以如果您不熟悉它,请阅读thisthis

    • 享受

答案 1 :(得分:0)

最友好的解决方案可能是让用户同时编辑文章。如果发生冲突 - 说文章在给定的时间内由不同的用户保存 - 可以选择要使用的文章的版本。这需要版本控制,并且可能更难实现@Rixhers Ajazi解决方案。