Configurazione select_multiple_checkbox

bose86

New member
Versione:
You are using DaDaBIK version 9.4-Monterosso pro, installed on 09-30-2019 (installation code: 149245d91b9785b791), the latest version of DaDaBIK is 9.4-Monterosso released on 07-23-2019
You are runnning the last release of DaDaBIK
PHP Version: 7.3.5
mysql version: 5.6.43-cll-lve
Web server: Apache
Client: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
===================================
Buongiorno Eugenio,
ho qualche difficoltà con l'implementazione di un campo "select multiple checkbox".
Architettura database:
tabellaFeedback con campi id_feedback (chiave primaria) e descrizione_feedback (campo testuale varchar).
tabellaAttivita con campi id_attivita (chiave primaria), altri campi e feedback_id_feedback (come chiave esterna che richiama i valori presenti in tabellaFeedback)

Per quest ultimo campo ho impostato in Dadabik "select multiple checkbox". Quando provo ad inserire un nuovo record nella tabellaAttivita la maschera si presenta corretamente con l'elenco (checkbox) dei record inseriti in tabellaFeedback. Ma poi il si genera un errore. Eccolo:
[08] Error: during query execution. INSERT INTO `attivita` (`data_attivita`, `Aziende_id_azienda`, `descrizione_attivita`, `Feedback_id_feedback`, `Operatori_id_operatore`) VALUES ('2019-10-01 12:40:46', '2', 'Inviato mail', '~Riscontro Cliente~', '2')
The DBMS server said: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`nomedatabase`.`attivita`, CONSTRAINT `fk_Attivita_Feedback1` FOREIGN KEY (`Feedback_id_feedback`) REFERENCES `feedback` (`id_feedback`) ON DELETE NO ACTION ON UPDATE NO ACTION)

Dove sbaglio?

Grazie
 

eugenio

Administrator
Staff member
Ciao,
non vedo i dettagli dello schema del db (tipi di dato, vincoli, ... ) ma immagino che Feedback_id_feedback sia impostato come "foreign key" (vincolo di integrità referenziale).

Se vuoi utilizzare il tipo select_multiple devi in sostanza "denormalizzare" lo schema, DaDaBIK si aspetta che quel campo sia testuale e inserisce in quel campo i valori separati da ~ quindi non puoi avere un vincolo di integrità referenziale (che invece è corretto avere in caso di select_single_*).

Spero di essermi spiegato, in caso contrario fammi sapere.

Saluti,
 

bose86

New member
Grazie Eugenio,
velocissimo. Penso di aver capito, ho tolto il vincolo tra le due tabelle, ora il campo "feedback_id_feedback" presente nella tabellaAttivia non è più "foreign key". Le due tabelle sono completamente separate, ma impostando il lookup in dadabik tutto sembra funzionare correttamente.

Giusto per conoscenza, in questo modo il valore che viene registrato nella tabellaAttivita è direttamente descrizione_feedback e non più ID_feedback. Se è così, in un secondo momento se ci fosse l'esigenza di modificare una voce descrizione_feedback mantenendo lo stesso ID la modifica non si vedrebbe sui record già registrati. Corretto?

Grazie e buona giornata
 

eugenio

Administrator
Staff member
Ciao,
no, il valore rimane quello di ID_feedback, o meglio rimane quello che hai impostato come "Lookup table primary key field " (che immagino sia nel tuo caso ID_feedback, anche se da quel '~Riscontro Cliente~ che vedo nell'errore ho il dubbio che non sia cosi'). Il fatto di eliminare il vincolo di integrità referenziale non cambia nulla da questo punto di vista.

Buona giornata,
 
Top