使用PHP发布并获取表单到同一页面

时间:2012-06-27 09:18:20

标签: php html forms post

我正在制作一个PHP应用程序,用它来测试Object Orientation,因为我正在尝试学习OO而不是程序编程。

基本上我有一个用户可以使用系统预订的课程列表,它们出现在用户个人资料中。在个人资料中,我希望每个预订课程旁边都有一个“删除”链接,点击该链接后会删除该课程。

我是否必须使用html表单?我已经开始这样做,但它看起来不对。我有一个名为“delete_course”的函数,它执行我想要它做的事情,而我需要传递的是DB中的帖子的ID。所以......我的问题是......将表格中的ID发布到带有函数调用的页面是最佳做法吗?

如果这是最好的方式,最好将其发布到用户所在的SAME(当前)页面,或发布到另一个页面,例如“cancel_course.php”???有什么好处?

由于

哦,顺便说一下,我对PHP比较陌生,但已经做了很多JS,所以我知道ajax是一个更好的选择,只是想学习PHP:)

4 个答案:

答案 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调用(你说你知道的很好)从配置文件中删除项目,这样你就有两个好处

  1. 用户不必等待页面加载:您可以假设一个乐观模型并立即从DOM中删除该项目,并仅注册失败回调以恢复HTML元素并在出现问题时通知用户< / LI>
  2. (小)节省服务器带宽 - 是的,这是一个很小的优化,我承认:P
  3. 但是,既然你说你是PHP的新手,我最强烈的建议是不要使用普通的PHP文件来做这类事情,特别是如果你需要(就像你应该)一个数据库。这样你就可以学习不好的东西(比如使用mysql扩展函数instead of PDO),实际上这个知识既不是真正的面向对象,也不是在现实生活中应用。

    PHP开发人员(如Python和Ruby)现在使用框架来构建他们的应用程序。这些框架通常提供从数据库到PHP代码的OR映射,让您编写真正的OO代码,由于MVC范例,也更容易维护。

    这些框架中的大多数都是开源的,因此您可以通过查看代码来学习PHP内容。我个人推荐CakePHP