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

Я пытаюсь подключить свой Flash-проект к базе данных. Тем не менее, я хочу иметь возможность отправлять и извлекать данные из базы данных, имеющей 3 поля (имя, оценка и дата). Моя проблема в том, что если я нажму кнопку «Отправить», и когда я пойду, чтобы проверить базу данных, я вижу только 0 баллов, что означает, что ничего не отправлено. Может кто-нибудь помочь мне в этом. Tq Вот моя кодировка для 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 ДЛЯ ОТПРАВКИ ДАННЫХ;

 <?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 ДЛЯ РЕТРИЕВЫХ ДАННЫХ;

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

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

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

Обновить:

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

 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-список баллов.