如何将表的id值放入另一个表中

时间:2011-08-05 09:47:26

标签: php

我在数据库中有两个表,一个是寄存器表,另一个是类型表。 我正在尝试创建一个表单,其中包含一个从'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> 

和表格


  • projecttype

CREATE  TABLE IF NOT EXISTS `project`.`type` (

  `id` INT NOT NULL AUTO_INCREMENT ,

  `type` VARCHAR(45) NULL ,

  PRIMARY KEY (`id`) )

ENGINE = InnoDB;

  • projectregister

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;

2 个答案:

答案 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>

或类似的东西