Changed at 29 August 08 / 10:08
Voor een artikel database heb ik onder andere 3 tabellen. Artikelgroep, Productgroep en Artikel.
Waar een artikel bij een productgroep hoort en een productgroep bij meerdere Artikelgroepen kan horen.
Nu haal ik bij het opvoeren van een productgroep alle artikelgroepen op en kan je aangeven bij welke artikelgroep een productgroep hoort.
$objForm -> dbCheckBox(
'Artikelgroep',
'artikelgroep_id',
'artikelgroep',
array( 'id', 'omschrijving' ),
' ORDER BY `omschrijving`',
FH_NOT_EMPTY
);
Maar dan wordt het als volgt weggeschreven in de database in de kolom artikelgroep_id: (vb) 1,4,6 enz.
Waarschijnlijk is het wel mogelijk om met een koppeltabel dit te bewerkstelligen, maar ik zou niet weten hoe je gegevens uit 1 form in 2 tabellen kan opslaan.
Dus, hoe kan ik het zo maken dat de gegevens juist worden opgeslagen.
FH slaat dit soort waarden standaard inderdaad komma-gescheiden op in 1 veld. Indien je het in een koppeltabel op wil slaan zul je dit zelf moeten programmeren.
Indien je gebruik maakt van de onSaved functie kun je hierin gebruik maken van het gegenereerde / bijgewerkte ID van je artikel, tesamen met het data-array uit het formulier:
<?php
function saveArtikel( $id, $data )
{
// In $id staat het ID van het artikel
// In $data zit de gevalideerde data uit het formulier
/*
Voer een update / insert query uit op de koppeltabel
met $id en $data['artikelgroep_id']
*/
foreach( $data['artikelgroep_id'] as $iArtikelgroepID )
{
echo $iArtikelgroepID.' koppelen aan '.$id. '<br />';
}
}
// dbFormHandler instantie
$objForm -> dbCheckBox(
'Artikelgroep',
'artikelgroep_id',
'artikelgroep',
array( 'id', 'omschrijving' ),
' ORDER BY `omschrijving`',
FH_NOT_EMPTY
);