最普通的form undefined index error.

永涛 2012-10-09 02:23:27
我先稍微讲解一下,我有三个PHP的FORM,叫viewMember.php, editMember.php, editMemberAction.php,现在有一写undefined的问题。
请先看完我三个文件,分别是viewMember.php

<html>
<form name="viewMemberForm" method="post">
<center>
<h1>View Member Data</h1><br>
<table border="1" cellspacing="0" cellpadding="5" bordercolor="green">
<tr>
<td>Search by:</td>
<td><select name="searchBy">
<option value="MemberID">Member ID
<option value="FirstName">First Name
<option value="LastName">Last Name
</select>
</td>
<td rowspan="2"><input type="submit" name="search" value="Search">    
<input type="submit" name="showAll" value="Show All">
</td>
</tr>
<tr>
<td>Keywords:</td>
<td><input type="text" name="keywords" onfocus="setStyle(this)"></td>
</tr>
</table>
<?php
include("viewMemberAction.php");
?>
</form>
</html>

这个editMember.php
<?php

include ("connect.php");

?>
<html>
<head>
<script type="text/javascript">//allow alphabets only
var alphaOnly = /[A-Za-z]/g; //fname,lname,mname
function restrictCharacters(myfield, e, restrictionType) {
if (!e) var e = window.event
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
var character = String.fromCharCode(code);
// if they pressed esc... remove focus from field...
if (code == 27) { this.blur(); return false; }
// ignore if they are press other keys
// strange because code: 39 is the down key AND ' key...
// and DEL also equals .
if (!e.ctrlKey && code != 9 && code != 8 && code != 36 && code != 37 && code != 38 && (code != 39 || (code == 39 && character == "'")) && code != 40)
{
if (character.match(restrictionType))
return true;
else
return false;
}
}
</script>
<SCRIPT TYPE="text/javascript">//allow number only
<!--
// copyright 1999 Idocs, Inc. http://www.idocs.com
// Distribute this script freely but keep this notice in place
function numbersonly(myfield, e, dec)
{
var key;
var keychar;

if (window.event)
key = window.event.keyCode;
else if (e)
key = e.which;
else
return true;
keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) ||
(key==9) || (key==13) || (key==27) )
return true;

// numbers
else if ((("0123456789").indexOf(keychar) > -1))
return true;

// decimal point jump
else if (dec && (keychar == "."))
{
myfield.form.elements[dec].focus();
return false;
}
else
return false;
}

//-->
</SCRIPT>
<title>
Edit Member
</title>
</head>
<body>

<h1>Edit Member's Information</h1><br>

<?php

include("connect.php");


echo "<form name='editMemberForm' method='POST' action='editMemberAction.php'>";
$memberID = $_GET["memberID"];
echo "<div align='right' ><input type='submit' name='Cancel' value='Back to View Member'></div>";
echo "<br>";



$query = "SELECT * FROM member_register WHERE memberID = '$memberID'";
$result = $db->query($query);

$row = $result->fetch_assoc();

echo "<tr>";
echo "<td>";
echo "<table border='3' align='left' cellpadding='5' cellspacing='0' bordercolor='black' bgcolor='yellow' width='50%' rules='all'>";
echo "<tr>";
echo "<td align='right' width='35px'><b>Member ID:</td>";
echo "<td><input type='hidden' name='memberID' value='".$memberID."'>".$memberID."</td>";
echo "</tr>";

echo "<tr>";
echo "<td align='right' width='35px'><b>FirstName:</td>";
echo "<td><input type='text' name='FirstName' onkeypress='return restrictCharacters(this, event, alphaOnly);' value='".$row["firstName"]."'></td>";
echo "</tr>";

echo "<tr>";
echo "<td align='right' width='35px'><b>LastName:</td>";
echo "<td><input type='text' name='LastName' onkeypress='return restrictCharacters(this, event, alphaOnly);' value='".$row["lastName"]."'></td>";
echo "</tr>";

echo "<tr>";
echo "<td align='right' width='35px'><b>Job Type:</td>";
echo "<td width='200px'><input type='text' maxlength='65' name='JobType' value='".$row["jobType"]."'></td>";
echo "</tr>";


echo "<tr>";
echo "<td align='right' width='35px'><b>Gender:</td>";
echo "<td><select name='Gender'>";


