php - Getting the first available null value in an array -
i have small volunteering system working on , in volunteering table, have 2 columns users can volunteer take part in event.
the table looks so:
id event_name user_1 user_2 created_at
what achieve when user volunteers event, next available user slot given him. ie, if user_1
, user_2
have no values, , user volunteers, assign first available slot him (user_1
) , user_id
not null, save user id in user_2
column.
i have ran query return user_1
, user_2
columns based on event id. problem having writing php code select first available empty array item can save user id?
hope sort of making sense..
thanks
you'd better off normalising table, events table, , event_volunteers table.
event(id, name, max_volunteers)
event_volunteers(event_id, user_id)
then don't have worry field null or not, , don't limit 2 volunteers per event - ie, more flexibility.
instead, can check if event 'open' volunteers comparing count of event_volunteers max_volunteers
field so.
select e.id, e.name event e left join event_volunteers ev on e.id = ev.event_id group e.id having count(ev.event_id) < e.max_volunteers
with left join
, return null
values fields of event_volunteers
if there no volunteers particular event
. count()
ignores null
values, tho there row there count, count 0
.
you can limit check specific event introducing where
clause.
and assign volunteer event, insert user_id
event_volunteers
table.
you pull list of of volunteers performing above query, without group by
or having clause
, eg:
select e.id, e.name, ev.user_id event e inner join event_volunteers ev on e.id = ev.event_id
this show events there least 1 volunteer (because of inner join
). should wish show events, volunteers (if any). change inner join
left join
, , null
values in ev.user_id
if there no volunteers event.
Comments
Post a Comment