我的问题是我有一个PHP $_POST
返回null
或空值,我个人认为我的代码没有任何错误(但我知道它在那里)我不能因为我按时间安排,所以真的离它几个小时。所以,我希望有人可以帮助我;)
这就是我所拥有的,基本上:
<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没有给我任何东西。除此之外,我确信这是一个我忽略的小错字。
答案 0 :(得分:1)
我找到了解决这个问题的方法:
在项目名称编辑PHP中重命名变量'$ prjname'修复了这个问题。
似乎拥有一个与$ _POST(['prjname'])同名的变量($ prjname)会返回一个空字符串或空字符串。不知道为什么。
感谢那些试图提供帮助的人
编辑:实际上,如果我只更改变量名称($ prjname),我会再次收到错误 - 它只会在我更改$ _POST名称时修复...奇数。
答案 1 :(得分:-1)
查看上述问题的描述,我们可以得出结论,表单元素必须封装在表单标记中,然后只有表单数据才会发布到服务器。
因此,作为问题的解决方案,您需要在表单标记中定义输入元素。