$typeArray = array("Male","Female");
for($i = 0; $i < 2 ; $i++)
{
if($row["gender"] == $typeArray[$i])
{
echo "<option selected>".$typeArray[$i];
}
else
{
echo "<option>".$typeArray[$i];
}
}

echo "</select></td>";
echo "</tr>";

echo "<tr>";
echo "<td align='right' width='35px'><b>I.C No.:</td>";
echo "<td><input type='text' name='ic' size='15' onKeyPress='return numbersonly(this, event)' value='".$row["iCNo"]."'>";
echo "</tr>";

echo "<tr>";
echo "<td align='right' width='35px'><b>Address:</td>";
echo "<td width='200px'><input type='text' maxlength='5' size='65' name='Address' value='".$row["address"]."'></td>";
echo "</tr>";

echo "<tr>";
echo "<td align='right' width='35px'><b>Zipcode:</td>";
echo "<td width='200px'><input type='text' maxlength='5' name='ZipCode' onKeyPress='return numbersonly(this, event)' value='".$row["zipcode"]."'></td>";
echo "</tr>";

echo "<tr>";
echo "<td align='right' width='35px'><b>Handphone Number:</td>";
echo "<td width='200px'><input type='text' maxlength='12' name='PhoneNumber' onKeyPress='return numbersonly(this, event)' value='".$row["handphoneNo"]."'></td>";
echo "</tr>";

echo "<tr>";
echo "<td align='right' width='35px'><b>Telefon Number:</td>";
echo "<td width='200px'><input type='text' maxlength='9' name='TelefonNumber' onKeyPress='return numbersonly(this, event)' value='".$row["telefonNo"]."'></td>";
echo "</tr>";

echo "<tr>";
echo "<td align='right' width='35px'><b>Fax Number:</td>";
echo "<td width='200px'><input type='text' maxlength='11' name='Fax' onKeyPress='return numbersonly(this, event)' value='".$row["faxNo"]."'></td>";
echo "</tr>";

echo "<tr>";
echo "<td align='right' width='35px'><b>Email:</td>";
echo "<td width='200px'><input type='text' maxlength='65' name='Email' value='".$row["email"]."'></td>";
echo "</tr>";


echo "</table>";
echo "</td>";

echo "<td>";

echo "<table border='3' align='right' valign='top' cellpadding='5' cellspacing='0' bordercolor='white' bgcolor='orange' width='50%' rules='all'>";

echo "<tr>";
echo "<td align='right' width='35px'><b>MortPayment:</td>";
echo "<td width='200px'>RM :<input type='text' maxlength='65' name='MortPayment' value='".$row["mortPayment"]."'></td>";
echo "</tr>";

echo "<tr>";
echo "<td align='right' width='35px'><b>Current Redeem Point:</td>";
echo "<td width='200px'>RM :<input type='text' maxlength='65' name='MortPayment' value='".$row["redeemPoint"]."'><br>Add:<input type='number' step='4' min='4'></td>";
echo "</tr>";

echo "<tr>";
echo "<td align='right' width='35px'><b>Borrowed Book Histories:</td>";
echo "<td width='200px'></td>";
echo "</tr>";

echo "</table>";

echo "</td>";

echo "</tr>";
echo "<tr>";
echo "<td colspan='2' align='center'><input type='submit' name='update' value='Confirm'></td>";
echo "</tr>";
?>
</form>

</body>
</html>

以及最后这个editMemberAction.php

<?php
include("connect.php");

$memberID = $_POST["memberID"];
$FirstName = $_POST["FirstName"];
$LastName = $_POST["LastName"];
$sex = $_POST["sex"];
$ic = $_POST["ic"];
$address = $_POST["Address"];
$zipcode = $_POST["ZipCode"];
$phoneNum = $_POST["phoneNumber"];
$telefonNum = $_POST["telefonNumber"];
$fax = $_POST["fax"];
$email = $_POST["email"];
$jobtype = $_POST["jobtype"];
$mortpayment = $_POST["redeempoint"];
$defaultRedeemPoint = $_POST["defaultRedeemPoint"];

