3

我的问题是我有一个$_POST返回一个null或空值的 PHP,我个人没有看到我的代码有任何错误(但我知道它在那里),而且我在几个小时内都无法真正离开它,因为我在一个时间表。所以,我希望有人可以帮助我;)

这就是我所拥有的,基本上:

<table border="0" align="center">
<tr>
    <td>
        <div id="lvl3">Project Name:</div>
    </td>
    <td>
        <input type="text" name="prjname" maxlength="250">
    </td>
</tr>
<tr>
    <td colspan="2" align="center">
        <input type="submit" value="Submit" name="prjsubmitname">
        <input type="button" value="Cancel" onclick="$('#popupoverlay').hide(); $('#prjpopupbox').hide(); $('#prjname').hide(); $('#prjdescription').hide(); $('#prjversion').hide(); $('#prjrelease').hide();">
    </td>
</tr>

这是我用于编辑项目名称的表格——我认为这里重要的是文本框输入。

接下来我有我的PHP:

//Did the user change the Project Name
if (isset($_POST['prjsubmitname']))
{
//Is the input empty
if (!trim($_POST['prjname']))
{
    //Input is empty
    echo('<script>senderror("Please enter a valid Project Name empty");</script>');
} else {

    //Input isnt empty, assign variables
    $url = geturlext();
    $prjname = mysql_real_escape_string(trim($_POST['prjname']));

    //Is input invalid
    if (strcasecmp($prjname, "main") == 0 | $prjname == "404")
    {
        //Input is invalid
        echo('<script>senderror("Please enter a valid Project Name invalid");</script>');
    } else {

        //Input is valid, connect to database
        dbconnect();

        $checkquery = mysql_query("SELECT * FROM projects WHERE name = '$prjname'") or die(mysql_error());
        $check = mysql_num_rows($checkquery);

        //Does Project Name already exist
        if ($check == 0)
        {
            //No it does not
            $updatequery = mysql_query("UPDATE projects SET name = '$prjname' WHERE name = '$url'") or die(mysql_error());

            echo("<script>location.href='index.php?page=" . $prjname . "'</script>");
        } else {
            //Yes it does
            echo('<script>senderror("That Project Name already exists");</script>');
        }
    }
}
}

这就是我的问题所在;无论我在文本框中输入什么,我总是收到“输入为空”的错误消息。我已经打印了 $_POST['prjname'] 的输出,它确实是空的。

现在奇怪的部分是,我有这个完全相同的(至少我认为)设置来更改项目描述,并且它完美地工作。为了比较 - 我在下面包含了项目描述编辑器的相同部分。

桌子:

<table border="0" align="center">
<tr>
    <td>
        <div id="lvl3">Project Description:</div>
    </td>
    <td>
        <textarea type="text" name="prjdescription" maxlength="750" style="width:300px; height:100px; resize:none;"></textarea>
    </td>
</tr>
<tr>
    <td colspan="2" align="center">
        <input type="submit" value="Submit" name="prjsubmitdescription">
        <input type="button" value="Cancel" onclick="$('#popupoverlay').hide(); $('#prjpopupbox').hide(); $('#prjname').hide(); $('#prjdescription').hide(); $('#prjversion').hide(); $('#prjrelease').hide();">
    </td>
</tr>

和 PHP:

//Did the user change the Project Description
if (isset($_POST['prjsubmitdescription'])) 
{
//Is the input empty
if (!trim($_POST['prjdescription']))
{
    //Input is empty
    echo('<script>senderror("Please enter a valid Project Description");</script>');
} else {

    //Input isnt empty, do stuff
    $url = geturlext();
    $prjdescription = mysql_real_escape_string(trim($_POST['prjdescription']));

    //Connect and change description
    dbconnect();

    $updatequery = mysql_query("UPDATE projects SET description = '$prjdescription' WHERE name = '$url'") or die(mysql_error());
    echo("<script>location.href='index.php?page=" . $url . "'</script>");
}
}

为澄清起见,两个表都在同一个表单标签中,并且 PHP 紧挨着彼此。

Firebug 上没有错误,事实上 Firebug 并没有给我任何东西。除此之外,我确信这是我忽略的一些非常小的错字。

4

2 回答 2

1

我找到了解决这个问题的方法:

在项目名称编辑 PHP 中重命名变量 '$prjname' 可解决此问题。

看起来有一个与 $_POST (['prjname']) 同名的变量 ($prjname) 返回一个空字符串或 null 字符串。不知道为什么。

感谢那些试图提供帮助的人

编辑:实际上,如果我只更改变量名称($prjname),我会再次收到错误 - 它仅在我更改 $_POST 名称时修复......奇怪。

于 2012-10-16T03:04:54.493 回答
-1

看上面问题的描述,我们可以得出结论,表单元素必须封装在表单标签中,然后只有表单数据会被发送到服务器。

因此,作为您的问题的解决方案,您需要在表单标签中定义输入元素。

于 2012-10-16T02:44:53.270 回答