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