使用PHP在AS3中创建链接

时间:2016-01-12 20:52:29

标签: php actionscript-3 flash air

我已经有了这段代码,可以将我的SQL数据库中的数据检索到我的AS3代码中。

我的表格(数据库)有以下行:" id"," title"," price"," information",& #34;邮件&#34 ;.

在我的AS3代码中,我加载了" title"。

Php代码:          

header('Content-type: application/json');
$ts = gmdate("D, d M Y H:i:s") . " GMT";
header("Expires: $ts");
header("Last-Modified: $ts");
header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate");


 $num = mysql_numrows($sql_result);
$phptheTitle = "";
$obj = array();

while ($row = mysql_fetch_array($sql_result)) {
 $theTitle = $row["theTitle"];
   $phptheTitle = $phptheTitle.' </br> '.$theTitle;
    $datas = array();
     $datas['theTitle'] = $row["theTitle"];
     $datas['prix'] = $row["prix"];
      $obj[] = $datas;
 } 

echo json_encode( array('products' => $obj) );

 mysql_free_result($sql_result);
 mysql_close($connection);

?>

AS3代码:

function categorieSelected(evt:Event):void {
                var urlReq:URLRequest = new URLRequest ("http://www.mywebsite.com/find_annonces.php");
                urlReq.method = URLRequestMethod.POST; 
                var urlVars:URLVariables = new URLVariables(); 
                urlReq.data = urlVars;  
                trace("typeSelected");
                urlVars.categorie = evt.target.value;
                trace(urlVars.categorie);
                varLoader2.load(urlReq);


    var loader:URLLoader = new URLLoader (urlReq); 
    loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
    loader.load(urlReq); 
            trace(urlReq);
    loader.addEventListener(Event.COMPLETE, loadComplete);
        }



function loadComplete(evt:Event):void {
    trace("loadComplete");
    var myResult:String = evt.target.data;
    trace(myResult);    
    output_txt.htmlText = myResult;
    var datas     :Object = JSON.parse( myResult );
    var products  :Array = datas && datas.products ? datas.products : [];


var len:int = products.length;
for( var i:int = 0; i<len; ++i ){
     trace( products[i].title, products[i].price );
}
}   

所以我的output_txt显示行中的所有项目&#34; title&#34;。

现在,是否可以为每个标题创建一个链接(在AS3中)? 为了显示&#34;价格&#34;,&#34;信息&#34;,&#34;邮件&#34;当我们点击标题时(每个标题都有自己的&#34;价格&#34;,&#34;信息&#34;和&#34; mail&#34;,包含在我的数据库中)。

例如: AS3代码显示&#34;计算机&#34;。当我点击&#34; ipod Touch&#34;它显示&#34;价格&#34;,&#34;信息&#34;和&#34;邮件&#34;包含在我的数据库中。

以下是我想做的简短视频:http://sendvid.com/whdm4sjf

修改

所以在Aaron的帮助下,代码工作得更好一些。

在我的AS3中,用户可以选择&#34;类别&#34;为了显示类别中包含的所有标题。

为此我已将此$categorie = $_POST['categorie'];放入PHP

这个代码在AS3中

var loader5:URLLoader = new URLLoader();
var varLoader2:URLLoader = new URLLoader;
varLoader2.dataFormat=URLLoaderDataFormat.VARIABLES;
varLoader2.addEventListener(Event.COMPLETE,completeHandler2);

        function categorieSelected(evt:Event):void {
                var urlReq:URLRequest = new URLRequest ("http://www.brousse-en-folie.com/sondage/convertXML.php");
                urlReq.method = URLRequestMethod.POST; 
                var urlVars:URLVariables = new URLVariables(); 
                urlReq.data = urlVars;  
                trace("typeSelected");
                urlVars.categorie = evt.target.value;
                varLoader2.load(urlReq);



loader5.load(new URLRequest("http://www.brousse-en-folie.com/sondage/convertXML.php"));
loader5.addEventListener(Event.COMPLETE, complete);

        }

但似乎有了JSON加载,存在冲突,我在函数categorieSelected

中遇到此错误
Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.

以下是该问题的简短视频:http://sendvid.com/18rr26rb

1 个答案:

答案 0 :(得分:1)

以下是我要做的事情的粗略概念:

  1. 将您的数据全部返回为XML或JSON。例如,您可以使用PHP json_encode将SQL结果作为JSON返回。

  2. 使用URLLoaderJSON.parse将JSON加载到AS3中。

  3. 现在您有一个Array数据可以迭代并显示列表项。

  4. 为每个将隐藏列表的显示列表项添加一个单击处理程序,并显示详细视图。

  5. 你可以通过多种方式完成这个,这里有一个简单的例子:

    <强> PHP

    $products = array();
    
    while ($row = mysql_fetch_array($sql_result)) {
        $products[] = array(
            "title" => $row["theTitle"],
            "price" => $row["thePrice"]
        );
    } 
    
    echo json_encode($products);
    

    哪个应输出有效的JSON:

    [
        {
            "title": "Product 1",
            "price": 100
        },
        {
            "title": "Product 2",
            "price": 200
        },
        {
            "title": "Product 3",
            "price": 300
        }
    ]
    

    <强> AS3

    加载JSON并将其渲染出来:

    var products:Array;
    
    var list:Sprite = new Sprite();
    addChild(list);
    
    var details:TextField = new TextField();
    addChild(details);
    
    var loader:URLLoader = new URLLoader();
    loader.load(new URLRequest("products.php"));
    loader.addEventListener(Event.COMPLETE, complete);
    
    function complete(e:Event):void {
        products = JSON.parse(loader.data) as Array;
    
        for(var i:int = 0; i < products.length; i++){
            createListItem(i, products[i]);
        }
    
        showList();
    }
    
    function createListItem(index:int, item:Object):void {
        var listItem:TextField = new TextField();
        listItem.text = item.title;
        listItem.y = index * 20;
        listItem.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
            showDetails(item);
        });
        list.addChild(listItem);
    }
    
    function showList():void {
        details.visible = false;
        list.visible = true;
    }
    
    function showDetails(item:Object):void {
        list.visible = false;
        details.visible = true;
    
        details.text = "Price: " + item.price + "\nInformation: " + item.information + "\nMail: " + item.mail;
    }
    

    这只是一个粗略的开始,可以给你一个想法。