2012-07-26 2 views
0

Je construis une application web dans le travail et j'ai un formulaire où les utilisateurs peuvent enregistrer certains types d'informations.PHP/MySQL insérer dans plusieurs tableaux de données sur soumettre

Username | Password | Company 

Maintenant, je ne sais pas comment aborder cela. Ce que je veux, c'est que l'utilisateur soumette le formulaire d'inscription Nom d'utilisateur, mot de passe et entreprise dans une table de données (utilisateur) MAIS parce que Société, dans la table de données utilisateur, est une référence de clé étrangère. (entreprise) en tant que clé primaire (et bien sûr le nom d'utilisateur doit être écrit en tant que référence FK en tant que relation 1 - 1).

Je ne cherche pas une solution codée chez vous, parce que je connais mon PHP et MYSQL, je suis à la recherche d'algorithmes de pseudo-code pour faire circuler la créativité!

EDIT: J'UTILISE POSTGRESQL pas MySql mais je suis sûr qu'il ya peu de différence, sauf les numéros de port et petite syntaxe change

+0

Il y a une grande différence entre MySQL et Postgres. Avec ce dernier, vous pouvez résoudre ceci en une seule étape avec un CTE modifiant les données - comme démontré dans [votre question de suivi] (http://stackoverflow.com/q/12095553/939860). –

Répondre

1

suppose la première colonne est id:

  1. Enregistrer Société $mysqli->query("INSERT INTO company VALUES (NULL, '$company_name')";
  2. Obtenir l'identifiant de cet article. $company_id = $mysqli->insert_id;
  3. Enregistrer l'utilisateur avec cet identifiant $mysqli->query("INSERT INTO user VALUES (NULL, '$username', '$password', '$company_id')";
  4. Get id de l'utilisateur $user_id = $mysqli->insert_id;
  5. Mise à jour de la société avec elle: $mysqli->query("UPDATE company SET user_id = $user_id WHERE company_id = $company_id)";
+0

Désolé, une entreprise n'a qu'un seul utilisateur, car cet utilisateur est un membre du personnel de la société fournissant des informations sur leur entreprise. Indépendamment des détails est une relation 1..1 dans les deux sens. – WebDevDanno

+0

quelle serait la syntaxe PostGreSQL? $ Mysqli est-il le gestionnaire de la base de données théorique? – WebDevDanno

+0

de toute façon ma solution va fonctionner. mais si vous avez aussi besoin d'enregistrer 'user_id' dans la table' company', vous devez obtenir l'ID utilisateur créé à l'étape 3 et mettre à jour la table 'company' avec cet ID –

0

Quelques questions:

  • pourquoi est Utilisateur: Société == 1 :1? Si moi et un collègue rejoignons votre site, devons-nous faire semblant de travailler à différents endroits?
  • Si les entreprises peuvent avoir plus d'un employé, quel type de validation utiliserez-vous pour combiner les variations sur les noms de sociétés (par exemple, IBM vs International Business Machines)?
  • et si un utilisateur est au chômage?

Si la société est une belle à savoir donnée plutôt qu'une donnée -requis ou-choses-break, je serais probablement mon signe premier utilisateur. Ensuite, lorsque l'utilisateur se connecte, vous pouvez l'utiliser pour obtenir des informations supplémentaires. Cela a l'avantage supplémentaire de rendre l'enregistrement de l'utilisateur moins onéreux pour l'utilisateur.

Un cas d'utilisation:

  • utilisateur soumet username et password
  • entrée filtre pour mauvaises choses et valider pour la duplication, la pertinence
  • sauver à l'utilisateur db et récupérer PK
  • charge « info supplémentaire 'page et définir une session var comme un drapeau "nag" -si l'utilisateur choisit de ne pas remplir info add'l, drapeau nag peut déclencher un comportement de rappel
  • ajouter autocomplete au champ Société afin que l'utilisateur peut utiliser des entrées de table existantes de la Société sous forme de processus
  • et enregistrez-db
    • soit ajouter l'entreprise et l'utilisateur associé
    • ou tout simplement l'utilisateur associé
  • Nag session unset flag pour que votre site web ne continue pas à harceler
+0

Je ne peux pas révéler trop sur le projet que je travaille en tant que son projet de gouvernement, mais dans le scénario que j'ai eu une relation 1..1 fonctionne. – WebDevDanno

+0

@DanielD assez juste. J'ai posé les questions parce que j'ai eu cette conversation «honnête, il n'y aura jamais qu'une seule» trop de fois. Habituellement, plusieurs mois plus tard, quelqu'un dit: «Comment ça se fait que je ne peux pas ...». Je trouve qu'il est souvent préférable de concevoir la base de données pour permettre cela, et mettre en œuvre la règle métier 1: 1 dans le PHP. – dnagirl

+0

ouais c'est plus que compréhensible et je suis tout à fait d'accord j'aimerais juste pouvoir expliquer. – WebDevDanno

Questions connexes