as3, MySQL PHP соединение

Я пытаюсь подключить мой проект Flash с базой данных. Тем не менее, я хочу иметь возможность отправлять и извлекать данные из базы данных, имеющей 3 поля (имя, оценка и дата). Моя проблема в том, что, если я нажимаю кнопку отправки и когда я иду, чтобы проверить в базе данных, я вижу только 0 баллов, означающих, что ничего не отправлено. Может ли кто-нибудь помочь мне в этом. Тд
Вот мое кодирование для 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
}

Мой PHP-код для отправки данных;

<?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();

?>

МОЙ PHP-КОД ДЛЯ ПОЛУЧЕНИЯ ДАННЫХ;

<?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();?>

1

Решение

Если вы не пропустили какой-то фрагмент кода, посредством которого изменяется счет, вы фактически объявляете var myscore = 0 прямо в верхней части вашего блока кода AS3.

Первым делом было бы изменить это на 100, затем запустите ваш скрипт и посмотрите, будет ли отправлена ​​измененная переменная счета. Если это так, то все работает как надо.

Обновить:

Вы изменили свой вопрос и хотите иметь возможность загружать данные. У вас уже есть функция, настроенная для этого через loader.addEventListener(Event.COMPLETE, dataOnLoad), Вам просто нужно получить данные, которые ваш PHP-скрипт отправляет обратно. Это может быть доступно через ваш evt параметр в dataOnLoad функция:

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("***********************");
}

Обновление 2:

Вы запросили помощь в загрузке ваших результатов из базы данных. Поскольку у вас уже есть файл PHP, который извлекает его из базы данных (предположим, он называется scores.php), вам просто нужна функция во Flash, чтобы загрузить ее.

У вас уже есть основные функции на месте, используя URLLoader и слушатели событий. Вам просто нужно это применить к прямой нагрузке:

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);
}
}

Заметка что ваш PHP-файл в настоящее время возвращает HTML-таблицу результатов. Это не будет вести себя во Flash; вам было бы намного лучше отправлять через пары ключ / значение и анализировать их, либо просто в простом HTML-списке результатов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]