Puoi fare così:
Tabella che contiene i campi "extra"
così hai una struttura che accoglie la definizione dei campi extra.codice:CREATE TABLE IF NOT EXISTS `pf_fields_data` ( `pf_id` smallint(5) NOT NULL AUTO_INCREMENT, `pf_title` varchar(250) COLLATE latin1_general_ci NOT NULL DEFAULT '', `pf_desc` varchar(250) COLLATE latin1_general_ci NOT NULL DEFAULT '', `pf_content` text COLLATE latin1_general_ci NOT NULL, `pf_type` varchar(250) COLLATE latin1_general_ci NOT NULL DEFAULT '', `pf_not_null` tinyint(1) NOT NULL DEFAULT '0', `pf_max_input` smallint(6) NOT NULL DEFAULT '0', `pf_position` smallint(6) NOT NULL DEFAULT '0', `pf_show_on_reg` tinyint(1) NOT NULL DEFAULT '0', `pf_input_format` text COLLATE latin1_general_ci NOT NULL, `pf_admin_only` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`pf_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
Poi un'altra tabella del tipo
che invece raccoglie i contenuti campi extra. In questo esempio i campi extra sono 4.codice:CREATE TABLE IF NOT EXISTS `pfields_content` ( `member_id` mediumint(8) NOT NULL DEFAULT '0', `updated` int(10) DEFAULT '0', `field_1` text COLLATE latin1_general_ci, `field_2` text COLLATE latin1_general_ci, `field_3` tinyint(4) NOT NULL DEFAULT '1', `field_4` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`member_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Il legame lo fai semplicemente recuperando gli extra dell'utente, sapendo che field_1 corrsiponde alla definizione che ha id = 1.
Ovviamente quando aggiungi un campo extra ti tocca modificare la tabella content aggiungendo il campo "field_x".
Non è il massimo della praticità, ma ti risolve qualche problemino. Es: il campo è una select box.
Per inserire i possibili valori (ipotizzo che siano fissi, ovviamente) del tipo "uomo, donna, non dichiarato, ti basta inserire per esempio "m=Uomo|f=Donna|?=non dichiarato" in pf_content. Quando vai a recuperare il dato dell'utente, nel field_x corrispondente troverai per esempio "m" che, stante la definizione pf_content, significa "uomo".
Spero di esserti stato d'aiuto.
![]()

Rispondi quotando