Login Retreive lost passwordRegister
Search

Forum Index / NL Forum / opslaan 2 tabellen

[ This topic is unsolved! ]

  W. van Wingerden 29 August 08 / 09:51  
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.

Alvast bedankt

  Remco van Arkelen (Admin) 29 August 08 / 10:07  
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
);

$objForm->onSaved'saveArtikel' );
?>

  W. van Wingerden 29 August 08 / 10:46  
Bedankt! Ik zal het gaan proberen!

  W. van Wingerden 03 September 08 / 16:55  
Changed at 03 September 08 / 17:07
Ik heb nu de volgende code, maar dan slaat hij nog niets op in de koppeltabel:

<?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['artikelgr_id'] as $iArtikelgroepID 
      { 


        
$l_oSql = new dbManager"INSERT INTO artikel_productgr ( productgr_id, artikelgr_id ) VALUES ( ".$id.", ".$iArtikelgroepID." )" );
      } 
    } 
    
    
// dbFormHandler instantie 
    
$objForm -> dbCheckBox(
    
'Artikelgroep',
    
'artikelgr_id',
    
'artikelgroep',
    array( 
'id''omschrijving' ),
    
' ORDER BY `omschrijving`',
    
FH_NOT_EMPTY
    
);
    
    
$objForm->onSaved'saveArtikel' ); 
?>


Zie ik iets over het hoofd?

  Remco van Arkelen (Admin) 04 September 08 / 08:28  
Ik weet niet wat jouw dbManager doet, maar krijg je in die foreach loop wel de juiste waarden? Dan kun je iets gerichter zoeken.

  Top


powered by PHP-GLOBE   © 2004 - 2009 FormHandler. All rights reserved.   -   Open source license