2017-10-06 2 views
1

J'ai une base de données appelée "to_do_list". Je souhaite que les utilisateurs puissent se connecter et créer des tâches. J'ai deux tables dans « to_do_list »:Comment connecter la table "user" à la table "tasks"

tasks: 
task_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY 
task VARCHAR(255) NOT NULL 
importance VARCHAR(255) NOT NULL 
due_date DATE NOT NULL 

user: 
user_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY 
username VARCHAR(255) NOT NULL UNIQUE 
email VARCHAR(255) NOT NULL 
password VARCHAR (255) NOT NULL 
active TINYINT(1) NOT NULL 

Comment puis-je connecter ces deux tables de sorte qu'un utilisateur peut se connecter et créer des tâches? Je sais que je dois créer une clé étrangère, mais chaque fois que je le fais, je ne peux ni me connecter ni créer de tâches. Une fois que j'ai enlevé la clé étrangère, tout fonctionne à nouveau.

Répondre

1

En quoi une tâche est-elle liée à un utilisateur? Un utilisateur a-t-il des tâches? Une tâche peut-elle appartenir à un utilisateur à la fois?

Je suppose que les deux réponses sont Oui.

Si tel est le cas, vous devrez ajouter une colonne user_id à votre table de tâches et la marquer comme clé étrangère. Ceci est utilisé pour capturer quel utilisateur votre tâche est liée.

Vous pouvez le faire en ajoutant cette ligne à votre instruction CREATE TABLE pour des tâches (ou ALTER TABLE):

FOREIGN KEY (user_id) REFERENCES user(user_id) 

Si vous rencontrez des problèmes de connexion, alors ce serait une autre question. Votre logique de connexion provient peut-être d'une requête SQL incorrecte ou d'une autre logique de programmation.

+0

J'ai ajouté une ligne user_id à la table des tâches et j'ai essayé de la marquer comme la clé étrangère, mais j'obtiens cette erreur: Erreur 1452: Impossible d'ajouter ou de mettre à jour une ligne enfant. – Julian

+0

Je vois. Je pense que ça se passe parce qu'il y a des enregistrements de tâches qui n'ont pas d'identifiant d'utilisateur. Donc, je pense que vous devrez ajouter le champ user_id (que vous avez fait), puis mettre à jour les enregistrements de tâches pour définir une valeur user_id, puis ajouter la clé étrangère. Alternativement, vous pouvez supprimer tous vos enregistrements dans la table des tâches - pas sûr si ce sera une bonne idée pour vous. – bbrumm