if(isset($_POST["update"]) == "Confirm")
{
$query = "UPDATE member_register SET memberID = '$memberID', firstName = '$FirstName', lastName = '$LastName', gender = '$sex', iCNo = '$ic', address = '$address', zipcode = '$zipcode', handphoneNo = '$phoneNum', telefonNo = '$telefonNum', faxNo = '$fax', email = '$email', jobType= '$jobtype', mortPayment = '$mortpayment', redeemPoint='$defaultRedeemPoint' WHERE memberID = '$memberID'";
$result = $db->query($query);

echo "<script language='javascript'>alert('Update success.')</script>";
echo "<script language='javascript'>window.location='viewMember.php'</script>";

}
if(isset($_POST["Cancel"]) == "Back to View Member")
{
echo "<script>alert('Now redirect to View Member Information.')</script>";
echo "<script language='javascript'>window.location='viewMember.php'</script>";
}
$db->close();
?>

当我在editMember.php按 confirm button 之后是能够显示成功提交的,但是有问题出现,如下


Notice:Undefined index : sex in C:\xampp\htdocs\cms\editMemberAction.php on line 7
Notice:Undefined index : phoneNumber in C:\xampp\htdocs\cms\editMemberAction.php on line 11
Notice:Undefined index : telefonNumber in C:\xampp\htdocs\cms\editMemberAction.php on line 12
Notice:Undefined index : fax in C:\xampp\htdocs\cms\editMemberAction.php on line 13
Notice:Undefined index : email in C:\xampp\htdocs\cms\editMemberAction.php on line 14
Notice:Undefined index : jpbtype in C:\xampp\htdocs\cms\editMemberAction.php on line 15
Notice:Undefined index : redeempoint in C:\xampp\htdocs\cms\editMemberAction.php on line 16
Notice:Undefined index : defaultRedeemPoint in C:\xampp\htdocs\cms\editMemberAction.php on line 17
...全文
274 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
永涛 2012-10-09
  • 打赏
  • 举报
回复
我找到错误了,原因是editMemer.php里的名字和editMemberAction.php里的POST过去的名字不一样,都怪自己粗心,谢谢各位。
永涛 2012-10-09
  • 打赏
  • 举报
回复
只剩下两个月的时间了,希望能够在一个月内熟悉PHP,还望各位大大提点小弟的困惑。
xuzuning 2012-10-09
  • 打赏
  • 举报
回复
你的表单与处理程序不配套!

错误信息提及的键名均未在表单中出现
请调整到一致,不可简单的回避,否则将造成数据损坏

比如 sex 在表中和表单中都对应 gender,令 $sex = $_POST["gender"]; 即可
永涛 2012-10-09
  • 打赏
  • 举报
回复
isset

如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。

网上的资料是这么说的,代表变量是NULL?
永涛 2012-10-09
  • 打赏
  • 举报
回复
$sex = isset($_POST["sex"])?"test is define!":"test is undefined!";
echo "isset:$sex\r\n";

我本身用了以上方式作测试,返回值居然是"test is undefined!",这代表返回值是FALSE的,为什么会这样呢?
永涛 2012-10-09
  • 打赏
  • 举报
回复
不是很明白,我用$phoneNum做测试,试过$phoneNum isset($_POST["phoneNumber"]);
也试过$phoneNum = isset($_POST["phoneNumber"])?$_POST['phoneNumber']:false;

确实没有错误,但是没有返回值了,以上资料只要按CONFIRM之后就会消失变成空(NULL)。
acabin 2012-10-09
  • 打赏
  • 举报
回复
<?php
include("connect.php");

$memberID = $_POST["memberID"];
$FirstName = $_POST["FirstName"];
$LastName = $_POST["LastName"];
$sex = $_POST["sex"];
$ic = $_POST["ic"];
$address = $_POST["Address"];
$zipcode = $_POST["ZipCode"];
$phoneNum = $_POST["phoneNumber"];
$telefonNum = $_POST["telefonNumber"];
$fax = $_POST["fax"];
$email = $_POST["email"];
$jobtype = $_POST["jobtype"];
$mortpayment = $_POST["redeempoint"];
$defaultRedeemPoint = $_POST["defaultRedeemPoint"];

你的$_POST数组不完备,对应下标的数据没有,所以产生了notice
解决方案是:
$sex = isset($_POST['sex']) ? $_POST['sex'] : false; //false是默认值

你也可以自己写个方法进行处理

20,358

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