我想創建一個網站,允許人們檢查他們有的當前「積分」以及他們收到這些積分的原因。 E.G:拿出5分拿出垃圾,拿到10分洗碗。創建一個表,點擊後,更新文本文件
儘管我已經爲用戶名和密碼設置了實際積分系統和數據庫,但我無法爲自己的生活制定出如何實現管理員添加積分的前端方式,並給出了原因,這將顯示在他登錄後登錄到用戶頁面 任何幫助將不勝感激 謝謝
我想創建一個網站,允許人們檢查他們有的當前「積分」以及他們收到這些積分的原因。 E.G:拿出5分拿出垃圾,拿到10分洗碗。創建一個表,點擊後,更新文本文件
儘管我已經爲用戶名和密碼設置了實際積分系統和數據庫,但我無法爲自己的生活制定出如何實現管理員添加積分的前端方式,並給出了原因,這將顯示在他登錄後登錄到用戶頁面 任何幫助將不勝感激 謝謝
您需要一個窗體(在html中)有一個下拉的用戶,一個文本框的原因和文本帶提交按鈕的點框。點擊後,它將返回到服務器上的一個php文件,該文件使用$_GET
或$_POST
獲取信息,然後使用mysqli_
php函數更新mysql數據庫。然後,php文件可以顯示成功/失敗以及任何其他可能想要顯示回管理員的信息。
希望這些步驟,你可以使用谷歌,並找到相應的代碼,實際上使得它發生,如果你被卡住,回到這裏,告訴你有什麼到目前爲止,人們會很樂意提供幫助。
編輯:這是聖誕節,我覺得寫一些代碼,所以這是一個粗略的開始,你的工作。有很多,你將能夠改善。您還需要創建一份報告,以顯示它的進展情況,但在這裏可能有點多。祝你好運,享受。
<?php
/*
This script expects the following to be in place:
1. A mySQL server on the same server as the web server running this script
2. A database called 'tasks' with a username called 'tasks' and a password of 'YourPassWordHere'
3. The following table within the database (SQL included here so can copy/paste into phpMyAdmin to create it:
USE `tasks`;
DROP TABLE IF EXISTS `transaction`;
CREATE TABLE IF NOT EXISTS `transaction` (
`id_transaction` int(11) NOT NULL AUTO_INCREMENT,
`id_child` int(11) NOT NULL,
`id_task` int(11) NOT NULL,
`id_points` int(11) NOT NULL,
`datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id_transaction`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
*/
function echoHTMLHead($title) {
echo '
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="viewport" content="width=device-width, initial-scale=1.25">
<style type="text/css">
#main {
width: 230px;
}
#myForm1 {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
font-size: medium;
background-color: #FFFFCC;
border: medium inset #808000;
border-radius: 8px;
width: 95%;
}
#myForm2 {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
font-size: medium;
background-color: #FFFFBB;
border: medium inset #808000;
border-radius: 8px;
width: 95%;
}
#myForm3 {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
font-size: medium;
background-color: #FFFFAA;
border: medium inset #808000;
border-radius: 8px;
width: 95%;
}
#error {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
font-size: medium;
color:red;
text-align:center;
font-style:normal;
font-weight:bold;
}
#success {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
font-size: medium;
color:green;
text-align:center;
font-style:normal;
font-weight:bold;
}
</style>
<title>'.$title.'</title>
</head>
';
}
/* Main part starts here */
// first we check to see if we have data or is this the first time the page is called
if ((isset($_POST['id_child'])) && (isset($_POST['id_task'])) && (isset($_POST['txtPoints'])) && (isset($_POST['txtAdminID']))) {
// We have data come from the form so we process it.
// Get the data recieved and put it into variables
$id_child = trim($_POST['id_child']);
$id_task = trim($_POST['id_task']);
$txtPoints = trim($_POST['txtPoints']);
$txtAdminID = trim($_POST['txtAdminID']);
/* Now check if admin ID is what it should be and just in case someone see's this code, we're going to encrypt the AdminID and check it against a pre- encrypted code
To create a hash create a seperate php file with
<?php
$txtAdminID = "12345";
echo hash('sha256', $txtAdminID);
?> */
$txtKnownAdminHash = "5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5"; // which for the example code is the hash of 12345
$txtHashedAdminID = hash('sha256', $txtAdminID);
if ($txtKnownAdminHash != $txtHashedAdminID) {
// didn't match so we display an error but display the form again to allow admin to try again
echoHTMLHead("Tasks and Rewards - Data entry error");
?>
<body>
<div id="main">
<p id="error">You are not authorised!!</p>
<form id="myForm1" accept-charset="utf8" target="_self" enctype="multipart/form-data" autocomplete="on" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="myForm1">
<label id="lblPerson" for="id_child" form="myForm1">Person </label>
<select required id="id_child" name="id_child">
<option value="">Select from the list...</option>
<option <?php if ($id_child == "1") echo 'selected '; ?>value="1">Trevor</option>
<option <?php if ($id_child == "2") echo 'selected '; ?>value="2">Patty</option>
<option <?php if ($id_child == "3") echo 'selected '; ?>value="3">Aaron</option>
<option <?php if ($id_child == "4") echo 'selected '; ?>value="4">Elian</option>
</select><br />
<label id="lblTask" for="id_task" form="myForm1">Task </label>
<select required id="id_task" name="id_task">
<option value="">Select from the list...</option>
<option <?php if ($id_task == "1") echo 'selected '; ?>value="1">Wash dishes</option>
<option <?php if ($id_task == "2") echo 'selected '; ?>value="2">Clean room</option>
<option <?php if ($id_task == "3") echo 'selected '; ?>value="3">Put out trash</option>
<option <?php if ($id_task == "4") echo 'selected '; ?>value="4">Mow lawn</option>
<option <?php if ($id_task == "5") echo 'selected '; ?>value="5">Water garden</option>
<option <?php if ($id_task == "6") echo 'selected '; ?>value="6">Special task</option>
</select><br />
<label id="lblPoints" for="txtPoints" form="myForm1">Points </label><input id="txtPoints" value="<?php echo $txtPoints; ?>" autocomplete="on" maxlength="3" size="3" required="required" form="myForm1" name="txtPoints" type="text"><br>
<label id="lblAdminID" for="txtAdminID" form="myForm1">Admin ID </label><input id="txtAdminID" value="" autocomplete="off" maxlength="10" size="10" form="myForm1" name="txtAdminID" type="password"><br>
<input form="myForm1" value="submit" name="Submit" type="submit"><br>
</form>
</div>
</body>
</html>
<?php
}
else {
// We are good to add the info to the database.
// first set some variables for the database connection. You can change these for your system
$servername = "localhost";
$username = "tasks";
$password = "YourPassWordHere";
$dbname = "tasks";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Create the SQL query string to add the data
$sql = "INSERT INTO transaction (id_child, id_task, points)
VALUES ('".$id_child."', '".$id_task."', '".(int)$txtPoints."')";
// Run the SQL query and check result
if ($conn->query($sql) === TRUE) {
$msg = "Details added";
} else {
$msg = "Error: " . $sql . "<br>" . $conn->error;
}
// Close the mySQL connection
$conn->close();
// Get some human readable versions of child and task to display later
switch ($id_child) {
case 1 : $child = "Trevor";
break;
case 2 : $child = "Patty";
break;
case 3 : $child = "Aaron";
break;
case 4 : $child = "Elian";
break;
}
switch ($id_task) {
case 1 : $task = "Wash dishes";
break;
case 2 : $task = "Clean room";
break;
case 3 : $task = "Put out trash";
break;
case 4 : $task = "Mow lawn";
break;
case 5 : $task = "Water garden";
break;
case 6 : $task = "Special task";
break;
}
// we now display the results with a fresh form for next transaction
echoHTMLHead("Tasks and Rewards - Success");
?>
<body>
<div id="main">
<p id="success"><?php echo $msg; ?></p>
<p>
Person: <?php echo $child; ?><br />
Task: <?php echo $task; ?><br />
Points awarded: <?php echo $txtPoints; ?><br />
</p>
<form id="myForm2" accept-charset="utf8" target="_self" enctype="multipart/form-data" autocomplete="on" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="myForm2">
<label id="lblPerson" for="id_child" form="myForm2">Person </label>
<select id="id_child" form="myForm2" name="id_child">
<option selected="" value="0">Select from the list...</option>
<option value="1">Trevor</option>
<option value="2">Patty</option>
<option value="3">Aaron</option>
<option value="4">Elian</option>
</select><br />
<label id="lblTask" for="id_task" form="myForm2">Task </label>
<select id="id_task" form="myForm2" name="id_task">
<option selected="" value="0">Select from the list...</option>
<option value="1">Wash dishes</option>
<option value="2">Clean room</option>
<option value="3">Put out trash</option>
<option value="4">Mow lawn</option>
<option value="5">Water garden</option>
<option value="6">Special task</option>
</select><br />
<label id="lblPoints" for="txtPoints" form="myForm2">Points </label>
<input id="txtPoints" autocomplete="on" maxlength="3" size="3" required="required" form="myForm2" name="txtPoints" type="text"><br>
<label id="lblAdminID" for="txtAdminID" form="myForm2">Admin ID </label>
<input id="txtAdminID" autocomplete="off" maxlength="10" size="10" form="myForm2" name="txtAdminID" type="password"><br>
<input form="myForm2" value="submit" name="Submit" type="submit"><br>
</form>
</div>
</body>
</html>
<?php
}
} // if ((isset($_POST['id_task'])) && (isset($_POST['txtPoints'])) && (isset($_POST['txtAdminID'])))
else {
/* This is the first run of this file so display the initial form for user to complete */
echoHTMLHead("Tasks and Rewards - Data entry");
?>
<body>
<div id="main">
<form id="myForm3" accept-charset="utf8" target="_self" enctype="multipart/form-data" autocomplete="on" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="myForm3">
<label id="lblPerson" for="id_child" form="myForm3">Person
<select required id="id_child" form="myForm3" name="id_child">
<option value="">Select from the list...</option>
<option value="1">Trevor</option>
<option value="2">Patty</option>
<option value="3">Aaron</option>
<option value="4">Elian</option>
</select></label><br />
<label id="lblTask" for="id_task" form="myForm3">Task </label>
<select required id="id_task" form="myForm3" name="id_task">
<option value="">Select from the list...</option>
<option value="1">Wash dishes</option>
<option value="2">Clean room</option>
<option value="3">Put out trash</option>
<option value="4">Mow lawn</option>
<option value="5">Water garden</option>
<option value="6">Special task</option>
</select><br />
<label id="lblPoints" for="txtPoints" form="myForm3">Points </label><input id="txtPoints" autocomplete="on" maxlength="3" size="3" required="required" form="myForm3" name="txtPoints" type="text"><br>
<label id="lblAdminID" for="txtAdminID" form="myForm3">Admin ID </label><input id="txtAdminID" autocomplete="off" maxlength="10" size="10" required="required" form="myForm3" name="txtAdminID" type="password"><br>
<input form="myForm3" value="submit" name="Submit" type="submit"><br>
</form>
</div>
</body>
</html>
<?php
}
?>
非常感謝您的回答,這非常有幫助。關於這段代碼我只有一個問題。當我將id_task鏈接到我的主home.php文件時,它只顯示爲數字(例如1代表第一個任務,而不是實際的第一個任務),我怎樣才能讓它顯示爲實際的措辭?再一次,非常感謝你爲這個代碼,這是一個巨大的幫助 – Anthony
做一些類似於使用switch($ id_task)和幾個case語句的代碼約2/3的方式。它基本上將$ id_task(一個數字)轉換爲$任務一個人類可讀的名字。 – Trevor
你的代碼現在完美運行,一切都運行正常,非常感謝你。只是想知道,是否有可能創建另一個函數,如totalPoints,它基本上將所有id_points一起添加在同一個id_child下 – Anthony
在下面的答案中添加了一些代碼,以便您開始使用 – Trevor