Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 编程初学者-设计web应用程序的建议_Php_Mysql_Database Design - Fatal编程技术网

Php 编程初学者-设计web应用程序的建议

Php 编程初学者-设计web应用程序的建议,php,mysql,database-design,Php,Mysql,Database Design,我做一些HTML/CSS是为了好玩,但我正在学习一些编程技巧 我一直在阅读PHP和MySQL。到目前为止,我还不觉得理解循环、条件语句等概念太难,但我想在我对阅读感到厌倦并完全放弃之前就开始开发应用程序 我的想法 我现在正好在准备考试,而且这些练习考试都在纸上。我想为什么不把它放到一个应用程序里,这样我就可以在电脑上参加考试了 特点: 该应用程序可以容纳多个考试 它可以随机化问题或按顺序显示问题 可以选择显示每个问题的答案 计算完成考试的持续时间 添加新考试和问题/答案的管理页面 好了,你们

我做一些HTML/CSS是为了好玩,但我正在学习一些编程技巧

我一直在阅读PHP和MySQL。到目前为止,我还不觉得理解循环、条件语句等概念太难,但我想在我对阅读感到厌倦并完全放弃之前就开始开发应用程序

我的想法

我现在正好在准备考试,而且这些练习考试都在纸上。我想为什么不把它放到一个应用程序里,这样我就可以在电脑上参加考试了

特点:

  • 该应用程序可以容纳多个考试
  • 它可以随机化问题或按顺序显示问题
  • 可以选择显示每个问题的答案
  • 计算完成考试的持续时间
  • 添加新考试和问题/答案的管理页面
好了,你们现在可以停止笑了,我知道这比你好世界高了一步,但我想我应该从某个地方开始

我会用PHP/MYSQL或者RoR来开发它,如果你们认为对初学者来说更好的话。我想我可以读/写数据库,但我不太确定网站结构、数据库设计以及通常最好的方式

如果我的考试由50个问题组成,每个问题都有一个ID。如果我删除了一个问题,如何用新ID更新其余的问题?也就是说,如果我删除问题3,以下所有问题都需要将其ID向后移动1

编辑:

如何在数据库模式中表示一个考试的实例?考试和问题的关系将是一对多的,因为问题对于单个考试来说是唯一的。但是,既然我的目标是有多个考试,我该如何表示呢



如何在数据库模式中表示一个考试的实例?考试和问题的关系将是一对多的,因为问题对于单个考试来说是唯一的。但是,既然我的目标是要有多个考试,我该如何表示呢?

在我看来,这里最重要的是数据库的结构。你会想了解一些关于db设计和规范化的知识。基本上,您需要在逻辑上规划应用程序中存在的不同实体:

  • 考试
  • 考生
  • 问题
  • 答复
  • 其中一些将相互关联:

  • 问题->考试
  • 考生->考试
  • 答案->问题
  • 无论何时遇到这种情况,都需要确定关系是一对一、一对多还是多对多。问题可以属于一个考试,也可以属于多个考试。那由你来决定。如果一个问题只属于一次考试,您可以在问题表中创建一个字段来保存ExamID。如果一个问题可以属于多个考试,您将创建一个包含两个字段的新表:QuestionID、ExamID。这将建立您的多对多关系

    老实说,对于一个几乎没有编程经验的人来说,这可能是一项非常艰巨的任务。在我看来,你应该从简单得多的东西开始,比如留言簿或迷你博客


    无论您决定构建什么应用程序,它都会一直为您服务。

    好的,首先,欢迎:) 第二:你的想法一点也不愚蠢,事实上,你选择了学习编程的最佳方式:做一些有用且有趣的事情

    进入你的问题:为什么你需要连续的ID来回答这些问题?在数据库方面,您只需要每行有不同的ID

    如果是显示要求,为什么不在显示期间在循环上指定一个数字?因此,例如,当您对每个问题执行
    foreach
    显示时,您可以保留一个索引变量,在每个循环中递增,并使用该变量显示序号


    希望这就是你要找的,祝你好运

    一个特定的应用程序是学习编程的一个很好的方法,即使这样的应用程序已经存在(它们确实存在——但我会避免看那些,只是创建和学习!)

    您的规格之一是,问题可以以任何顺序显示。另一个原因是它们可以被移除。因此,很明显,编号与问题没有直接关系——一旦确定了问题集及其在测试中的顺序,就应该动态生成编号。您需要仔细考虑这些需求,它们为组件的设计提供了基础。用户界面应与程序逻辑隔离,程序逻辑应与问题数据库隔离。尽量以最原始的形式在这些部分之间传递信息。这样,当你想重新设计其中一个图层时,你就不必改变整个图层

    如果我的考试由50个问题组成,每个问题都有一个ID。如果我删除了一个问题,如何用新ID更新其余的问题?也就是说,如果我删除问题3,以下所有问题都需要将其ID向后移动1

    主ID永远不会改变。当您删除表中的一行时,相应的主ID将消失,但其他行主键不应重新编号


    如果您决定使用Rails,请查看Ryan Bates优秀的屏幕广播网站。

    我同意所有其他答案,实现一个有用的应用程序是学习web开发的好方法。但是,正如Jonathan所说,您计划构建的不是一个非常简单的应用程序。也就是说,以下是我的想法:

    RubyonRails是Ruby的框架。它还可以利用MySQL。PHP是一种编程语言(ruby代表RoR),不提供任何框架。但是,PHP有很多,或者仅举几个例子。 框架以灵活的方式实现应用程序的常用方面,因此它们可以用于各种应用程序。其中一些方面可能是身份验证、数据库访问、缓存、模板呈现等。