<div id="tutorialrahmen"> Was wird gemacht?: ...
Zielgruppe: ...
Dauer: ca. xx Minuten </div>

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.

 //SQL 
 DROP TABLE IF EXISTS `words`; 
 CREATE TABLE `words` ( 
   `id` bigint(20) unsigned NOT NULL auto_increment, 
   `time` varchar(255) NOT NULL default '', 
   `words` text NOT NULL, 
   `provider` varchar(255) NOT NULL default '', 
   `client_ip` varchar(255) NOT NULL default '', 
   `browser` varchar(255) NOT NULL default '', 
   PRIMARY KEY  (`id`), 
 ) TYPE=MyISAM AUTO_INCREMENT=1 ; 

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 
 $db_host='localhost'; 
 $db_login='root'; 
 $db_pass='000001'; 
 $db_dbase='local'; 
 $handler= 
 mysql_connect($db_host,$db_login,$db_pas  s); 
 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 
 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 
 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'])).'
'; } 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 
 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_i  p','$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.

 <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.

 //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.

words.zip

1.  Flashdetection in der function.inc.js

 //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=(IsObjec  t(CreateObject("ShockwaveFlash.ShockwaveFlash.2"))) \n'); 
     document.write('flash3Installed=(IsObjec  t(CreateObject("ShockwaveFlash.ShockwaveFlash.3"))) \n'); 
     document.write('flash4Installed=(IsObjec  t(CreateObject("ShockwaveFlash.ShockwaveFlash.4"))) \n'); 
     document.write('flash5Installed=(IsObjec  t(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) \n');   
     document.write('flash6Installed=(IsObjec  t(CreateObject("ShockwaveFlash.ShockwaveFlash.6"))) \n');   
     document.write('flash7Installed=(IsObjec  t(CreateObject("ShockwaveFlash.ShockwaveFlash.7"))) \n'); 
     document.write('flash8Installed=(IsObjec  t(CreateObject("ShockwaveFlash.ShockwaveFlash.8"))) \n'); 
     document.write('flash9Installed=(IsObjec  t(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.s  ubstring(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; i <= maxVersion; i++) 
         {   
         if (eval("flash" + i + "Installed") == true) actualVersion=i; 
         } 
     if(navigator.userAgent.indexOf("WebTV") != -1) actualVersion=4;   
     if (actualVersion >= requiredVersion) 
         { 
         hasRightVersion=true;                 
         } 
     else 
         {   
         hasRightVersion=false; 
         } 
     } 
 detectFlash(); 

FooterBadgetsFct('Diskussion') FooterBadgetsFct('Rezension')

Zuletzt geändert am 28.05.2012 10:36 Uhr von kt007 (1 Besuche)

© 2004 – 2018 ApfelWiki

Impressum - Datenschutz

cb