Не удается получить динамический доступ к обновленным версиям моей базы данных MySQL из моей флеш-игры - PullRequest
0 голосов
/ 26 июля 2011

Я создал игру с использованием Actionscript 3. В этой игре я сохраняю результаты в онлайн-базе данных MySQL. Я получаю доступ к этой базе данных из моей флеш-игры, вызывая php-скрипты, написанные мной с использованием класса URLLoader.

Я загружаю все оценки игроков, чтобы их можно было просмотреть в начале игры, а затем сохраняю их по мере прохождения уровней.

Моя проблема в том, что как только я сохраняю счет, а затем перезагружаю все результаты в главном меню, я получаю результаты, которые были загружены в начале игры, и ни один из них не обновлялся. Я могу просматривать обновленные результаты только после перезапуска игры.

Вот код actioncript для загрузки моего счета. Вызывается один раз, когда инициализируется главное меню.

getScoresRequest = new URLRequest("http://localhost/GetScores.php");
getScoresRequest.method = URLRequestMethod.GET;
getScoresLoader = new URLLoader();
getScoresVariables = new URLVariables();

getScoresVariables.email = Globals.email;
getScoresRequest.data = getScoresVariables;

getScoresLoader.dataFormat = URLLoaderDataFormat.TEXT;
getScoresLoader.addEventListener(Event.COMPLETE, completeHandler);
getScoresLoader.load(getScoresRequest);

private function completeHandler(e:Event):void
{
    var xmlData:XML = new XML(e.target.data);
}

Затем я использую эти xmlData для отображения своих результатов.

Вот мой php для загрузки моих очков:

<?php

$email = $_REQUEST["email"];

$dbh=mysql_connect ("**********", "*****", "*******")
or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("*******",$dbh);

$query = "SELECT * FROM Scores WHERE email = '$email'";

$result = mysql_query($query, $dbh);

$xml_output = "<Scores>\n";

for($x = 0; $x < mysql_num_rows($result); $x++)
{
    $row = mysql_fetch_assoc($result);
    $xml_output .= "\t<Entry>\n";
    $xml_output .= "\t\t<Level>" . $row['level'] . "</Level>\n";
    $xml_output .= "\t\t<Score>" . $row['score'] . "</Score>\n";
    $xml_output .= "\t</Entry>\n";
}
$xml_output .= "</Scores>";

echo $xml_output;


mysql_close($dbh);

?>

Мой сценарий действий для сохранения результатов очень похож на загруженный, за исключением того, что loader.dataFormat имеет значение «Переменные» вместо «Текст». Если кто-нибудь захочет, чтобы я опубликовал это, я могу это сделать.

Вот php для сохранения:

<?php
$email = $_REQUEST["email"];
$level = $_REQUEST["level"];
$score = $_REQUEST["score"];

$dbh=mysql_connect ("******", "********", "********")
or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("********",$dbh);

$query = "SELECT * FROM Scores WHERE email = '$email' AND level = '$level'";

$result = mysql_query($query, $dbh);
$row = mysql_num_rows($result);

$returnVars = array();

if($row > 0)
{
for($x = 0; $x < 1; $x++)
{
    $currentRow = mysql_fetch_assoc($result);

    if((int)$score > (int)$currentRow['score'])
    {
        $returnVars['prevHighScore'] = $currentRow['score'];
        $updateQuery = "UPDATE Scores SET score = '$score' WHERE email = '$email' AND level = '$level'";
        $result = mysql_query($updateQuery, $dbh);
        $returnVars['newHighScore'] = $score;
        $returnVars['type'] = "Score Updated";
    }
    else
    {
        $returnVars['prevHighScore'] = $currentRow['score'];
        $returnVars['newHighScore'] = '0';
        $returnVars['type'] = "Score Not Updated";
    }
}
}
else
{
    $insertQuery = "INSERT INTO Scores(email, level, score) VALUES('$email', '$level', $score)";
    $result = mysql_query($insertQuery, $dbh);
    $returnVars['newHighScore'] = $score;
    $returnVars['prevHighScore'] = "0";
}
$returnVars['rows'] = $row;
$returnString = http_build_query($returnVars);
echo $returnString ;

mysql_close($dbh);

?>

Моя база данных определенно обновляется, так как я могу просматривать содержимое.

Если у кого-то есть какие-либо идеи, это будет с благодарностью.

1 Ответ

0 голосов
/ 26 июля 2011

Бесстыдно добавив свой комментарий в качестве ответа

Попробуйте добавить случайное значение к вашему URL. Нравится:

http://localhost/GetScores.php?_rand=0.12324343213

и восстанавливайте это значение каждый раз при доступе к источнику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...