AS2 + MySQL数据库

时间:2012-05-14 12:48:25

标签: php jquery mysql ajax actionscript-2

我自己有一个包含三个字段的数据库表:

id, content, timestamp

idtimestamp会自动生成。

我把这个数据库连接到一个flash电影,通过php将数据库表虹吸到一个XML中,然后将这些数据导入到flash电影中。

在这个项目的前端,我有一个html表单,它通过AJAX POST将textarea值提交到数据库中。

表单,提交,xml导出和flash显示都正常工作,除了一件事。

由于这是在网页上,我想确保多个用户并访问该页面并实际观看正在提交的帖子,即时弹出flash动画。我遇到的问题是,如果两个人同时提交,则两者都被提交到数据库中,但只有最后出现在数据库中的提交才会出现在flash电影中。

我想知道从长远来看会有什么好处?重新编写我的jQuery,以便在用户单击提交后添加一个随机的延迟,或者返回到actionscript并重新编写代码以允许从数据库中的多行推送多个数组。

这是我正在使用的动作脚本:

function xmlGrab() {
    postXML.onLoad = function(success:Boolean) {
        loaded = false;
        mArray = [];
        if (!success) {
            trace("Error Loading XML");
        } else {
            var nodeM = this.childNodes[0].childNodes;
            for (m = 0; m < nodeM.length; m++) {
                mArray.push({id:nodeM[m].attributes.id, cont:nodeM[m].attributes.content, mark:nodeM[m].attributes.watermark, time:nodeM[m].attributes.timestamp});
                mID = mArray[m].id;
                if (m == nodeM.length - 1) {
                    loaded = true;
                    addPost();
                }
            }
        }
    };
    postXML.load(phpURL + "?uniqueID=" + getTimer());

}

function addPost() {
    if (loaded) {
        if (cID != mID) {
            _root.attachMovie("masterClip","masterClip" + Number(cID),_root.getNextHighestDepth());
            this["masterClip" + Number(cID)].varContent = mArray[count].cont;
            this["masterClip" + Number(cID)].varMark = mArray[count].mark;
            this["masterClip" + Number(cID)].varTime = mArray[count].time;
            cID++;
            if (count != 9) {
                count++;
            }
        }
    }
}

setInterval(xmlGrab,3000);
xmlGrab();

这是我正在使用的javascript / jQuery / Ajax代码:

<form id="survey" name="survey" action="wrapup_insert.php" method="post">
     <textarea id="comments" class="qText" name="comments"></textarea>
     <div id="buttonDiv">
          <a class="button" id="submit" style="cursor:pointer;">SUBMIT</a>
     </div>
</form>

<script>
$("#submit").click(function() {
       validate();
});

function submit(){
    var com = $(".qText").val();
    var dataString = 'comments='+encodeURIComponent(com);
    $.ajax({  
        type: "POST",  
        url: "wrapup_insert.php",  
        data: dataString,  
        success: function() {  
            //centerPopup();
            //loadPopup();
            //window.location = 'index.html';
            clearForms(); 
        }
    });
}

function validate(){
       if ($(".qText").val() == ""){
        alert("Please Enter a Comment");
    } else {
        submit();
    }
}

function clearForms() {
    $(".qText").val('');
}
</script>

这是我正在使用的php:

POST PHP脚本:

<?php

    $host = "localhost";
    $user = "root";
    $password = "";
    $database = "wrapup";

    $link = mysql_connect($host, $user, $password);
    mysql_select_db($database);
    $comments = "";

    //SURVEY INFORMATION
    $comments = mysql_real_escape_string($_REQUEST['comments']);

    $addClient  = "INSERT INTO data (content) VALUES ('$comments')";
    mysql_query($addClient) or die(mysql_error());

    mysql_close($link);

?>

XML导入PHP:

<?PHP

$host = "XXXX";
$user = "XXXX";
$password = "XXXX";
$database = "wrapup";

$link = mysql_connect($host, $user, $password);
mysql_select_db($database);

$last_timestamp = $_GET['ts'];

$query = "SELECT * FROM(SELECT id, content, UNIX_TIMESTAMP(timestamp) AS unixtime FROM data WHERE UNIX_TIMESTAMP(timestamp) < NOW() ORDER BY id DESC  LIMIT 10) T ORDER by id ASC";
$results = mysql_query($query);

echo "<?xml version=\"1.0\"?> \n";

echo "<data>\n";

while ( $line = mysql_fetch_assoc($results)){

    $oCont = array("<", ">", "\'", "\"", "'");
    $rCont = array("&#60;", "&#62;", "&#39;", "&#34;", "&#39;");
    $content = str_replace($oCont, $rCont, html_entity_decode($line["content"]));

    $ts = DateTime::createFromFormat("U",$line["unixtime"]);
    $ts->setTimezone(new DateTimeZone("America/Chicago"));

    echo "<entry id=\"" . $line["id"] ."\" content=\"" . $content ."\" watermark=\"http://localhost/wrapup/images/gehc.png\" timestamp=\"" . $ts->format("M d, Y"). " at " . $ts->format("g:ia") ." CST"."\"/>\n";
}

echo "</data>\n";

mysql_close($link);

?>

我希望这能说明一些事情。一点解释,我正在使用双重查询,以便我可以捕获最后十个帖子,然后按时间顺序将它们排序。闪存是动态的,因此它只会在“ Now ”之后加载前十个和所有闪存。

0 个答案:

没有答案