AS3,MySQL的PHP​​连接 [英] as3, MySQL PHP connection

查看:118
本文介绍了AS3,MySQL的PHP​​连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图与数据库连接我的闪存项目。但是,我希望能够从具有3个字段(姓名,得分和日期)数据库提交和检索数据。我的问题是,如果我点击提交按钮,当我去检查在数据库中,我只看到0的比分意味着什么都不提交。有人可以帮助我在此。 TQ 这是我的编码闪光:

  VAR STR:字符串=;
VAR myScore的= 0;
btn_submit.addEventListener(MouseEvent.CLICK,提交);

提交功能(E:的MouseEvent)
{
VAR myrequest:的URLRequest =新的URLRequest(http://127.0.0.1/Y/sendscore.php);
myrequest.method = URLRequestMethod.POST;
VAR变量:使用URLVariables =新的URLVariables();
variables.name =海峡;
variables.score = myScore的;
myrequest.data =变量;
VAR装载机:的URLLoader =新的URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(引发Event.COMPLETE,dataOnLoad);
loader.load(myrequest);
}

功能dataOnLoad(EVT:事件)
{
MC_success.alpha = 100;
//状态是从后端通过自定义标记
}
 

我的PHP code用于发送数据;

 < PHP
    //包含数据库连接的详细信息
    require_once('config.php文件');

        //连接到MySQL服务器
    $链接=的mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
    如果(!$链接){
        死亡(无法连接到服务器:mysql_error());
    }

    //选择数据库
    $分贝= mysql_select_db(DB_DATABASE);
    如果(!$ DB){
        死亡(无法选择数据库);
    }

//函数来净化从表单中接收到的值。 prevents SQL注入
    功能清洁($海峡){
        $海峡= @trim($海峡);
        如果(get_magic_quotes_gpc()){
            $海峡=函数stripslashes($海峡);
        }
        返回mysql_real_escape_string($海峡);
    }

    //消毒POST值
    $名称=清洁($ _ POST ['名称']);
    $得分=清洁($ _ POST ['得分']);
        $的currentdate =日期(Y / M / D);

    //创建INSERT查询
    $ QRY =INSERT INTO高分(用户,得分,日期)VALUES('$名字','$得分','$的currentdate');
    $结果= @mysql_query($ QRY);
回声的写作=确定;
出口();
则mysql_close();

?>
 

我的PHP code检索数据;

 < PHP
    //包含数据库连接的详细信息
    require_once('config.php文件');

        //连接到MySQL服务器
    $链接=的mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
    如果(!$链接){
        死亡(无法连接到服务器:mysql_error());
    }

    //选择数据库
    $分贝= mysql_select_db(DB_DATABASE);
    如果(!$ DB){
        死亡(无法选择数据库);
    }

    //创建INSERT查询
    $ QRY =SELECT * FROM榜ORDER BY得分ASC;
    $结果= @mysql_query($ QRY);
        $ NUM = mysql_numrows($结果);
如果($ num个> 10)
{$ NUM = 10;}
//回声的写作=确定;

回声< B><中心>的最佳时间:LT; /中心>< / B>< BR /><表>;

$ i = 0;
$ I2 = 1;
而($ I< $ NUM){

$名= mysql_result($结果,$ I,用户);
$时间= mysql_result($结果,$ I,分数);
$日期= mysql_result($结果,$一,日);


回声< TR>< TD ALIGN =左边VALIGN =顶部> $ I2< / TD>< TD ALIGN =中心VALIGN =顶部>< B> $名称和LT; / B> |。$比分| $日期和LT ; / TD>< / TR>< TR>< TD合并单元格= 2>< HR>< / TD>< / TR>中;
$ I2 ++;
$ I ++;
}
回声< /表>;
// $ urlRefresh =scores.php;
//标题(刷新:15; URL = \。$ urlRefresh\);

出口();
则mysql_close();


?>
 

解决方案

除非你已经错过了一些片code,从而将比分改变时,你实际上宣告 VAR myScore中= 0 就在你的AS3 code座的顶部。

的第一件事是将它修改成 100 ,然后运行脚本,看看有没有修改的得分变量是越来越提交。如果是,那么一切工作正常,因为它应该。

更新:

您已经改变了您的问题,并希望能够加载数据。你已经有通过 loader.addEventListener(引发Event.COMPLETE,dataOnLoad)设置了此功能。你只需要抓住你的PHP脚本正在发回的数据。这可以通过在 dataOnLoad 函数的 EVT 参数来访问:

 函数dataOnLoad(EVT:事件):无效{
    跟踪(数据提交完整的);
    VAR returnVars = evt.target.data;

    跟踪(***********************);

    为(在returnVars VAR myVars){
        跟踪(myVars +:+ returnVars [myVars]);
    }

    跟踪(***********************);
}
 

更新2:

您已经请求帮助从数据库加载你的分数。当你已经有一个检索此从数据库的PHP文件(假设它被称为 scores.php ),M你只需要在Flash中的函数加载它。

您已经具备了基本功能到位,利用的URLLoader 和事件侦听器。你只需要这些应用到一个简单的负载:

  btn_scores.addEventListener(MouseEvent.CLICK,loadScores);

功能loadScores(E:的MouseEvent):无效{
    VAR fileLoader:的URLLoader =新的URLLoader();
    fileLoader.addEventListener(引发Event.COMPLETE,scoresLoadComplete);

    fileLoader.load(新的URLRequest(scores.php));
}

功能scoresLoadComplete(EVT:事件):无效{
    尝试 {
        VAR returnVars = evt.target.data;

        跟踪(***********************);
        为(在returnVars VAR myVars){
            跟踪(myVars +:+ returnVars [myVars]);
        }
        跟踪(***********************);
    }赶上(ERR:错误){
        跟踪(无法解析加载文件:+ err.message);
    }
}
 

注意你的PHP文件目前正在返回结果的HTML表格。这不会表现在Flash中;你会好得多通过发送键/值对和分析他们或分数只是一个基本的HTML列表。

am trying to connect my flash project with database. However, i want to be able to submit and retrieve data from database having 3 fields (name, score and date). My problem is that if I click submit button and when i go to check in database i only see 0 score meaning nothing is submitted. Can someone help me on this. Tq Here is my coding for flash:

var str:String = "";
var myscore = 0;
btn_submit.addEventListener(MouseEvent.CLICK, submitted);

function submitted(e:MouseEvent)
{
var myrequest:URLRequest = new URLRequest("http://127.0.0.1/Y/sendscore.php");
myrequest.method = URLRequestMethod.POST;
var variables:URLVariables = new URLVariables();
variables.name = str;
variables.score = myscore;
myrequest.data = variables;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, dataOnLoad);
loader.load(myrequest);
}

