2017-04-06 30 views
0

我有一个数据库设置(请参阅下面的示例图像)分隔的多个数字的领域的数字表示,他们与老师的ID一起创建的每个老师(家教的)类。此外,还有其他两个领域:register_stud_idsregister_tut_ids,可以在自己的领域用逗号分隔有一个或多个数字。使用用户的会话ID号找到用逗号

我没有问题使用下面的代码来获取特定于该用户的结果网页,如果在任一字段中只有一个数字,但是当两个或两个以上数字在任何一个字段中,生成的网页不是特定于该用户的,它只是显示了if then ... else的其他内容。

所以,我的问题是,如何更改下面的代码,以从register_tut_ids字段或register_stud_ids字段中的数字列表中获取用户的会话登录号?

data table example image

if ($getrow['register_tut_ids'] == $_SESSION['ses_idno'] OR $getrow['tut_id'] == $_SESSION['ses_idno'] && $_SESSION['u_type'] == 't')

else if ($getrow['register_stud_ids'] == $_SESSION['ses_idno'] && $_SESSION['u_type'] =='s')

+0

数据库设计的不好 –

+0

Masivuye,因为你是一个开发者,你可以请帮助这个非开发者明白,为什么你写的“坏数据库设计”,并作为开发人员,怎样才能代码是换做什么,我问? – user3731042

回答

0

我建议您更新数据库结构如下:

+----------+--------+------------+ 
| class_id | tut_id | student_id | 
+----------+--------+------------+ 
|  1 |  2 |   1 | 
|  1 |  2 |   2 | 
|  1 |  2 |   3 | 
|  2 |  2 |   4 | 
+----------+--------+------------+ 

看到特定的类或教程如何可以有多个学生?

这使得查询数据容易。只需在您的SELECT语句中使用WHERE子句要满足的条件。如果你回来的结果,那么你有一个匹配的记录,否则只是做else部分。

+0

幸运的是,我看到你在说什么,但不会增加行数,因此随着时间推移会导致减速? – user3731042

+0

不要担心这一点。正如他们所说过早的优化是一个邪恶的(我甚至不会叫你在做什么优化)只要确保你有你的索引正确定义,你会通过将一般多少电脑如何处理感到惊喜。如果您的应用程序变得流行,那么您将能够轻松扩展您的mysql部署。无论如何,你现在正在做的事情会造成更多麻烦。 –

+0

谢谢幸运。我一定会按照你的建议。 – user3731042