Hey php-end universum,
Ik wil een database maken, waarin de gegevens van een organisatie gelinkt zijn aan de contactgegevens van de medewerkers.
Om het simpel te houden spreken we af: ik heb een tabel 'organisatie' die - het veld ID_organ en het veld naam_organ bevat. De tabel 'medewerkers' bevat ID_medewerker, naam_medewerker, telefoon_medewerker en mail_medewerker.
Het invoeren van de gegevens in beide tabellen zou ik graag vanuit 1 formulier kunnen doen. Nu heb ik al heel wat gelezen op deze site over joins tussen tabellen, maar de gegeven voorbeelden gaan altijd over het uitlezen van gegevens. Daarmee kom ik er niet, denk ik. t Zal bijvoorbeeld nodig zijn om in de tabel medewerkers een extra veld te voorzien waar je de gegevens naartoe schrijft die de koppeling tussen de tabellen moeten helpen maken. Of zie ik dat verkeerd? Graag een duwtje in de goeie richting! 't Lijkt me een goeie investering, want ik kan me voorstellen dat een heleboel Mysql/Php gebruikers met dit probleem worstelen.
Greets!
</zuppo>
Mogelijkheid 1
Een bedrijf kan meer dan 1 werknemer hebben.
Een werknemer werkt maar bij 1 bedrijf.
In dat geval zou je bij het invullen van de werknemergegevens een selectie moeten kunnen maken uit bedrijven die al in de database zitten. Je moet dan een veld bedrijf_id toevoegen aan je tabel 'medewerkers'.
Mogelijkheid 2
Een bedrijf kan meer dan 1 werknemer hebben.
Een werknemer kan bij meer dan 1 bedrijf werken.
Dat wordt een stuk ingewikkelder, want dat heet een veel-op-veel relatie en die mogen niet in databases. Voordat ik je daar tips over kan geven wil ik graag eerst weten welke mogelijkheid op jouw probleem van toepassing is.
Mogelijkheid 1 is de optie waar ik voor ga. (Da's al moeilijk genoeg)
Maar ik vroeg me af of het mogelijk is om vanuit het formulier waar je de bedrijfsgegevens op invult meteen ook werknemers en hun contactgegevens toe te voegen. Of kan dat gewoon niet?
Proficiat met je 7000+ post. Misschien wordt het verhaal over wat ik wil wat te lang om in detail uit te leggen. Ik denk dat ik ook al verder kan raken met wat jij suggereerde: een bedrijf selecteren bij het invullen van de werknemersgegeven.
als je dan een tabel met bedrijven hebt, kun je het volgende doen om een dropdown met de verschillende bedrijven te krijgen.
<?php
//bedrijven ophalen uit db
$query = "SELECT id,naam FROM bedrijven";
$result = mysql_query($query) or die (mysql_error());
//bedrijven weergeven in een dropdown.
echo('<select name="bedrijf">');
while ($row = mysql_fetch_array($result)) //onderstaande code voor ieder record uitvoeren.
{
echo('<option value="'.$row['id'].'">'.$row['naam'].'</option>');
}
echo('</select>');
?>
dit zet je in een form samen met wat andere velden, en daarna kun je een insert query gebruiken om alles weg te schrijven.
OK, Stefan. Wel bedankt voor je reactie. Ik denk dat ik zie wat je bedoelt. Dat lijkt me een heel bruikbare suggestie. (Ik probeer nog effe uit).
Als ik het goed begrijp is het de bedoeling om de
inhoud van het veld 'bedrijf' dat je uit de tabel 'bedrijven' geselecteerd hebt toe te voegen aan één van de rijen in de tabel met werknemersgegevens?
Als ik nu later een overzicht wil maken van de bedrijven en per bedrijf alle werknemers, zit ik dan niet in de problemen als 2 bedrijven dezelfde naam blijken te hebben?
</Z>
zuppo, dit kan je voorkomen door de bedrijven ook een id te geven.
zoals Jan Koehoorn al zei... gebruik het id van het bedrijf bij de werknemers als bedrijf_id. en select dan de werknemers where bedrijf_id = $row['id']
OK. Michel, maar wat ik wil is dat de inhoud van het veld bedrijf_ID automatisch kan worden overgenomen uit de tabel bedrijven. Dus: dat ik niet 'manueel' het veld bedrijfsid moet invullen. Dat kan waarschijnlijk door uit de tabel bedrijven het id-veld mee te betrekken in de selectie?
</Z>
wanneer je een bedrijf toevoegt en vervolgens de werkenemrs kun je in de tussentijd mysql_insert_id() gebruiken om te weten wat het id is van het laatste bedrijf:)
Dat had ik inmiddels ook in het snuitje gekregen... Jullie zijn een schitterende club. Ongeloofelijk bedankt allemaal! Ik denk dat veel beginnende database-bouwers hier iets aan zullen hebben.