Lente 02 | Flash <> PHP

sendAndLoad

Stap 1

Flash

Allereerst een voorbeeld waarbij sendAndLoad alleen gebruikt wordt om data te verzenden naar een PHP-pagina. Op de Stage staan alleen een button met de instancename: knop en een input textfield met de instancename: inputData.
De sendAndLoad functie verwijst normaliter naar het object dat de data opvangt vanuit PHP. Voor nu verwijst het naar het object met de data die verzonden wordt.
	function naarTxt() {
		stuurData = new LoadVars();
		stuurData.waarde = inputData.text;
		stuurData.sendAndLoad("http://localhost/site/txtschrijven.php", stuurData, "POST");
	};
	
	knop.onRelease = function() {
		naarTxt();
	};

PHP

De PHP die gebruikt wordt, schrijft in een txt-bestand. In dit geval wordt de variabele die in de swf ingevoerd wordt, opgeslagen in een bestaand txt-bestand.
Er moet dus een leeg txt-bestand met de naam: "FlashVars.txt" aanwezig zijn in de map waar ook het PHP-bestand: "txtschrijven.php" staat.

	<?php
	$vanFlash = $_POST['waarde'];
	$lezenSchrijven = fopen("FlashVars.txt","r+"); 
	$txtSchrijven = fwrite($lezenSchrijven,"&naam=$vanFlash "); 
	fclose($lezenSchrijven);  
	?>


Stap 2

Als stap1 werkt, gaan we kijken hoe sendAndLoad gebruikt wordt om ook weer data vanuit PHP op te vangen in Flash. Om dit te doen is er een ander object nodig dat de variabelen opvangt van uit PHP. Het LoadVars object "responce" in dit geval. De volgende data worden geladen vanuit PHP: de status van de actie (gelukt of niet), het aantal variabelen die er ingevoerd zijn en de ingevoerde variabele zelf.
Hier zie je hoe het ActionScript is uitgebreid met een extra LoadVars object en een extra functie die de geladen variabelen gebruikt.

	function naarTxt() {
		stuurData = new LoadVars();
		stuurData.waarde = inputData.text;
		stuurData.aantal = nummer;
		respons = new LoadVars();
		respons.onLoad = vanPhp;
		stuurData.sendAndLoad("http://localhost/site/txtschrijven.php", respons, "POST");
	};
	 
	function vanPhp(succes) {
		if (succes) {
			responseTxt.text = respons.variabele;
		 	statusTxt.text = respons.staat;
 		 	nummer = respons.aantal;
		} else {
			trace("alles gaat mis!!!");
		}
	};
	
	knop.onRelease = function() {
		nummerTxt.text = "de waarde van var"+(int(respons.aantal)+int(1))+" = ";
	naarTxt();
	};
In het PHPscript moet iedere variabele die nodig is binnen Flash d.m.v. de print functie 'vertaald' worden naar een Flash variable ($=&). Maar ook andersom d.m.v. $_POST[''], de Flash variable omzetten naar een PHP variable.
Zie hoe middels if-else constructies eventuele fouten worden opgevangen.
	<?php
	$vanFlash = $_POST['waarde'];
	$aantal = $_POST['aantal']; 
	$lezenSchrijven = fopen("FlashVars.txt","r+"); 
	if($lezenSchrijven){ 
		$achteraan = fseek($lezenSchrijven,0,SEEK_END); 
		$aantal=$aantal+1; 
		print("&aantal=$aantal"); 
		$txtSchrijven = fwrite($lezenSchrijven,"&var$aantal=$vanFlash "); 
		if($txtSchrijven){ 
			$staat = "txt-bestand schrijven is gelukt!"; 
			print("&staat=$staat"); 
		}else{ 
			$staat = "txt-bestand schrijven is mislukt!"; 
			print("&staat=$staat"); 
		}; 
	fclose($lezenSchrijven); 
	}else{ 
			print("txt-bestand openen is mislukt!"); 
	}; 
	print("&variabele=$vanFlash"); 
	?>

Iedere PHPfunctie is op te zoeken op PHP.net.

 

Auteur: Barend Hendriks
Seizoen: Lente
Lesnummer: 02
Datum:28-02-2006
Type les: MME 2e