在用户创建表单中,我有一个元素,它是一个下拉列表,其中role_type(即admin)可以分配给用户。
我不确定如何从下拉列表中提取值并将其设置在“用户”表中,因为数据库中的表采用数字,但用户将从下拉列表中选择值。
下拉列表中只填充了两列“RoleTypeCode”(自动递增)和“Role_Title”(用于填充下拉列的列)。
我想要更新的表是引用RoleTypeCode。
USER:( UserRecordID(PK - AutoIncrement),Forename,Surname,Email, RoleTypeCode(FK))
Role_Type:( RoleTypeCode(PK - AutoIncrement),Role_Title)
到目前为止,我有:
$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';
}
}
不确定如何迎合role_title
任何帮助将不胜感激!! :)
更新:我正在寻找的流程是 用户点击提交按钮后。尝试从下拉列表中提取信息并将其设置在users表中。一旦用户点击“提交”
,上面的代码就是提交文件答案 0 :(得分:1)
使用以下内容填充下拉列表
<?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
用于使用RoleTypeCode
值更新,该值为FK到USER
答案 1 :(得分:1)
我不确定如何从下拉菜单中提取值并将其设置在&#39;用户&#39; table,因为数据库中的表采用数字,但用户将从下拉列表中选择值。
下拉列表中只填充了两列&#39; RoleTypeCode&#39;这是自动递增的&#39; Role_Title&#39;这是用于填充下拉列的列。
当您使用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']
));
答案 2 :(得分:0)
如果我理解你的问题,你可以用AJAX完成你想要的东西 - 听起来很复杂,但不是。但是,它在前端处理。
以下是获取AJAX基础知识的一些好帖子: