Ik ben bezig met een script om bedrijven toe te voegen aan een systeem. Elk bedrijf zit gekoppeld aan een user.

Twee tabellen heb ik dus:

companies
- id
- userid (gekoppeld aan het id van onderstaande tabel)

users
- id

Vanzelfsprekend nog meer rijen met o.a. de naam en passwords maar dat is niet echt relevant voor mijn vraag.

In mijn systeem voeg je alle informatie nu in één keer toe. Oftewel je hebt een formulier waar alle gegevens van het bedrijf ingevuld kunnen worden met vervolgens twee velden voor de username en het password.

Mijn vraag is, hoe kan ik in één script beide toevoegen en aan elkaar linken?

Stel ik voeg bedrijf A toe met id 10 en user A met id 5, hoe kan ik er voor zorgen dat userid in de tabel companies gevuld wordt met 5?
Je kunt een AUTO_INCREMENT op de ID zetten en na een INSERT de gegenereerde ID opvragen met mysqli_insert_id() of PDO::lastInsertId:

http://php.net/manual/en/mysqli.insert-id.php

http://php.net/manual/en/pdo.lastinsertid.php

Ik denk dat je er wel verstandig aan doet een derde tabel toe te voegen die gebruikers aan bedrijven koppelt, want in de huidige opzet kan één bedrijf bijvoorbeeld niet meer dan één user hebben (wat soms best onhandig kan worden bij grote bedrijven).
Bedankt. Hoezo een derde tabel? Kan je dat niet oplossen met JSON of iets dergelijks?
Die derde tabel die je nodig hebt is een koppeltabel. Je wilt immers meerdere gebruikers aan een bedrijf hangen. Ik snap niet wat JSON hier voor nut kan bieden, want het gaat immers om een genormaliseerde database-structuur.
Het zou misschien ook logischer zijn dat in de user tabel een company id voorkomt, in plaats van een user id in de company tabel. Doorgaans werken er meerdere mensen bij één bedrijf en zijn medewerkers maar actief bij één bedrijf.

Of je houdt het compleet flexibel en introduceer je een koppeltabel ("employees" ofzo) zoals @Ward aangeeft.

Dusss, terug naar de tekentafel? :p

Reageren