因此,我有一些初学者编程知识(不是很多基于Web的知识),但是我设法弄清楚了如何设置MYSQL数据库以及如何制作一个PHP文件,该文件将从我拥有的测试表中提取行在数据库中进行。
我正在寻找一些输入或伪代码或一般指导,以了解需要采取哪些步骤才能实现自己的想法。我知道我可能需要研究对将要收集的几个数据项的必要的关系调用。我希望使我的志愿者工作更轻松。我在协调其他志愿者的地方做志愿者。我的工作是跟踪他们的认证(在实际的文件箱中)---我使用的是别人的旧Excel表格。
我想向导演介绍一种更有效的方式,让我们收集关键数据,然后轻松地与志愿者共享。
隐私没有问题(我收集的任何数据都不会包含姓名或个人信息,只是这个特定志愿者是否具有一定的证书-我将其与志愿者编号相关联,然后将其交叉引用到我的物理文件)
因此,我要设置的是一个PHP / MYSQL系统来实现此目的:
让用户登录(使用Facebook或Gmail,每个人都必须拥有一个才能使用它)**这一点在此阶段最不重要,因为我只是想证明一个具有正常功能的系统
由php页面向用户发布一份认证清单。这基本上就是他们登录时将看到的所有内容。
让该用户检查他们拥有哪些,而其他人留空。
使值保存并保持不变。 (使用“保存”按钮或仅自动)
通过网络链接使清单可(由用户)共享;将根据需要更新的值填充清单。
假设
我假设我需要两个桌子?
用于维护清单和相关徽标的值的表:
表格1
我假设我的第二张桌子将用于跟踪用户
表2
我假设在表之间会有关系调用?
所以,如果这个问题太笼统,我理解。我只是在寻找一种解决它的方法,而不必是任何过于详尽的回应。这只是我前进的框架。
最佳答案
您的数据库设计应满足两个条件:
无需在任何地方重复信息
如果删除了用户或证书,则包含该用户或证书的所有其他记录也应为
我会有3个InnoDB表
users
id //perhaps volunteer id if they're unique. Primary key
login //email used to login
api_service //not sure about this; gmail or facebook perhaps?
password //IF you choose to implement login yourself, remove api_service
... //anything else describing the user (not certifications)
created //date account was added
certifications
id //unique identifier. Primary key
name //what is it called
... //anything else describing an individual certification
user_certs
id //unique identifier. Primary key
user //Foreign key to this table. Primary key from users table
cert //Foreign key to this table. Primary key from certifications table
issued_on // date the user received the certification
expires // date the cert will expire
...//anything else describing the binding such as who granted cert or
//what is cert ID number
整个登录机制实际上不能在一个段落中解决。我对Facebook或Google登录API并不熟悉,所以无论如何我都帮不了你。抱歉。
一些示例查询:
显示一位用户的所有证明(提供其志愿者ID)
SELECT certifications.name, certifications.id
FROM users
LEFT JOIN user_certs ON user_certs.user = user.id
LEFT JOIN certifications ON certifications.id = user_certs.cert
WHERE users.id = $volunteerID
查看具有给定认证名称的所有用户
SELECT users.id
FROM users
LEFT JOIN user_certs ON user_certs.user = user.id
LEFT JOIN certifications ON certifications.id = user_certs.cert
WHERE certifications.name = $certName