Adobe Flash Anleitung | PHP, MySQL, Actionscript / „Tischreservierung“

S

sevY

Hi,

in Flashforum.de hat jemand nach einer Lösung für das Verwalten einer Tischkarte und der Reservierungen für ein Restaurant gefragt.

Mit diesem Lösungansatz kann vielleicht der ein oder andere etwas anfangen.



Auf Flashdetection, Preloader, dynamisches Instanzieren habe ich jetzt mal verzichtet, da das ja jedem bekannt sein sollte… und dynamisch Instanzieren der TischInstanzen macht ja auch nicht unbedingt Sinn…

In der SWF sind 5 Tische, eine ComboBox mit freien Tischen, sowie ein Reservierungsbutton. Wenn das jetzt einige Testen, ist das Restaurant ruckzuck voll… daher zum Testen noch ein Reset All Button, der alles wieder zurücksetzt.
Um die Änderungen zu sehen, müsst ihr einfach refreshen… oder jemand bastelt in das Script eine Funktion, die alles reinitialisiert. Hatte ich grad keine Lust zu, ich hoffe es sei mir verziehen.

Ok, fangen wir mit dem MySQL Table an.

PHP:
//MySQL 4.0
CREATE TABLE `tablecheck` (
  `id` smallint(5) unsigned NOT NULL auto_increment,
  `timestamp` timestamp(14) NOT NULL,
  `tablenumber` smallint(3) unsigned NOT NULL default '0',
  `checked` tinyint(1) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `timestamp` (`timestamp`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;


INSERT INTO `tablecheck` VALUES (1, 20040909011238, 1, 0);
INSERT INTO `tablecheck` VALUES (2, 20040909011249, 2, 0);
INSERT INTO `tablecheck` VALUES (3, 20040909011258, 3, 0);
INSERT INTO `tablecheck` VALUES (4, 20040909011306, 4, 0);
INSERT INTO `tablecheck` VALUES (5, 20040909011317, 5, 0);

Die PHP, die das ganze ausliest, sieht so aus:

PHP:
<?php
require_once('config.inc.php');
$i=1;
$read=mysql_query("select * from $db_tab order by id asc",$handler);
while($a=mysql_fetch_array($read))
    {
    $result.='&id_'.$i.'='.$a['id'];
    $result.='&tablenumber_'.$i.'='.$a['tablenumber'];
    $result.='&checked_'.$i.'='.$a['checked'];
    $i++;
    }
$result.='&repeats='.$i;
echo utf8_encode($result);
?>

Die PHP Datei, die eine Reservierung vornimmt…

PHP:
<?php
require_once('config.inc.php');
mysql_db_query($db_dbase,"update $db_tab set checked='1' where id='$_POST[id]'");
?>

Zum Reset…

PHP:
<?php
require_once('config.inc.php');
mysql_db_query($db_dbase,"update $db_tab set checked='0' where checked='1'");
?>

Die Config mit dem Handler…

PHP:
<?php
$db_host='';
$db_login='';
$db_pass='';
$db_dbase='';
$handler=
mysql_connect($db_host,$db_login,$db_pass);
mysql_select_db($db_dbase,$handler);
$db_tab='tablecheck';
?>

Und das Actionscript steht komplett im ersten Frame und sieht wie folgt aus:

PHP:
//Actionscript 1.0
//Prototype zur einfacheren Farbvergabe
MovieClip.prototype.setColor=function(colour) 
	{
	newColor=new Color(this);
	newColor.setRGB(colour);
	};
	
//Reservierungen auslesen und verarbeiten
var check=function()
	{
	var checkRes=new LoadVars();
	checkRes.object=this;
	checkRes.load('query.php');
	checkRes.onLoad=function(success)
		{
		if(success)
			{	
			for(var i=1;i<this.repeats;i++)
				{
				var table=_root['t'+i];
				table.tablenr.text=this['tablenumber_'+i];
				if(this['checked_'+i]==1)
					{				
					table.setColor('0x9f9f9f');
					table.checked=true;
					}
				else
					{				
					_root.freetable.addItem(this['tablenumber_'+i],this['id_'+i]);				
					}
				}		
			delete this.object['checkRes'];
			}
		};
	};
	
//Reservieren
_root.res.onRelease=function()
	{
	var reservation=new LoadVars();
	reservation.object=this;
	reservation.id=_root.freetable.getSelectedItem().data;
	reservation.sendAndLoad('update.php',reservation,'POST');
	reservation.onLoad=function()
		{
		_root.message.text='Erfolgreich reserviert';
		delete this.object['reservation'];
		};
	};

//Reset All
_root.reset.onRelease=function()
	{
	var resetAll=new LoadVars();
	resetAll.object=this;
	resetAll.sendAndLoad('reset.php',resetAll,'POST');
	resetAll.onLoad=function()
		{
		_root.message.text='Database reseted';
		delete this.object['resetAll'];
		};
	};
check();
this.stop();


Nun… es ist zwar nicht objektorientiert gelöst und es könnten auch einige Callbacks usw. eingebaut werden…

Ansehen kann man sich das ab heute ca. 1 Woche unter

http://hosting.doulis.com/ff/tablecheck/check.html

Die Sources sind hier…

http://hosting.doulis.com/ff/tablecheck/tablecheck.zip

Wenn das jemand bei sich hosten könnte wäre nett, ich lade das gerade auf den Kundenserver der Agentur… und da gehört das eigentlich nicht hin :)



Liebe Grüße

Yves
 
Hosting

Hallo,

ich könnte das ganze es auf meinem eigener Hoster anbieten.

Bitte melde Dich bei interesse.

Gruss
 
Zurück
Oben Unten