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

Я создаю свой флеш-проект, который принимает 4 переменные, то есть имя, школу, оценку и дату. Однако связь между FLASH, PHP и MYSQL работает нормально, и я могу без проблем отправлять данные в базу данных MySQL через flash. Теперь моя проблема в том, что я не могу получить и просмотреть данные обратно на флэш-память. Я создал текстовое поле с именем рекордов для извлечения данных во флэш-памяти. И я уверен, что мой PHP-код для извлечения в порядке, так как я могу просматривать данные в браузере. Так есть ли способ получить мои данные во флэш-памяти? вот моя кодировка для flash:

 str.text = "";
myschool.text = "";
myscore.text = "";

//Here i declared a textfield named highscores
//var text:String = highscores.text;btn_submit.addEventListener(MouseEvent.CLICK, submitted);

function submitted(e:MouseEvent)
{

if(!str.length) {
status_txt.text = "Please enter your name";
}
else if (!myschool.length) {
status_txt.text = "Please enter your school name";
}
else if (!myscore.length) {
status_txt.text = "Please enter your score";
}
else {
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.text;
variables.school = myschool.text;
variables.score = myscore.text;

myrequest.data = variables;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;

loader.addEventListener(Event.COMPLETE, dataOnLoad);
loader.load(myrequest);
}
}

function dataOnLoad(evt:Event)
{

trace("Data submission complete");
var returnVars = evt.target.data;

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

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

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

MC_success.alpha=100;
//status is a custom flag passed from back-end
}

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("http://127.0.0.1/Y/scores.php"));}

function scoresLoadComplete(evt:Event):void {
try {

var returnVars = evt.target.data;
highscores.htmlText = returnVars;
trace("Data retrieved successfully");
for (var myVars in returnVars) {
trace(myVars + ": " + returnVars[myVars]);
}

trace("***********************");
//highscores.htmlText = returnVars.scores;
} catch (err:Error) {
trace("Can't parse loaded file: " + err.message);
}}

ЗДЕСЬ МОЙ КОД 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 DESC LIMIT 5";
$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>";
//echo "scores=<b><center>Best Times:</center></b><br /><table>";

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

$name=mysql_result($result,$i,"user");
$school=mysql_result($result,$i,"school");
$score=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> <b> | $school</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();?>

0

Решение

Как я уже упоминал в моем предыдущий ответ, текстовое поле во Flash не будет хорошо работать с таблицами HTML.

В вашем PHP-файле вам нужно заменить все между первым и последним echo со следующим:

echo "scores=<b>Best Times:</b><br />";

$i = 0;
$i2 = 1;

while ($i < $num) {
$name = mysql_result($result,$i,"user");
$school = mysql_result($result,$i,"school");
$score = mysql_result($result,$i,"score");
$date = mysql_result($result,$i,"date");

echo "$i2. <b>$name</b> | <b>$school</b> | $score | $date <br />";

$i2++;
$i++;
}

Обратите внимание, что я добавил обратно scores= переменная. это не должен вызвать какие-либо проблемы, если вы используете следующую строку в AS3:

highscores.htmlText = returnVars.scores;

Разделение ваших переменных на пары имя / значение означает, что вы можете передавать другие переменные из PHP, если вам нужно.

Обновить:

Посмотрев на ваши файлы, все работает отлично; он успешно отправляет в базу данных и загружает данные обратно. Тем не мение:

Я думаю, что у вас проблема с Flash кэширование Ваш файл Scores.php.

Это довольно распространено при URLRequest() на файл, который вы ранее загрузили. Самый простой способ справиться с этим — изменить эту строку:

fileLoader.load(new URLRequest("http://127.0.0.1/Y/scores.php"));

К этому:

fileLoader.load(new URLRequest("http://127.0.0.1/Y/scores.php?rand=" + Math.random() * 999999));

Все, что нужно сделать, это добавить случайное число в конец вашей загрузки в качестве переменной «мусора» rand, Flash видит это при загрузке другого файла и поэтому делает новый запрос, а не вытаскивает его из кэша.

Кроме этого, все в ваших файлах, кажется, работает именно так, как должно.

0

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

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

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