检查GET值,同一页面中FORM的POST不起作用

时间:2011-11-24 13:53:24

标签: php html

我想问一些想法并帮助我解决这个问题。

我有一个php页面,它加载一个表单,但在表单从DB加载数据之前,它首先检查数据是否存在,否则发布错误,找不到记录。这是表格的流程。表格应该可以通过http://server/view.php?id=10

访问

代码段:

// check id first from get
$id = intval($_GET['id']);

// do mysql query here then i check if exist
if ($id == 0) { die("No Record Exist in DB"); }

if ($_POST['SUBMIT'] != null) {
// do validation of data from form and insert record from DB //
// use redirect to same page here to http://server/view.php?id=10 to refresh with new data

//show the form here below.

现在我的问题是我可以检查数据是否存在并且它显示数据库中没有记录存在但是如果记录存在则显示带有记录的表单。现在,当我想添加新信息并提交表单时,而不是转到$_POST['SUBMIT']它进入检查并且它在DB中接收No Record Exist,我观察到当页面重新加载时它只显示{{3在网址中。

我该如何解决呢。

6 个答案:

答案 0 :(得分:1)

尝试isset($ _ POST ['SUBMIT'])&& $ _POST ['SUBMIT']!= null和isset($ _ GET ['id'])

答案 1 :(得分:1)

我认为您的代码中可能存在逻辑问题。当您添加新记录时,在提交带有新记录的表单时,您为id传递了哪些参数(如果有)?我会按如下方式构造代码:

// check id first from get
if(isset($_GET['id']))
{
    $id = intval($_GET['id']);
    // do db query to check if this ID exists
    $sql = "select ... from ... where id = $id";
    ...

    if(!exists) {
        die("No Record Exist in DB");
    }
    elseif(isset($_POST['SUBMIT'])) {
        // your ID exists, editing existing record
        // update your db record
        // then redirect to some confirmation page
    }
}
elseif(isset($_POST['SUBMIT'])) {
    // here ID is not set at all, this means, you're adding a new record
    // add your new record
    // then redirect to some confirmation page
}
else
{
    // show the form here - new or update based on the 'id' parameter
}

答案 2 :(得分:1)

这样的方式:

$id = ($_GET['id']) ? $_GET['id'] : FALSE;
if($id != FALSE && $_POST['submited'] == 'yes') {
    // do anything
    // ...
    // ...
    // forward to view.php?id=$id
}

我总是在表单中使用隐藏字段来检查它是否已被提交(更好的解决方案是每次提交后更改的令牌)。所以在这个例子中你需要添加以下隐藏字段:

<input type="hidden" name="submited" value="yes" />

希望这有所帮助,这就是你要找的东西:)

答案 3 :(得分:0)

您应首先检查您的ID是否已设置,然后检查数据库中是否有相应的记录。

答案 4 :(得分:0)

检查输入字段是否为空通常不是一个好主意。

解决方案在于检查请求是否属于POST类型,即表单是否已提交。

尝试这样的事情:

<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // here comes to execute once form is submitted
    } else {
    // check id first from get
    $id = intval($_GET['id']);

    // do mysql query here then i check if exist
    if ($id == 0) { die("No Record Exist in DB"); }

    // show form here
    } 
    ?>
祝你好运!

答案 5 :(得分:-2)

您必须在表单操作中包含该链接 例如 :       method =“post”action =“view.php?id = idnumberhere”&gt; 应该将id号发布到页面,$ _POST ['id']将检索它

当然,因为你的id在php中,你想将它用作变量