+ Rispondi alla Discussione
Risultati da 1 a 1 di 1

[2.0]Flex Guestbook con AMFPHP 1.9

Ultimo Messaggio di GreyFox il:
  1. #1
    User
    Data Registrazione
    Feb 2008
    Messaggi
    92

    [2.0]Flex Guestbook con AMFPHP 1.9

    Questo un piccolo esempio sul funzionamento delle librerie amfphp 1.9...il codice chiaro e per qualsiasi probleema sono a disposizione...
    Quest'esempio lo avevo gia postato su infernet...ma magari puo tornare utile a qualcuno...


    l'esempio si trova qui:

    Codice:
    ***************
    o qui:
    Codice:
    ***************
    un semplice GuestBook creato con amfphp per l'interazione tra l'as3 e il php...

    E ora per chi fosse interessato posto i sorgenti:

    la pagina php avr il seguente codice:

    Codice PHP:
     <?

    class Fgb{

    //lettura db
    function getMsgs(){
    $fd='<dati>';

    if(!
    $dbc=mysql_connect('xxx','xxx','xxx')){return 'SqlError: '.mysql_error();}

    if(!
    mysql_select_db('myDB',$dbc)){return 'Database not found.';}

    if(!
    $res=mysql_query('SELECT * FROM tabella')){return 'Error: '.mysql_error();}

    $i=0;
    while(
    $rst=mysql_fetch_array($res)){
    $fd.='<ogg><nid>'.$rst[ID].'</nid><author>'.$rst[author].'</author>
    <imgurl>'
    .$rst[imgurl].'</imgurl><msg>'.$rst[msg].'</msg></ogg>';
    $i++;
    }

    $fd.='<nm>'.$i.'</nm></dati>';

    mysql_free_result($res);
    mysql_close($dbc);

    return 
    $fd;

    }
    //aggiunta post
    function addMsg($au,$im,$ms){
    if(!
    $dbc2=mysql_connect('xxx,'xxx','xxx)){return 'SqlError: '.mysql_error();}

    if(!
    mysql_select_db('myDB',$dbc2)){return 'Database not found.';}

    $q=sprintf("INSERT INTO tabella VALUES('',%s,%s,%s)",$this->quote_smart((string)$au),
    $this->quote_smart((string)$im),
    $this->quote_smart((string)$ms));

    $rs=mysql_query($q);
    mysql_close($dbc2);

    return 
    $rs;
    }

    //funzione Da Adobe
    function quote_smart($value)
    {

    if (
    get_magic_quotes_gpc()) {
    $value stripslashes($value);
    }

    if (!
    is_numeric($value)) {
    $value "'" mysql_real_escape_string($value) . "'";
    }
    return 
    $value;
    }
    }

    ?>
    codice semplice non occorrono spiegazioni...

    la parte in flex:
    root
    |
    |__ FxGuestbook.mxml (applicazione principale!)
    |__ comps(folder & package)
    |__ backgr.mxml (componente dinamico)
    |__ record.mxml (componente includente il messaggio)
    |__ gstyle.css (foglio di stile);
    |__ services-config.xml (configurazione amf);

    FxGuesbook.mxml:

    Codice:
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="adobe.com/2006/mxml" layout="absolute" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#2b2d39, #455574]">
    <mx:Script>
    <![CDATA[
        import mx.rpc.events.ResultEvent;
        import mx.events.CloseEvent;
        import comps.backgr;
        import mx.containers.TitleWindow;
        import comps.*;
        import mx.managers.PopUpManager;
    public var flag:Boolean=true;
    
    public function showHide(f:Boolean):void{
    switch(f){
    case true:
    show();
    break;
    case false:
    hide();
    break;
    }
    }
    
    public var g:backgr=new backgr();
    public function show():void{
    g.showCloseButton=true;
    PopUpManager.addPopUp(g,this);
    PopUpManager.centerPopUp(g);
    
    pls.label='Hide GuestBook';
    g.addEventListener(CloseEvent.CLOSE,onClose);
    function onClose():void{
    PopUpManager.removePopUp(g);
    flag=true;
    pls.label='Show GuestBook';
    }
    }
    public function hide():void{
    PopUpManager.removePopUp(g);
    pls.label='Show GuestBook';
    }
    
    public function newPost():void{
    if(flag){showHide(true);}
    g.resizee(1);
    }
    ]]>
    </mx:Script>
    <mx:Style source="gstyle.css"/>
    <mx:HBox creationComplete="showHide(flag);flag=!flag">
    <mx:Button id="pls" click="showHide(flag);flag=!flag;" 
    width="128"/>
    <mx:Button id="newp" label="New post" click="newPost();"/>
    </mx:HBox>
    </mx:Application>
    backgr.mxml:

    Codice:
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:TitleWindow xmlns:mx="adobe.com/2006/mxml" layout="absolute"  xmlns:comps="comps.*" height="554">
        <mx:title><![CDATA[Flex GuestBook v 0.1                                                                                                       by GreyFox]]></mx:title>
    <mx:Script>
    <![CDATA[
    import mx.rpc.events.ResultEvent;
    import comps.*;
    import mx.controls.Alert;
    
    public function showResult(ev:ResultEvent):void{
    var el:XML=new XML(ev.result);
    
    var g:Boolean=true;
    desk.removeAllChildren();
    for(var i:Number=0;i<Number(el.nm);i++){
    
    var ob:record=new record()
    desk.addChildAt(ob,0);    
    
    ob.cImg(String(el.ogg[i].imgurl));
    ob.nome.text=String(el.ogg[i].author);
    ob.msg.text=String(el.ogg[i].msg);
    
    if(g){ob.setStyle('backgroundColor',0x7f7f7f);}else
    {ob.setStyle('backgroundColor',0x000000);}
    g=!g;
    }
    }
    
    
    public function npost():void{
    if(nm.text.length>=1 && iu.text.length>=1 && ms.text.length>=1){
    bridge.addMsg(nm.text,iu.text,ms.text);
    }else{Alert.show('Please type all the fields!');}
    }
    
    public function addedmsg(e:ResultEvent):void{
    if(Boolean(e.result)){Alert.show('Message saved!')}else{Alert.show('Error saving yuor message!')}
    bridge.getMsgs();
    resizee(0);
    }
    
    public function resizee(r:Number):void{
    var t:Array=new Array(desk,bbar);
    switch(r){
    case 1:
    desk.verticalScrollPolicy='off';
    rbox.widthTo=0;
    rbox.play(t);
    rbox.widthTo=565;
    rbox.target=newpost;
    rbox.play();
    break;
    case 0:
    desk.verticalScrollPolicy='on';
    rbox.widthTo=565;
    rbox.play(t);
    rbox.widthTo=0;
    rbox.target=newpost;
    rbox.play();
    break;
    }
    }
    ]]>
    </mx:Script>
    
    <mx:RemoteObject id="bridge" concurrency="last" 
    source="<source>" destination="amfphp" showBusyCursor="true"
                     fault="Alert.show(event.fault.faultDetail.toString());">
    <mx:method name="getMsgs" result="showResult(event);"/>
    <mx:method name="addMsg"  result="addedmsg(event);"/>
    </mx:RemoteObject>
    
    <mx:Resize id="rbox" duration="2000"/>
    
    <mx:HBox horizontalGap="0" width="565">
    <mx:VBox verticalGap="0">
    <mx:VBox id="desk" creationComplete="bridge.getOperation('getMsgs').send()"  
    height="506" width="565" horizontalScrollPolicy="off" verticalScrollPolicy="on">
    </mx:VBox>
    <mx:HBox id="bbar" width="565" backgroundAlpha="0.8" backgroundColor="#000000">
    <mx:Button label="Add New Message" click="resizee(1);"/>
    </mx:HBox>
    </mx:VBox>
    
    <mx:VBox id="newpost" height="506" width="0" horizontalScrollPolicy="off" >
    <mx:Label text="Please type all the fields" fontWeight="bold" fontSize="12"/>
    <mx:HBox><mx:Label text="Name:"/><mx:Spacer width="16"/><mx:TextInput id="nm"/></mx:HBox>
    <mx:HBox><mx:Label text="Image Url:"/><mx:TextInput id="iu"/></mx:HBox>
    <mx:VBox><mx:Label text="Meggage:"/><mx:TextArea id="ms" width="532" height="154" verticalScrollPolicy="on"/></mx:VBox>
    <mx:HBox>
    <mx:Button label="OK" click="npost();"/>
    <mx:Button label="Clear" click="nm.text='';iu.text='';ms.text='';"/>
    <mx:Button label="Return to the posts" click="resizee(0);"/>
    </mx:HBox>
    </mx:VBox>
    </mx:HBox>
    </mx:TitleWindow>
    record.mxml:

    Codice:
    <?xml version="1.0" encoding="utf-8"?>
    <mx:HBox xmlns:mx="adobe.com/2006/mxml" 
    width="548" height="122" backgroundAlpha="0.53">
    <mx:Script>
    <![CDATA[
    public function cImg(m:String):void{
    img.load(m);
    }
    ]]>
    </mx:Script>
    
    <mx:VBox width="106" height="122" horizontalAlign="center" verticalAlign="middle" verticalGap="2">
        <mx:Box borderStyle="solid" borderColor="#2d96ff">
        <mx:Image id="img" source="@Embed(source='../Sagoma.gif')" width="67" height="74"/>
        </mx:Box>
        <mx:Label id="nome" color="#a6bbdd"/>
    </mx:VBox>
    <mx:VBox>
        <mx:Spacer height="4"/>
        <mx:TextArea id="msg" width="429" height="104"  verticalScrollPolicy="auto" maxChars="500" editable="false"/>
    </mx:VBox>
        
    </mx:HBox>
    gstyle.css:

    Codice:
    Application{
    backgroundImage:'./sfondo.jpg';
    }
    TitleWindow{
    borderThicknessBottom:2;
    borderThicknessLeft:2;
    borderThicknessRight:2;
    paddingLeft:0;
    paddingBottom:0;
    paddingRight:0;
    paddingTop:0;
    headerHeight:22; 
    borderThicknessTop:2;
    backgroundColor:#000000;
    backgroundAlpha:.6;
    cornerRadius:6;
    verticalAlign:top;
    headerColors:#a9afbc, #30353f;
    borderAlpha:1;
    highlightAlphas:.2,.1;
    borderColor:#30353f;
    color:#ceccd2;
    }
    
    Label{
    color:#62b0ff;
    fontFamily:Verdana;
    }
    TextInput{
    color:#62b0ff;
    fontFamily:Verdana;
    backgroundColor:#000000;
    borderColor:#3e9eff;
    backgroundAlpha:0.6;
    }
    TextArea{
    color:#62b0ff;
    fontFamily:Verdana;
    backgroundColor:#000000;
    borderColor:#3e9eff;
    backgroundAlpha:0.6;
    }
    
    Button{
    cornerRadius:0;
    fillColors:#a9afbc, #30353f;
    highlightAlphas:.2,.2;
    fillAlphas:1.0, 1.0;
    color:#1d2332;
    alpha:.8;
    }
    services-config.xml:

    Codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <services-config>
        <services>
            <service id="amfphp-flashremoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
                <destination id="amfphp">
                    <channels>
                        <channel ref="my-amfphp"/>
                    </channels>
                    <properties>
                        <source>*</source>
                    </properties>
                </destination>
            </service>
        </services>
        <channels>
            <channel-definition id="my-amfphp" class="mx.messaging.channels.AMFChannel">
                <endpoint uri="<indirizzo gateway>" class="flex.messaging.endpoints.AMFEndpoint"/>
            </channel-definition>
        </channels>
    </services-config>
    Per qualsiasi chiarimento non esitate a postare o a chiedere!!

    PS per usare amfphp dovete scaricare la cartella contenente le librerie da sourceforge e metterla sul vostro dominio poi compilare il .swf con il parametro:

    Codice:

    -services "services-config.xml"



    ah se non funziona l'esempio perch avrete
    superato il limite di queries sul database standard di altervista...
    provate l'ora successiva!!!
    e se c' qualche problema con gli url di destinazione negli mxml per il fatto che ho dovuto troncarli perche non sono utente premium' ...

    spero possa interessare a qualcuno ciao
    Ultima modifica di Onsitus; 04-02-08 alle 18:28 Motivo: no autopromozione

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] Attivato
  • Il codice [VIDEO] Attivato
  • Il codice HTML Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.