我尝试编写一个脚本,混合我在互联网上找到的东西,以便将表单数据自动保存到mysql数据库...出了问题因为它能够插入脚本但是由于某种原因不能更新所以每个20秒(我设置的时间)正在生成一个新行......任何人都可以帮我找到并解决问题吗?
这是代码:
<?php
session_start();
unset($_SESSION['article_id']);
require_once('xajax/xajax_core/xajax.inc.php');
$xajax = new xajax();
function savetodb($form) {
$title = $form["title"];
$editor = $form["editor1"];
//$host = 'localhost';
//$username = 'my_user';
//$password = 'my_pass';
//$database = 'test_db';
//$connect = mysql_connect($host, $username, $password);
//mysql_select_db($database, $connect);
if ($_SESSION['article_id']=="") {
$sql = "INSERT INTO draft (`title`, `content`) VALUES ('$title', '$editor')";
$result = mysql_query($sql, $connect);
$idlast = mysql_insert_id($connect);
$_SESSION['article_id'] = $idlast;
} else {
$article_id = $_SESSION['article_id'];
$sql = "UPDATE draft SET `title`='$title',`content`='$editor' WHERE `id`='$article_id'";
$result = mysql_query($sql, $connect);
}
// Instantiate the object xajaxResponse
$objResponse = new xajaxResponse();
$objResponse->assign("autosavemsg","innerHTML", "<br />Record saved to database successfully!");
$objResponse->alert('Done!');
return $objResponse;
}
//$xajax->register(XAJAX_FUNCTION,'savetodb');
$xajax->registerFunction('savetodb');
$xajax->processRequest();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<?php $xajax->printJavascript('xajax'); ?>
</head>
<body>
<form name="form" id="form" enctype="multipart/form-data">
<?php
echo '<label>Title</label><input type="text" name="title" id="title"><br /><br />';
echo '<textarea name="editor1"></textarea>' ;
?>
<input type="button" name="save" onclick="xajax_savetodb(xajax.getFormValues('form'));" value="Save to Database">
</form>
<div id="autosavemsg"></div>
<script language="Javascript">
//Interval
var AutoSaveTime=20000;
//time object
var AutoSaveTimer;
SetAutoSave();
function SetAutoSave() {
AutoSaveTimer=setInterval("xajax_savetodb(xajax.getFormValues('form'));",AutoSaveTime);
}
</script>
</body>
</html>
不幸的是,甚至没有给我警告“完成”或我设置的消息..
会话可能有问题?
提前谢谢
答案 0 :(得分:0)
我不熟悉xajax
,但提到我的逻辑,我认为你做错了。
我认为您必须有两个不同的文件,一个是您的HTML
和javascript
,另一个是您的服务器端代码,负责插入或更新db
。
现在,因为我认为您使用ajax
调用文件本身,并且在代码的第三行中unset($_SESSION['article_id']);
将取消设置会话变量 {{ 1}}每次调用$_SESSION['article_id']
。
所以我认为你必须制作两个不同的文件。
<强> file1.php 强>
您有ajax
和html
个文件,并且其中包含javascript
行。
files2.php ,其中包含unset($_SESSION['article_id']);
和php
,并从中删除db related functions
行。
您还必须在 file1.php 中设置unset($_SESSION['article_id']);
应该调用 file2.php
我认为这会解决问题