Anleitung | Actionscript, PHP & MySQL, Dynamische Inhalte

Diskutiere mit über: Anleitung | Actionscript, PHP & MySQL, Dynamische Inhalte im Flash and Actionscript Forum

  1. sevY

    sevY Thread Starter Gast

    Hi zusammen,

    aufgrund der großen Nachfrage möchte ich hier ein kleines Beispiel veranschaulichen, wie man mittels Flash, PHP und MySQL Inhalte dynamisch auslesen kann und ebenfalls auch in MySQL einfügt.

    Als Beispiel dazu eine Shoutbox in Flash.


    Ich halte diese Beispiel bewusst sehr simpel und verzicht daher auf Kommentare, da diese Funktionen und Kompositionen selbstsprechend plakativ sein sollten.


    Zuerst muss die Datenbank, respektive der Table, erstellt werden.


    PHP:
    //SQL
    DROP TABLE IF EXISTS `words`;
    CREATE TABLE `words` (
      `
    idbigint(20unsigned NOT NULL auto_increment,
      `
    timevarchar(255NOT NULL default '',
      `
    wordstext NOT NULL,
      `
    providervarchar(255NOT NULL default '',
      `
    client_ipvarchar(255NOT NULL default '',
      `
    browservarchar(255NOT NULL default '',
      
    PRIMARY KEY  (`id`),
    TYPE=MyISAM AUTO_INCREMENT=;
    Provider, Client und Browser dienen dazu, später für jedes Posting die IP des Clients, Providergates und UserAgent mitzuloggen, falls jemand mal meint, irgendwelche Weltherrschaftsphantasien oder einen anderen geistigen Umnachtungszustand publizieren zu müssen. We'll watching you ;)

    Jetzt kommt die config.inc.php an die Reihe, in der wir der Einfachheit einen Handler definieren. Dazu müsst ihr hier entsprechend eure Daten anpassen.

    PHP:
    <?php
    $db_host
    ='localhost';
    $db_login='root';
    $db_pass='000001';
    $db_dbase='local';
    $handler=
    mysql_connect($db_host,$db_login,$db_pass);
    mysql_select_db($db_dbase,$handler);
    $db_tab='words';
    ?>

    Als nächstes brauchen wir noch eine function.inc.php, da alles, was wir aus MySQL für Actionscript auslesen, sofern es ein '&' enthält, dieses nach Hexcode konvertieren müssen.

    PHP:
    <?php
    class charReplace
        
    {
        function 
    replace($x)
            {
            
    $k1=array('&');
            
    $k2=array('%26');
            for (
    $i=0;$i<1;$i++)
                {
                
    $x=str_replace($k1[$i],$k2[$i],$x);
                }
            return 
    $x;
            }
        }
    ?>
    Nun die query.php, welche dafür zuständig ist, die Inhalte auszulesen.

    PHP:
    <?php
    require_once('config.inc.php');
    require_once(
    'function.inc.php');
    $read=mysql_query("select time,words from $db_tab order by id desc",$handler);
    while(
    $a=mysql_fetch_array($read))
        {
        
    $result.='<b>'.$a['time'].'</b> '.charReplace::replace(utf8_encode($a['words'])).'<br>';
        }
    echo 
    '&words='.$result;
    ?>
    Wichtig ist hierbei, stets die ausgelesenen Inhalte nach UTF-8 Unicode zu konvertieren, da Flash intern mit dieser Codierung arbeitet. Variablen werden, sofern man nicht mit XML arbeitet, in der Form &Varname=Wert definiert bzw. übergeben.

    Jetzt die PHP Datei, welche die Inhalte einfügt.

    PHP:
    <?php
    require_once('config.inc.php');
    $time=date('d.m.Y H:i:s');
    $words=utf8_decode($_POST['input']);
    $provider=getHostByAddr($_SERVER['REMOTE_ADDR']);
    $client_ip=$_SERVER['REMOTE_ADDR'];
    $browser=$_SERVER['HTTP_USER_AGENT'];
    mysql_db_query($db_dbase,"insert into $db_tab (time,words,provider,client_ip,browser) VALUES ('$time','$words','$provider','$client_ip','$browser')");
    ?>
    Wie ihr an dieser Stelle merkt, laufen die wichtigsten Funktionen in PHP ab. PHP dient also als „Bridge“ zu MySQL.


    Hier nun die HTML Datei, in der wir die swf einbetten. Informationen zur Flashdetection, die hier angewendet wird, findet ihr im 2 Posting dieses Threads oder in entsprechenden Thread hier im Flash/Actionscript Forum.

    PHP:
    <html>
    <
    head>
    <
    meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
    <
    meta http-equiv="expires" content="7">
    <
    meta name="description" content="">
    <
    meta name="keywords"lang="de" content="">
    <
    meta name="robots" content="all">
    <
    meta name="revisit-after" content="7 days">
    <
    title>Words</title>
    <
    script language="javascript" type="text/javascript" src="function.inc.js"></script>
    <link rel="stylesheet" type="text/css" href="default.css">
    </head>
    <body>
    <table width="100%" height="100%">
        <tr>
            <td align="center" valign="middle">
                <table>
                    <tr>
                        <td>
                           <script language="javascript" type="text/javascript">               
                                if(hasRightVersion)
                                    {
                                    var oeTags='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
                                    + 'width="663" height="507"'
                                    + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'
                                    + '<param name="movie" value="words.swf">'
                                    + '<param name="play" value="true">'
                                    + '<param name="loop" value="false">'
                                    + '<param name="quality" value="best">'
                                    + '<param name="menu" value="false">'
                                    + '<embed src="words.swf"'
                                    + 'width="663" height="507"'
                                    + 'play="true"'
                                    + 'loop="false"'
                                    + 'quality="best"'
                                    + 'menu="false"'
                                    + 'type="application/x-shockwave-flash"'
                                    + 'pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">'
                                    + '<\/embed>'
                                    + '<\/object>';
                                    document.write(oeTags);
                                    }
                                else
                                    {
                                    var alternateContent='You need Macromedia Flash to view this site.';
                                    document.write(alternateContent);
                                    }
                            </script>
                            <noscript>
                                You need to activate Javascript to view this site.
                            </noscript>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
    </body>
    </html>

    Ok, und nun das sagenumwobene Actionscript.
    Ich verzichte hier auf „CallBack Funktionen“ um zu prüfen, ob das PHP/MySQL Duo seinen Job vernünftig gemacht hat.

    PHP:
    //Actionscript 1.0
    MovieClip.prototype.sender=function()
        {
        var 
    sender=new LoadVars();
        
    sender.object=this;
        
    sender.input=_root.input_field.text;
        
    sender.sendAndLoad('insert.php',sender,'post');
        
    sender.onLoad=function()
            {
            
    _root.input_field.text='';
            
    loader();
            
    delete this.object[sender];
            }
        }
          
    MovieClip.prototype.loader=function()
        {
        var 
    words=new LoadVars();
        
    words.object=this;
        
    words.load('query.php');
        
    words.onLoad=function()
            {
            
    _root.words.htmltext=this.words.split('\r\n').join('\r');
            
    delete this.object['words'];
            };
        };
      
    _root.sendClip.onRelease=function()
        {
        
    sender();
        }
      
    _root.loaderClip.onRelease=function()
        {
        
    loader();
        }
      
      
    _root.loader();
    this.stop();
    Split & Join, da ansonsten Zeilenumbrüche doppelt dargestellt werden.

    textfield.htmltext weist einen HTML formatierten Text dem Textfeld zu, da ansonsten die in der query.php konkatenierten HTML Tags nicht interpretiert werden.

    Liebe Grüße

    Yves
     
    Zuletzt von einem Moderator bearbeitet: 02.10.2016
  2. sevY

    sevY Thread Starter Gast

    Flashdetection in der function.inc.js

    PHP:
    //Javascript 1.0
    var requiredVersion=6;
    var 
    useRedirect=false;
    var 
    flash2Installed=false;
    var 
    flash3Installed=false;
    var 
    flash4Installed=false;
    var 
    flash5Installed=false;
    var 
    flash6Installed=false;
    var 
    flash7Installed=false;
    var 
    flash8Installed=false;
    var 
    flash9Installed=false;
    var 
    maxVersion=9;
    var 
    actualVersion=0;
    var 
    hasRightVersion=false;
    var 
    jsVersion=1.0;            
    var 
    isIE=(navigator.appVersion.indexOf("MSIE") != -1) ? true false;
    var 
    isWin=(navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true false;
    jsVersion=1.1;
    if(
    isIE && isWin)
        {
        
    document.write('<scr' 'ipt language=VBScript\> \n');
        
    document.write('on error resume next \n');
        
    document.write('flash2Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.2"))) \n');
        
    document.write('flash3Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.3"))) \n');
        
    document.write('flash4Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.4"))) \n');
        
    document.write('flash5Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) \n');  
        
    document.write('flash6Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6"))) \n');  
        
    document.write('flash7Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.7"))) \n');
        
    document.write('flash8Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.8"))) \n');
        
    document.write('flash9Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.9"))) \n');
        
    document.write('<\/scr' 'ipt\> \n');
        }
    function 
    detectFlash() 
        {  
        if (
    navigator.plugins
            {
            if (
    navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) 
                {
                var 
    isVersion2=navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" "";
                var 
    flashDescription=navigator.plugins["Shockwave Flash" isVersion2].description;
                var 
    flashVersion=parseInt(flashDescription.substring(16));
                
    flash2Installed=flashVersion == 2;    
                
    flash3Installed=flashVersion == 3;
                
    flash4Installed=flashVersion == 4;
                
    flash5Installed=flashVersion == 5;
                
    flash6Installed=flashVersion == 6;
                
    flash7Installed=flashVersion == 7;
                
    flash8Installed=flashVersion == 8;
                
    flash9Installed=flashVersion >= 9;
                }
            }
        for (var 
    i=2<= maxVersioni++) 
            {  
            if (eval(
    "flash" "Installed") == trueactualVersion=i;
            }
        if(
    navigator.userAgent.indexOf("WebTV") != -1actualVersion=4;  
        if (
    actualVersion >= requiredVersion
            {
            
    hasRightVersion=true;                
            } 
        else 
            {  
            
    hasRightVersion=false;
            }
        }
    detectFlash();
    (Thanks to Colin Moock!)
     
  3. starbuxx

    starbuxx MacUser Mitglied

    Beiträge:
    1.442
    Zustimmungen:
    8
    Registriert seit:
    13.04.2003
    Gudes Ding,

    Thx, Yves!

    sbx
     
Die Seite wird geladen...
Ähnliche Themen - Anleitung Actionscript PHP Forum Datum
Mac - Flash-CS4 - ActionScript 2 - mailto Flash and Actionscript 19.03.2010

Diese Seite empfehlen

Benutzerdefinierte Suche