在用户创建表单中,我有一个元素,它是一个下拉列表,其中可以为用户分配角色类型(即admin)。
我不知道如何从下拉列表中提取值并将其设置在"用户"表中,因为数据库中的表需要一个数字,但是用户会从下拉列表选择值。
从中填充下拉列表的表只有两列"RoleTypeCode"(自动递增)和"Role_Title"(用于填充下拉列表)。
我想要更新的表引用了RoleTypeCode。
用户:(用户记录ID(PK-自动增量),名字,姓氏,电子邮件,角色类型代码(FK))
角色类型:(角色类型代码(PK-自动增量),角色标题)
到目前为止,我有:
$forename = $_POST['Forename'];
$surname = $_POST['Surname'];
$email = $_POST['Email'];
$role_title = $_POST['Role_Title'];
/*** connect to database ***/
include "db_conx.php";
try
{
$db_conx = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$db_conx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$insertUser = $db_conx->prepare("INSERT INTO user (Forename, Surname, Email, Role_TypeCode ) VALUES (:forename, :surname, :email, :role_title )");
/*** bind the parameters ***/
$insertUser->bindParam(':forename', $forename, PDO::PARAM_STR);
$insertUser->bindParam(':surname', $surname, PDO::PARAM_STR);
$insertUser->bindParam(':email', $email, PDO::PARAM_STR);
$insertUser->bindParam(':role_title', $role_title, PDO::PARAM_STR);
/*** execute the prepared statement ***/
$insertUser->execute();
/*** success message ***/
$message = 'New user added';
}
catch(Exception $e)
{
/*** check if the email already exists ***/
if( $e->getCode() == 23000)
{
$message = 'This email has already been registered';
}
else
{
/*** fail message incase something went wrong ***/
$message = 'Unable to process your request. Please try again later';
}
}
不知道如何满足角色字幕
任何帮助都将不胜感激!!:)
更新:我要查找的流程是在用户点击提交按钮后的。正在尝试从下拉列表中提取信息,并将其设置在用户表中。上面的代码用于用户单击"提交"后的提交文件
我不知道如何从下拉列表中提取值并将其设置在"用户"表中,因为数据库中的表需要一个数字,但是用户会从下拉列表选择值。
从中填充下拉列表的表只有两列"RoleTypeCode"(自动递增)和"Role_Title"(用于填充下拉列表)。
使用RoleTypeCode
的主键作为下拉值,同时使用Role_Title
作为显示值。然后,当您提交表单时,您只需使用RoleTypeCode
来设置用户的FK值。
所以从本质上讲,你的表单看起来像:
<?php
$stmt = $pdo->prepare('SELECT * FROM Role_Type');
$roles = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<form>
<label>First Name</label>
<input type="text" name="forename" />
<label>Last Name</label>
<input type="text" name="surname" />
<label>Email</label>
<input type="text" name="email" />
<label>Role</label>
<select name="role">
<?php foreach($roles as $role): ?>
<option value="<?php echo $role['RoleTypeCode'] ?>"><?php echo $role['Role_Title'] ?></option>
<?php endforeach; ?>
</select>
</form>
然后,当你收到你的提交时,它会像这样:
$insertStmt = $pdo->prepare(prepare('INSERT INTO user (Forename, Surname, Email, Role_TypeCode ) VALUES (:forename, :surname, :email, :role )');
$insertStmt->execute(array(
':forname' => $_POST['forename'],
':surname' => $_POST['surname'],
':email' => $_POST['email'],
':role' => $_POST['role']
));
使用以下内容填充下拉
<?php
//database connection
$sql = "SELECT * FROM Role_Type";
$db_conx->query($sql); //query as no parameters
//create html for drop down
$SelectHtml = "<select name='Role_Title' id='Role_Title'>'n";//Name and id to suit
while($row = $db_conx->fetch()) {
$SelectHtml .=<optionvalue='".$row[$RoleTypeCode]."'>".$row[$Role_Title]."</option>'n";
}
$SelectHtml .= "<select>'n";
?>
HTML显示下拉
<form action="xxx">
form stuff
<?php echo $SelectHtml ?>
more form stuff
用于在USER 中使用RoleTypeCode
值更新为UserRecordID
如果我正确理解你的问题,你想要的东西可以使用AJAX来实现——这听起来很复杂,但事实并非如此。但是,它是在前端处理的。
以下是一些获得AJAX基础知识的好帖子:
的一个简单例子
更复杂的示例
根据下拉列表1中的选择填充下拉列表2