Poste dados a partir de uma matriz para um banco de dados

Marcos:

Eu tenho duas tabelas no meu banco de dados, um grupos contendo e um usuários que contêm. Os usuários podem ser um membro desses grupos até mesmo várias vezes.

Assim, os usuários contém "id", "nome", "sobrenome", "grupo", e alguns outros que não são atm importante. Os grupos de tabelas contêm apenas um id e um nome de grupo. Esses grupos são dinâmicas, às vezes um grupo é adicionado, e às vezes um grupo é excluído.

No front-end, as pessoas podem adicionar-se a um grupo usando um formulário com um múltiplo selecione

Mas eu não ir mais longe do que isso. Eu estou enfrentando dois problemas. dados coletados a partir de um estão em um array, então colocá-los em uma consulta SQL não é simples simples. (Eu estava pensando para colocar al as informações a partir da matriz em apenas uma variável separados por ""), por outro lado, talvez este formato de tabela não é a melhor maneira de fazê-lo.

Então o que eu sou eu pedindo de vocês. É melhor para mudar a estrutura da tabela e para quê? Como posso combinar um array em uma variável para que eu possa colocá-los no banco de dados (separados por "") <\ s>

EDIT !: Como recomendado por Andy Hall, I 'v criou uma nova tabela. werkgroep_user com id, werkgroep_id e user_id.

Este é o meu selecione se parece

<select id="testwerkgroep" name="testwerkgroep[]" multiple>
 <option value="">geen werkgroep</option>
 <option value="1">werkgroep 1</option>
 <option value="2">werkgroep 2</option>
</select>

Agora eu estou enfrentando o problema da obtenção de dados a partir do DB. Quero, por exemplo, todos os usuários (nome) e seus grupos (nome)

Andy Hall:

Parece que seu usuários e grupos tabelas têm um relacionamento muitos-para-muitos. "Muitos usuários podem ser parte de muitos grupos".

Sem resolver o relacionamento muitos-para-muitos com uma tabela intermediária, certamente você pode usar uma série de valores separados por vírgula no users.groupcampo. Você poderia conseguir isso usando a implode()função em sua matriz de IDs do grupo:

$commaSeparatedGroupIdString = implode($groupIdArray);

E quando você recuperar a partir do banco de dados, você pode explodir-los de volta para uma matriz:

$groupIdArray = explode($commaSeparatedGroupIdString, ",");

A segunda (e, eu diria melhor ) método é para resolver o relacionamento muitos-para-muitos com uma tabela intermediária. Esta tabela pode ser nomeado algo como group_assignments. Um userpode ter muitos group_assignments, e um grouppode ter muitos group_assignments.

A estrutura da group_assignmenttabela seria:

id chave primária

user_idchave estrangeira para o users.idcampo

group_idchave estrangeira para o groups.idcampo

Sempre que um usuário deseja atribuir-se a um grupo, eles iriam fazer uma submissão, e sua aplicação criaria um novo registro na group_assignmentstabela com o ID do usuário e ID do grupo que eles apresentaram para atribuir-se a. Recuperação de informações de atribuição de grupo para um usuário, então, requerem o uso de um JOINno seu SQL para pegar todos os associados group_assignmentregistros para o usuário. Remoção de uma tarefa é tão simples como retirar o registro apropriado na group_assignmentstabela.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=347645&siteId=1
Recomendado
Clasificación