[英]HTML form not updating mySQL through PHP file
我不太確定發生了什么,因為我在此頁面上遵循與網站上其他幾個頁面相同的實現概念。 由於某些原因,此頁面將不會更新數據庫。 它不會引發任何錯誤或任何錯誤,只是不會更新用戶信息。
HTML在頂部顯示一個文本框和單選按鈕,因此管理員用戶可以鍵入名稱並選擇是升級,降級,激活還是停用在文本框中輸入的帳戶。 提交后,代碼不會對我大喊大叫,而是什么也不做。 我嘗試了幾種不同的方法來執行此操作,但是無論它不更新數據庫是什么。
這是HTML文件(簡稱):
<?php include_once ($_SERVER['DOCUMENT_ROOT'] . '/public_html/templates/areadmin.php');
if(isset($_POST['user']))
{
checkfunc();
}
else
{
?>
<!-- Contents of the page-->
<div class="container2">
<div align="center"><br/><br/>
<div id="box1"><br/><br/><br/>
<form action="?checkfunc" style="display:inline; margin:2px;" method="post">
<input type="text" autocomplete="off" size="15" placeholder="Username" name="user"><br/>
<input type="radio" name="act" value="promote">Promote
<input type="radio" name="act" value="demote">Demote
<input type="radio" name="act" value="activate">Activate
<input type="radio" name="act" value="deactivate">Deactivate
<br/><input type="submit" value="Submit">
</form>
<?php include_once ($_SERVER['DOCUMENT_ROOT'] . '/public_html/PHP/action.php'); listmembers($db_handle); ?>
</table><br/><br/><br/><br/>
</div>
</div>
</div>
<?php
}
function checkfunc()
{
$selected = $_REQUEST['act'];
if($selected == "promote")
{
promote($db_handle);
}
elseif($selected == "demote")
{
demote($db_handle);
}
elseif($selected == "activate")
{
activate($db_handle);
}
elseif($selected == "deactivate")
{
deactivate($db_handle);
}
}
?>
PHP文件中的功能:
$db_handle = mysqli_connect($server, $user_name, $pass_word, $database);
//Date: June 25, 2015
//Description: promotes a user to admin
function promote($db_handle)
{
//Grabs info from HTML
$user = $_POST['user'];
//Updates user to admin
mysqli_query($db_handle, "UPDATE `user` SET isAdmin = 1 WHERE username = '$user'");
header ("Location: /public_html/HTML/memberlist.html");
}
//Date: June 25, 2015
//Description: demotes a user to standard
function demote($db_handle)
{
//Grabs info from HTML
$user = $_POST['user'];
if($user != $_SESSION['username'] && $user != "admin")
{
//Updates user to admin
mysqli_query($db_handle, "UPDATE `user` SET isAdmin = 0 WHERE username = '$user'");
header ("Location: /public_html/HTML/memberlist.html");
}
else
{
echo "nope.";
}
}
//Date: June 25, 2015
//Description: activates an inactive account
function activate($db_handle)
{
//Grabs info from HTML
$user = $_POST['user'];
//Updates user to admin
mysqli_query($db_handle, "UPDATE `user` SET isActive = 1 WHERE username = '$user'");
header ("Location: /public_html/HTML/memberlist.html");
}
function deactivate($db_handle)
{
//Grabs info from HTML
$user = $_POST['user'];
//Updates user to admin
mysqli_query($db_handle, "UPDATE `user` SET isActive = 0 WHERE username = '$user'");
header ("Location: /public_html/HTML/memberlist.html");
}
誰能告訴我為什么數據庫不接受我的更新語句?
更新:
通過錯誤處理,它告訴我$ db_handle在.php函數中未定義並且為null,但是.php中有十幾個函數,並且所有這些函數都將$ db_handle作為參數並可以工作。 甚至listmembers($ db_handle)都在同一.html上使用,並且沒有給出錯誤。
我通過在.php文件中創建一個新函數來檢查需要運行的函數並將其傳遞給全局變量$ db_handle來解決了該問題。
HTML:
<?php include_once ($_SERVER['DOCUMENT_ROOT'] . '/public_html/templates/areadmin.php');
if(isset($_POST['user']))
{
checkfunc();
}
else
{
?>
<!-- Contents of the page-->
<div class="container2">
<div align="center"><br/><br/>
<div id="box1"><br/><br/><br/>
<form action="?checkfunc" style="display:inline; margin:2px;" method="post">
<input type="text" autocomplete="off" size="15" placeholder="Username" name="user"><br/>
<input type="radio" name="act" value="promote">Promote
<input type="radio" name="act" value="demote">Demote
<input type="radio" name="act" value="activate">Activate
<input type="radio" name="act" value="deactivate">Deactivate
<br/><input type="submit" value="Submit">
</form>
</div>
</div>
</div>
<?php
}
function checkfunc()
{
include_once ($_SERVER['DOCUMENT_ROOT'] . '/public_html/PHP/action.php');
checkfunction($db_handle);
}
?>
PHP:
//Author: Lance Rainey
//Date: June 25, 2015
//Description: promotes a user to admin
function checkfunction()
{
global $db_handle;
$selected = $_REQUEST['act'];
if($selected == "promote")
{
promote($db_handle);
}
elseif($selected == "demote")
{
demote($db_handle);
}
elseif($selected == "activate")
{
activate($db_handle);
}
elseif($selected == "deactivate")
{
deactivate($db_handle);
}
}
//Author: Lance Rainey
//Date: June 25, 2015
//Description: promotes a user to admin
function promote($db_handle)
{
//Grabs info from HTML
$user = $_POST['user'];
$query = "UPDATE `user` SET isAdmin = 1 WHERE username = '$user'";
//Updates user to admin
mysqli_query($db_handle, $query) or die(mysqli_error($db_handle));
header ("Location: /public_html/HTML/memberlist.html");
}
//Author: Lance Rainey
//Date: June 25, 2015
//Description: demotes a user to standard
function demote($db_handle)
{
//Grabs info from HTML
$user = $_POST['user'];
$query = "UPDATE `user` SET isAdmin = 0 WHERE username = '$user'";
if($user != $_SESSION['username'] && $user != "admin")
{
//Updates user to admin
mysqli_query($db_handle, $query) or die(mysqli_error($db_handle));
header ("Location: /public_html/HTML/memberlist.html");
}
else
{
echo "nope.";
}
}
//Author: Lance Rainey
//Date: June 25, 2015
//Description: activates an inactive account
function activate($db_handle)
{
//Grabs info from HTML
$user = $_POST['user'];
$query = "UPDATE `user` SET isActive = 1 WHERE username = '$user'";
//Updates user to admin
mysqli_query($db_handle, $query) or die(mysqli_error($db_handle));
header ("Location: /public_html/HTML/memberlist.html");
}
//Author: Lance Rainey
//Date: June 25, 2015
//Description: deactivates an active account
function deactivate($db_handle)
{
//Grabs info from HTML
$user = $_POST['user'];
$query = "UPDATE `user` SET isActive = 0 WHERE username = '$user'";
//Updates user to admin
mysqli_query($db_handle, $query) or die(mysqli_error($db_handle));
header ("Location: /public_html/HTML/memberlist.html");
}
謝謝大家的建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.