On 21-Jun-2003 Jay Fitzgerald wrote: > I am writing a php event registration system for lanparties and I believe > I have everything written that I need except for a seating selection > chart.
<snip> > As a person goes through the event registration system, they will come to > a > page that displays 8 rows of 30 seats (240 seats total)...but in the > future > I would like to have admin capability to increase or decrease this > amount. <snip> > Then when the next person decides to register, when they get to that > page, one less seat will be available. I would like to have as much > control as possible and I do know a minor bit of php and mysql. > > Any help or guidance is appreciated. > <programmer doodle> Couple of thoughts ... Each 'event' is unique to time and place. So you'll need a 'event' table with datetime, interval, name, description and a place (or 'forum' --see next paragraph). table event ( id int unsigned auto_inc primary key, idforum int unsigned, ebeg datetime not null, // begins eend datetime not null default '0', // ends emin int unsignd default 0, // how long in minutes name varchar(64), descript text, index idx_b (ebeg), // might be handy ... index idx_f (idforum) ) Each place is (usually) limited to hosting one 'event' at any interval. But some places can have several events at the same time. Consider a major hotel and all the conference rooms --or a sports stadium with all the owner, boxholder's, home-team, & visting-team parties ... So 'place' is a poor term. I'll suggest using 'forum' as the locale to be to attend a particular event. Also you'll have to think about assigned seating and/or general admission seating. Example: At the downtown Hilton, the local Lions club might reserve the "Omega" room w/ 5 seats per 4 tables, general admission. But a dinner with President Bush in the "Omega" room is gonna run like 6 seats @ 40 tables. And definitely assigned seating. Same room name but clearly a different 'forum'. It's a toss-up if this should be a field in the 'event' or in the 'forum' table. I go with forum. So there's another table: table forum ( id int unsigned auto_inc primary, name varchar(16), descript text, ftype enum('A', 'G'), // assigned or general seating m_block int unsigned not null, // max # of seating blocks m_seats int unsigned not null, // seats per block block_type enum('row','table','section') not null default 'row', // what does m_block encompass? seat_limit int unsigned not null default 0, // maximum seats (m_block * m_seats where ftype='A') unique index (name) ) Then there is seating. When each event/forum is scheduled your app adds m_block * m_seats to a seating table. For general admission add block=x, seat=1 -> seat_limit. --- The 'seating' table is where it gets tricky --and where it gets solved. table seating ( idforum int unsigned not null, // link to forum description. block int unsigned not null, // a dinner table or stadium row seat int unsigned not null, // d'oh guest int unsigned not null default 0, // who has this seat ? primary key (idforum, block, seat), INDEX idx_g (guest) // handy stuff. ) Assigned seating: As each guest reserves a [optional] seat: "UPDATE seating SET guest='$idguest' WHERE idforum='$idforum' AND block='$idblock' [AND seat='$idseat'] AND guest=0" General admission: "UPDATE seating SET guest='$idguest' WHERE idforum='$idforum' AND block='$idblock' AND guest=0" </programmer doodle> Regards, -- Don Read [EMAIL PROTECTED] -- It's always darkest before the dawn. So if you are going to steal the neighbor's newspaper, that's the time to do it. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php