PHP 使用输入值更新
PHP update using input value
我不断收到以下错误,无法弄清楚出了什么问题。
Notice: Undefined index: name in C:\xampp\htdocs\FYP\resProcessing.php on line 99
错误与以下行有关:
$name = $_POST['name'];
下面是我的代码:
if ($quick_check != 0){
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
$id = $row['id'];
$tablenum = $row['tablenum'];
$avail = $row['avail'];
$spots .= 'You just reserved table '.$tid.'.<br />';
$spots .= 'You only have 8 minutes to finish or your reservation will expire and the table will open up to other people.<br />';
}
$availNow = $avail - $num;
$sql = "UPDATE available SET avail='$availNow' WHERE id='$id' LIMIT 1";
$query = mysqli_query($connect, $sql);
$sql = "INSERT INTO reserves(tablenumber,numseats,restime) VALUES ('$tablenum','$num',now())";
$query = mysqli_query($connect, $sql);
$reserveID = mysqli_insert_id($connect);
$spots .= '<form name="confirmform" id="confirmform" method="post" onSubmit="return false;">';
$spots .= 'Full Name: <input type="text" name="name" id="name" required autofocus placeholder="Your Name" pattern="[a-zA-Z]+{3,}" title="Please enter your full name."></br>';
// hidden field holds the table name
$spots .= '<input id="tableNumber" type="hidden" value="'.$tablenum.'">';
// hidden field holds the number of seats
$spots .= '<input id="numSeats" type="hidden" value="'.$num.'">';
// hidden field holds the reserve insert id
$spots .= '<input id="reserveID" type="hidden" value="'.$reserveID.'">';
// On submit call js function
$spots .= '<button id="confirmbtn" onClick="confirmSeats();updateInfo();">Make Reservations</button></br>';
$name = $_POST['name'];
$sql = "UPDATE available SET name='$name' WHERE id='$id' LIMIT 1";
$query = mysqli_query($connect, $sql);
$spots .= '</form>';
$spots .= '<button id="cancelbtn" onClick="cancelReserve('.$reserveID.')">Cancel Reservation</button>';
} else {
$spots .= "Sorry, someone just reserved those. Try another table";
$reserveID = "open";
}
echo "$spots|$reserveID";
exit();
}
如果有人能提供帮助,我将不胜感激。谢谢!
原因是POST请求没有包含name
参数。
或者您的 HTTP 请求类型不是 POST。
尝试$name = $_REQUEST['name'];
——它也会考虑 GET 变量(和 cookie)。
如果它没有帮助,请修复您的客户端(无论是 HTML 表单,JavaScript 还是其他)。
您还可以检查 POST 变量是否已定义 ,然后再尝试访问它 ,例如:
if (isset($_POST['name']))
{
$name = $_POST['name'];
}
else
{
echo "Name is required";
// ...
}
信息:
听起来 $_POST['name']
没有定义。您应该验证它是否是,如果不是,您应该有一些逻辑来处理这种情况。您可以使用 PHP isset() 检查是否 $_POST['name']
"is set".
警告:
其他人可能会建议使用 $_REQUEST
,以防您的变量也可能设置在 $_GET
上,但您应该先了解 RESTful API 的工作原理回退到使用 $_REQUEST
,因为可能存在可能受到影响的业务逻辑 and/or 安全考虑。
奖金:
您可能还想看看一些 PHP 框架,例如 Laravel。
我不断收到以下错误,无法弄清楚出了什么问题。
Notice: Undefined index: name in C:\xampp\htdocs\FYP\resProcessing.php on line 99
错误与以下行有关:
$name = $_POST['name'];
下面是我的代码:
if ($quick_check != 0){
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
$id = $row['id'];
$tablenum = $row['tablenum'];
$avail = $row['avail'];
$spots .= 'You just reserved table '.$tid.'.<br />';
$spots .= 'You only have 8 minutes to finish or your reservation will expire and the table will open up to other people.<br />';
}
$availNow = $avail - $num;
$sql = "UPDATE available SET avail='$availNow' WHERE id='$id' LIMIT 1";
$query = mysqli_query($connect, $sql);
$sql = "INSERT INTO reserves(tablenumber,numseats,restime) VALUES ('$tablenum','$num',now())";
$query = mysqli_query($connect, $sql);
$reserveID = mysqli_insert_id($connect);
$spots .= '<form name="confirmform" id="confirmform" method="post" onSubmit="return false;">';
$spots .= 'Full Name: <input type="text" name="name" id="name" required autofocus placeholder="Your Name" pattern="[a-zA-Z]+{3,}" title="Please enter your full name."></br>';
// hidden field holds the table name
$spots .= '<input id="tableNumber" type="hidden" value="'.$tablenum.'">';
// hidden field holds the number of seats
$spots .= '<input id="numSeats" type="hidden" value="'.$num.'">';
// hidden field holds the reserve insert id
$spots .= '<input id="reserveID" type="hidden" value="'.$reserveID.'">';
// On submit call js function
$spots .= '<button id="confirmbtn" onClick="confirmSeats();updateInfo();">Make Reservations</button></br>';
$name = $_POST['name'];
$sql = "UPDATE available SET name='$name' WHERE id='$id' LIMIT 1";
$query = mysqli_query($connect, $sql);
$spots .= '</form>';
$spots .= '<button id="cancelbtn" onClick="cancelReserve('.$reserveID.')">Cancel Reservation</button>';
} else {
$spots .= "Sorry, someone just reserved those. Try another table";
$reserveID = "open";
}
echo "$spots|$reserveID";
exit();
}
如果有人能提供帮助,我将不胜感激。谢谢!
原因是POST请求没有包含name
参数。
或者您的 HTTP 请求类型不是 POST。
尝试$name = $_REQUEST['name'];
——它也会考虑 GET 变量(和 cookie)。
如果它没有帮助,请修复您的客户端(无论是 HTML 表单,JavaScript 还是其他)。
您还可以检查 POST 变量是否已定义 ,然后再尝试访问它 ,例如:
if (isset($_POST['name']))
{
$name = $_POST['name'];
}
else
{
echo "Name is required";
// ...
}
信息:
听起来 $_POST['name']
没有定义。您应该验证它是否是,如果不是,您应该有一些逻辑来处理这种情况。您可以使用 PHP isset() 检查是否 $_POST['name']
"is set".
警告:
其他人可能会建议使用 $_REQUEST
,以防您的变量也可能设置在 $_GET
上,但您应该先了解 RESTful API 的工作原理回退到使用 $_REQUEST
,因为可能存在可能受到影响的业务逻辑 and/or 安全考虑。
奖金:
您可能还想看看一些 PHP 框架,例如 Laravel。