function dataOnLoad(evt:Event)
{
MC_success.alpha=100;
//status is a custom flag passed from back-end 
}

MY PHP CODE FOR SENDING DATA;

<?php
    //Include database connection details
    require_once('config.php');

        //Connect to mysql server
    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    if(!$link) {
        die('Failed to connect to server: ' . mysql_error());
    }

    //Select database
    $db = mysql_select_db(DB_DATABASE);
    if(!$db) {
        die("Unable to select database");
    }

//Function to sanitize values received from the form. Prevents SQL injection
    function clean($str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
        return mysql_real_escape_string($str);
    }

    //Sanitize the POST values
    $name = clean($_POST['name']);
    $score = clean($_POST['score']);
        $currentdate = date("Y/m/d");

    //Create INSERT query
    $qry = "INSERT INTO highscores(user, score, date) VALUES('$name','$score','$currentdate')";
    $result = @mysql_query($qry);
echo "writing=Ok";
exit();
mysql_close();  

?>

MY PHP CODE TO RETRIEVE DATA;

<?php   
    //Include database connection details
    require_once('config.php');

        //Connect to mysql server
    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    if(!$link) {
        die('Failed to connect to server: ' . mysql_error());
    }

    //Select database
    $db = mysql_select_db(DB_DATABASE);
    if(!$db) {
        die("Unable to select database");
    }

    //Create INSERT query
    $qry = "SELECT * FROM highscores ORDER BY score ASC";
    $result = @mysql_query($qry);
        $num=mysql_numrows($result);
if($num > 10)
{$num = 10;}
//echo "writing=Ok";

echo "<b><center>Best Times:</center></b><br /><table>";

$i=0;
$i2=1;
while ($i < $num) {

$name=mysql_result($result,$i,"user");
$time=mysql_result($result,$i,"score");
$date=mysql_result($result,$i,"date");


echo "<tr><td align=left valign=top>$i2.</td><td align=center valign=top><b>$name</b> | $score | $date</td></tr><tr><td colspan=2><hr></td></tr>";
$i2++;
$i++;
}
echo "</table>";
//$urlRefresh = "scores.php";
//header("Refresh: 15; URL=\"" . $urlRefresh . "\"");

exit();
mysql_close();


?>

解决方案

Unless you've missed out some piece of code whereby the score is changed, you're actually declaring var myscore = 0 right at the top of your AS3 code block.

The first thing would be to change that to 100, then run you script and see if that modified score variable is getting submitted. If it is, then everything is working as it should.

Update:

You've changed your question, and you want to be able to load data. You already have a function set up for this via loader.addEventListener(Event.COMPLETE, dataOnLoad). You just need to grab the data your PHP script is sending back. This can be accessed via your evt parameter in the dataOnLoad function:

function dataOnLoad(evt:Event):void {   
    trace("Data submission complete");
    var returnVars = evt.target.data;

    trace("***********************");

    for (var myVars in returnVars) {
        trace(myVars + ": " + returnVars[myVars]);
    }

    trace("***********************");
}

Update 2:

You've requested help with loading your scores from the database. As you already have a PHP file that retrieves this from the database (let's assume it's called scores.php),m you just need a function in Flash to load it.

You already have the basic functions in place, making use of URLLoader and Event Listeners. You just need these to apply to a straightforward load:

btn_scores.addEventListener(MouseEvent.CLICK, loadScores);

function loadScores(e:MouseEvent):void {
    var fileLoader:URLLoader = new URLLoader();
    fileLoader.addEventListener(Event.COMPLETE, scoresLoadComplete);

    fileLoader.load(new URLRequest("scores.php"));
}

function scoresLoadComplete(evt:Event):void {
    try {
        var returnVars = evt.target.data;

        trace("***********************");
        for (var myVars in returnVars) {
            trace(myVars + ": " + returnVars[myVars]);
        }
        trace("***********************");
    } catch (err:Error) {
        trace("Can't parse loaded file: " + err.message);
    }
}

Note that your PHP file currently returns an HTML table of results. This won't behave in Flash; you'd be much better off sending through key/value pairs and parsing them or just a basic HTML list of scores.

这篇关于AS3,MySQL的PHP​​连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