Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL PDO从下拉列表功能插入值_Php_Mysql_Pdo - Fatal编程技术网

Php MYSQL PDO从下拉列表功能插入值

Php MYSQL PDO从下拉列表功能插入值,php,mysql,pdo,Php,Mysql,Pdo,在用户创建表单中,我有一个元素,它是一个下拉列表,其中可以为用户分配一个角色类型,即admin 我不知道如何从下拉列表中提取值并将其设置在“用户”表中,因为数据库中的表采用了一个数字,但是用户将从下拉列表中选择值 从中填充下拉列表的表只有两列“RoleTypeCode”(自动递增)和“Role_Title”(用于填充下拉列表的列) 我希望更新的表引用了RoleTypeCode 用户:UserRecordIDPK-自动递增、名字、姓氏、电子邮件、RoleTypeCodeFK 角色类型:RoleTy

在用户创建表单中,我有一个元素,它是一个下拉列表,其中可以为用户分配一个角色类型,即admin

我不知道如何从下拉列表中提取值并将其设置在“用户”表中,因为数据库中的表采用了一个数字,但是用户将从下拉列表中选择值

从中填充下拉列表的表只有两列“RoleTypeCode”(自动递增)和“Role_Title”(用于填充下拉列表的列)

我希望更新的表引用了RoleTypeCode

用户:UserRecordIDPK-自动递增、名字、姓氏、电子邮件、RoleTypeCodeFK

角色类型:RoleTypeCodePK-自动递增,角色标题

到目前为止,我已经:

$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';
    }
}
不知道如何迎合角色头衔

任何帮助都将不胜感激!!:


更新:我正在寻找的过程是在用户点击提交按钮之后。尝试从下拉列表中提取信息并将其设置在用户表中。以上代码用于用户单击“提交”后的提交文件。

使用以下内容填充下拉列表

<?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";
?>
 <form action="xxx">
 form stuff
 <?php  echo $SelectHtml ?>
 more form stuff
要显示的HTML下拉列表

<?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";
?>
 <form action="xxx">
 form stuff
 <?php  echo $SelectHtml ?>
 more form stuff

用于使用RoleTypeCode值进行更新,该值在USER中是FK到UserRecordID的

如果我正确理解了您的问题,那么可以使用AJAX实现您想要的功能—这听起来很复杂,但实际上并不复杂。但是,它是在前端处理的

以下是一些很好的文章,可以帮助您了解AJAX的基本知识:

我不知道如何从下拉列表中提取值并将其设置在“用户”表中,因为数据库中的表采用了一个数字,但是用户将从下拉列表中选择值

从中填充下拉列表的表只有两列“RoleTypeCode”(自动递增)和“Role_Title”(用于填充下拉列表的列)

您使用RoleTypeCode的主键作为下拉值,而使用Role_标题作为显示值。然后,在提交表单时,只需使用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>

哦,谢谢你,但我已经设法让你下来了。我只是对如何从下拉列表中获取值并在用户单击submit时将其添加到用户表感到困惑。问题中的代码是针对adduser_submit文件的,这听起来是一个很好的方法。我是在数据库中还是使用html定义显示值。我正在使用phpMyAdmin。谢谢你们真是太棒了。我试试看,让你知道!:谢谢@user90210:选择一种标准格式来命名表和列也很好。我建议使用小写加下划线的单词分隔符,效果很好:D@prodigitalson注意,我已经将所有表名和列更改为标准格式。非常感谢你:D