我正在制作一个PHP应用程序,用它来测试Object Orientation,因为我正在尝试学习OO而不是程序编程。
基本上我有一个用户可以使用系统预订的课程列表,它们出现在用户个人资料中。在个人资料中,我希望每个预订课程旁边都有一个“删除”链接,点击该链接后会删除该课程。
我是否必须使用html表单?我已经开始这样做,但它看起来不对。我有一个名为“delete_course”的函数,它执行我想要它做的事情,而我需要传递的是DB中的帖子的ID。所以......我的问题是......将表格中的ID发布到带有函数调用的页面是最佳做法吗?
如果这是最好的方式,最好将其发布到用户所在的SAME(当前)页面,或发布到另一个页面,例如“cancel_course.php”???有什么好处?
由于
哦,顺便说一下,我对PHP比较陌生,但已经做了很多JS,所以我知道ajax是一个更好的选择,只是想学习PHP:)
答案 0 :(得分:4)
如果您想在不使用JavaScript的情况下通过HTTP发布变量,则需要HTML中的表单,其方法属性为“post”。
每个删除按钮都可以在数据库中包含课程ID的值,这样您就可以轻松识别PHP中正在删除的课程。
HTML:
<form method="post">
<ul>
<li>
<h1>Learn how to sew course</h1>
<button type="submit" name="deleteCourse" value="1">Delete</button>
</li>
<li>
<h1>Learn how to knit course</h1>
<button type="submit" name="deleteCourse" value="2">Delete</button>
</li>
</form>
PHP:
if(!empty($_POST["deleteCourse"])) {
$courseList->deleteById($_POST["deleteCourse"]);
}
答案 1 :(得分:3)
您可以选择一些选项,仅举几例:
1)通过URL:创建超链接,如:
http://www.example.com/myprofile.php?deleteCourseid=23
http://www.example.com/myprofile.php?deleteCourseid=54
等 来自myprofile.php:
if (isset($_GET["deleteCourseid"]){
$deleteme = (int)$_GET["deleteCourseid"];
// Some query here.
}
2)通过表格中的POST。同样的逻辑适用。
我建议你也使用一些会话逻辑来识别用户,这样你就可以删除基于$ _GET [“deleteCourseid”]的课程和类似$ _SESSION [“userid”]
的内容假设你有一些像这样的表: [PostgreSQL的]
CREATE tblusercourse(
usercourseid SERIAL PRIMARY KEY,
userid INTEGER REFERENCES tblusers(userid),
courseid INTEGER REFERENCES tblcourse(courseid),
)
答案 2 :(得分:2)
如果我没有正确使用,你有一些东西的列表,每个东西都有它自己的删除按钮。
例如, 拉脱维亚语课程[删除课程]
我觉得非常简单,[删除课程]将链接到带有GET参数的同一页面,例如delete_course = $ id。 然后
if (isset($_GET['delete_course'])) {
$class->delete_course($_GET['delete_course']);
}
答案 3 :(得分:2)
最好的选择是使用ajax调用(你说你知道的很好)从配置文件中删除项目,这样你就有两个好处
但是,既然你说你是PHP的新手,我最强烈的建议是不要使用普通的PHP文件来做这类事情,特别是如果你需要(就像你应该)一个数据库。这样你就可以学习不好的东西(比如使用mysql扩展函数instead of PDO),实际上这个知识既不是真正的面向对象,也不是在现实生活中应用。
PHP开发人员(如Python和Ruby)现在使用框架来构建他们的应用程序。这些框架通常提供从数据库到PHP代码的OR映射,让您编写真正的OO代码,由于MVC范例,也更容易维护。
这些框架中的大多数都是开源的,因此您可以通过查看代码来学习PHP内容。我个人推荐CakePHP。