我在数据库中有两个表,一个是寄存器表,另一个是类型表。 我正在尝试创建一个表单,其中包含一个从'type'表派生的下拉菜单,表单的值将插入'register'表中。当选择一个选项时,该类型的id将被插入到'register'表的外部id字段中,其中实际发布了表单的值。我真的很困惑这个问题。请帮忙。
我的表单看起来像这样
在这里输入代码
<form action="form1.php" method="post">
Name: <input type="text" name="name" /><br/><br/>
Username: <input type="text" name="username" /><br/><br/>
Password: <input type="password" name="password" /><br/><br/>
Email: <input type="text" name="email" /><br/><br/>
You are:
<select name="type" size="3 multiple">
<option value="1" selected="selected">Super admin</option>
<option value="2">Admin</option>
<option value="3">User</option>
</select>
<input type="submit" name="submit" value="Submit" />
</form>
和表格
project
。type
CREATE TABLE IF NOT EXISTS `project`.`type` (
`id` INT NOT NULL AUTO_INCREMENT ,
`type` VARCHAR(45) NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
project
。register
CREATE TABLE IF NOT EXISTS `project`.`register` (
`id` INT NOT NULL ,
`name` VARCHAR(45) NULL ,
`username` VARCHAR(45) NULL ,
`password` VARCHAR(45) NULL ,
`email` VARCHAR(45) NULL ,
`phone` VARCHAR(45) NULL ,
`type_id` INT NOT NULL ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `id_UNIQUE` (`id` ASC) ,
INDEX `fk_register_type1` (`type_id` ASC) ,
CONSTRAINT `fk_register_type1`
FOREIGN KEY (`type_id` )
REFERENCES `project`.`type` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
答案 0 :(得分:0)
您的选择选项的值应该是类型表中的ID。因此,如果项目表中超级用户的ID为10,那么它也应该是选择框中的值。
这样,当您检索下拉框中选择的值时,可以将其作为外键插入到注册表中。
以下是插图:
项目表:
________________________ | id | type | ________________________ | 10 | SuperSuper User | ________________________ | 11 | SuperDuper User | ________________________
你的Html:
<select name="type" size="3 multiple">
<option value="10" selected="selected">SuperSuper User</option>
<option value="11">SuperDuper User</option>
...
...
</select>
答案 1 :(得分:0)
这只是一个想法,它不会起作用。它应该足以帮助你开始。顺便说一下,你实际上不需要“连接”外国ID。是的,在学校他们告诉你,你必须像这样连接FOREIGN KEY (
type_id )
,但你真的不需要,因为DB并不关心它是外键还是只是一个数字
if(isset($_POST["submit"])){
if(empty($_POST["name"])||empty($_POST["username"])||empty($_POST["password"])||empty($_POST["email"])){
echo "Something is wrong";
exit;
}
mysql_query("INSERT INTO register (name, username, password, email, type_id)
VALUES ($_POST[name], $_POST[username], $_POST[password], $_POST[email], $_POST[type])");
}
您是否也想要从DB或静态选择下拉列表中的值,就像现在一样?
编辑:所以,下拉列表需要是动态的......
<select name="type" size="3 multiple">
<?php
$getType = mysql_query("SELECT id, type FROM type ORDER BY id");
while($type = mysql_fetch_object($getType)){
echo "<option value=\"$type->id\">$type->type</option>";
}
?>
</select>
或类似的东西