Problem: How to create rough drafts of texts typed in FCKeditor field, using AJAX? (safety copies, "just in case")
Keywords:
SOLUTION
drafts
<script type="text/javascript" src="fckeditor/fckeditor.js"></script>
<script type="text/javascript">
var oFCKeditor = new FCKeditor('FCKeditor1');
oFCKeditor.BasePath = "fckeditor/";
oFCKeditor.Create();
</script><?php
//creating first record in draft table
$create_draft = mysql_query ("INSERT INTO drafts VALUES (NULL, 'Nothing catched yet...', NOW())");
$draft_msg = "<p>Database is ready to draft catching.</p>";
/*yes, I know i can use mysql_insert_id function, to get id I want,
but somehow not always it work properly. This may be not very "swift" solution, but... :P*/
$get_id = mysql_query ("SELECT draft_id FROM drafts ORDER BY draft_id DESC LIMIT 1");
while ($rd = mysql_fetch_array($get_id))
{
$draft_id = $rd["draft_id"];
}
echo '<form><input type="hidden" id="draft_id" name="draft_id" value="'.$draft_id.'" /></form>';
?><script type="text/javascript">
var xhr = false;
//creating XMLHttpRequest
if (window.XMLHttpRequest)
{
xhr = new XMLHttpRequest();
}
//as usual IE sucks -_-
else if (window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
//function used to send data
function send_draft()
{
if (xhr)
{
//id of the draft
var draft_id = document.getElementById("draft_id").value;
//draft itself
var draft = FCKeditorAPI.GetInstance('FCKeditor1').GetXHTML();
//php script - updates draft in database
var url = "draft/savarticle.php?draft_id=" + draft_id;
url+= "&draft=" + draft;
xhr.open("GET", url);
xhr.onreadystatechange = function ()
{
if (xhr.readyState == 1 || xhr.readyState == 2 || xhr.readyState == 3)
{
var str='Update in progress...;
document.getElementById("msg").innerHTML = str;
}
if (xhr.readyState == 4 && xhr.status == 200)
{
var str = 'Draft saved!';
document.getElementById("msg").innerHTML = str;
}
xhr.send(null);
}
}
setTimeout('send_draft()', 30000);
}
</script><body onload="send_draft()">
<div id="msg"></div>
<?php
$link = mysql_connect("adress","user","password");
mysql_select_db("database_name");
//everything what was send via AJAX
$draft_id = $_GET["draft_id"];
$draft = $_GET["draft"];
$draftinger = mysql_query ("UPDATE drafts SET draft = '$draft', date = NOW() WHERE draft_id = '$draft_id'");
?>