Re: References in Sessions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Alexander Schrijver schrieb:
Hi list,

I'm working on a project which uses a MySQL database to store some data. The
database looks something like this:

Companies
- id (PK)
- name
- sector_id -> Sectors (id)
- etc

Locations
- id (PK)
- company_id -> Companies (id)
- name
- etc

Sectors
- id (PK)
- name
- etc

And we're using a Session to store references (not actual PHP references
ofcourse just the identifying integers) to these tables.

For example a list of companies and locations which are selected in the GUI is
kept in the session state.

The session would look something like this when filled up. The integers are the
PKs of the companies and sectors tables respectively.

Companies = Array (1,2,3,4,etc)
Sectors	= Array (1,2,3,4,etc)

The problem is: when there are 2 clients one administrative and one user,
and the user has selected a company (or something else, it doesn't really
matter). And then the administrative user comes along and deletes the row which
the user just selected from the company table. There is an invalid reference in
the Session of the user.

I figured if I saved the session in the database and used constraints (foreign
keys) to enforce this. This could work. However, the PHP session abstraction
makes it very difficult to implement this properly. (I looked at
session_set_save_handler)

How do you guys deal with this problem?

Thanks,

Alexander

Why don't you write a small function checking for invalid IDs and delete them and referenced subIDs? If you guess it's to hard/slow to find out all referenced subIDs you could change your Session array to an multi-dimensional array, with all referenced IDs on lower levels

array ( sector_id => array ( company_id => array (location_id) ) );

like

array ( 1 => array (17,4 => array(2)) would mean that loction 2 inside company 4 inside section 1 was selected. This way you only need to delete an old entry, and all referenced IDs dissapear

Sebastian

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux