Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как связать As3 c MySQL через PHP. (http://www.flasher.ru/forum/showthread.php?t=207154)

mariamarfi 27.03.2014 13:31

Как связать As3 c MySQL через PHP.
 
Как отобразить таблицу из БД MySQL во флэш? если понадобятся компоненты List, DataGrid

PHP код:

<?php
//////Connect to MySQL//////
mysql_connect("localhost""root""") or die (mysql_error()); //Открывает соединение с сервером MySQL
mysql_select_db("mybd_guestbook") or die (mysql_error()); //Выбирает базу данных MySQL
mysql_query("SET NAMES 'utf8'"); //Посылает запрос MySQL


////////////////////////////// Для компонента TextArea

if ($_POST['comType']=="requestEntries")
{
    
$body ="";
    
$sql mysql_query("SELECT * FROM table_guestbook ORDER BY post_date DESC");
    while (
$row mysql_fetch_array($sql))
    {
        
$id $row["id"];
        
$name $row["name"];
        
$post_date $row["post_date"];
        
$comment $row["comment"];
        
$location $row["location"];
        
$comment stripslashes($comment);
/////////////////Decode HTML entries if storing comments that preserve line breaks and such //$n_post_body = html_entry_decode($n_post_body);//Uncomment to use    
        
$post_date strftime("%b %d, %y"strtotime ($post_date));
        
        
$body .='<b><font face="Arial" size="12" color = "#57114D">' .  $name  '</font> | <font face="Arial" size="12" color = "#330066">' .$location  .'</font> | <font face="Arial" size="12" color = "#9B9B9B">' .  $post_date  .'</font><br/><font face="Arial" size="15">'.$comment.'</font><br/><br/>';
    }
    
mysql_free_result($sql);
    
mysql_close();    
    echo 
"returnBody=$body";
    exit();
}
//////////////////// Для компонента List 

    
while ($row2 mysql_fetch_array($result))
    {
        
$id $row2["id"];
        
$name $row2["name"];
    }
    
mysql_free_result($result);
    
mysql_close();
        
    echo 
"Id_MySQL=$id";
    echo 
"Name_MySQL=$name";
    exit();
?>

AS3 1 слой для компонента TextArea (GostBook):

Код AS3:

import flash.net.URLVariables;
import flash.net.URLRequest;
import flash.net.URLLoader;
 
var variables_re: URLVariables = new URLVariables();
 
var Send_re: URLRequest = new URLRequest("RLTable.php");
Send_re.method = URLRequestMethod.POST;
Send_re.data = variables_re;
 
var Loader_re: URLLoader = new URLLoader;
Loader_re.dataFormat = URLLoaderDataFormat.VARIABLES;
Loader_re.addEventListener(Event.COMPLETE, completeHandler_re);
 
function completeHandler_re(event:Event): void
{
        if (event.target.data.returnBody == "")
        {
                gbOutput_txt.text = "No data coming through";
        }
        else
        {
                gbOutput_txt.condenseWhite = true;
                gbOutput_txt.htmlText = "" + event.target.data.returnBody;
        }
}
 
variables_re.comType = "requestEntries";
Loader_re.load(Send_re);


AS3 2 слой для компонента DataGrid:

Код AS3:

import fl.controls.DataGrid;
 
/*
var myTextFormat:TextFormat = new TextFormat();
myTextFormat.font = "Comic Sans MS";
myTextFormat.color = 0x666666;
myTextFormat.size = 14;
*/

 
var TId: String;
var TName: String;
 
TTd.htmlText = event.target.data.Id_MySQL
TTd.condenseWhite = true;
 
TName.htmlText = event.target.data.Name_MySQL
TName.condenseWhite = true;
 
var item:Object = { TId, TName };
 
 
var datagrid:DataGrid = new DataGrid;
datagrid.move(50, 100);
datagrid.width = 480;
datagrid.height = 130;
datagrid.rowHeight = 35;
datagrid.columns = ["Id", "Name"];
datagrid.columns[0].width = 120;
datagrid.columns[1].width = 70;
datagrid.resizableColumns = true;
//datagrid.setRendererStyle("textFormat", myTextFormat);
datagrid.addItem(item);
 
 
addChild(datagrid);
/*
datagrid.addEventListener(Event.CHANGE, gridItemClick);
 
function gridItemClick (event:Event):void {
 
        task_txt.text = "Id:" + event.target.selectedItem.Id + "\n";
        task_txt.text = "Name:" + event.target.selectedItem.Name + "\n");
 
 
}



AS3 3 слой для компонента List:

Код AS3:

import flash.net.URLRequest;
import flash.net.URLLoader;
 
stop();
 
var myFormat:TextFormat = new TextFormat();
myFormat.color = "0x00026D";
 
list.setRendererStyle("textFormat", myFormat);
 
//////////////////////////////////////////////////////////////////////////////////////////////////
 
var i:uint;
var TName: String;
TName.htmlText = event.target.data.Name_MySQL;
TName.condenseWhite = true;
 
var myPHP:URLRequest = new URLRequest("RLTable.php");
var myLoader: URLLoader = new URLLoader(myPHP);
myLoader.addEventListener("complete", phpLoaded);
 
 
function phpLoaded(event:Event):void
{
 
                        i++;
                        list.addItem( { label: i+". " + TName, songNum: i } );
 
                var myArray = new Array (0,0);
        list.selectedIndices = myArray;
 
 
}


PainKiller 28.03.2014 11:19

Я честно говоря не понял с чем именно у вас проблема, советую разбить задачу на 3 этапа:
1. Напишите сервер, убедитесь что сервер возвращает то, что вам нужно, запрашивайте его из браузера по url - вы должны увидеть нужные вам данные (неважно текст это, JSON или XML). Ваш скрипт я не тестил, но по беглому взгляду создалось впечатление что он не рабочий, в смысле не возвращает нужные данные.
2. Убедитесь что вы правильно принимаете данные во флешке (трейсите запрашиваемый ответ от сервера). Пока запроса на сервер в вашем коде я тоже не увидел (только для TextArea, и то не уверен что по этому адресу вы что то получаете).
3. Вот уже после этого попробуйте запихнуть эти данные в визуальный компонент.

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

Marlin 28.03.2014 12:59

Код AS3:

URLRequest("RLTable.php");

используйте абсолютный путь, и для начала нужно или запустить сервак локально, или иметь таковой в интернете, если таковой есть, то бейте задачу на максимальное количество частей, и решайте поочереди. Трейсите на каждом этапе, если где-то затуп - пишите.

Babylon 28.03.2014 21:17

Если понадобятся компоненты List, DataGrid? У соответствующих компонент есть датапровайдеры которые принимают данные от сервера в соответствующем сервисном обработчике.


Часовой пояс GMT +4, время: 22:54.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.