在表单提交时从另一个表中检索数据

时间:2012-04-05 07:07:16

标签: php sql forms

我的网站上有一个表单,用户在注册时填写。所有注册都存储在“注册”表中。表格结构如下:
id,username,password,firstname,lastname,email,gender,jobtitle,f1,country,f2,fbook,f3,fmovie,f4。

jobtitle 国家 fbook fmovie 是下拉菜单。这些dropdwon菜单的值也存储在另一个名为“extrainfo”的表中,具有以下结构: jobtitle,f1,country,f2,fbook,f3,fmovie,f4。

当用户提交表单时,它应检查作业标题,国家/地区,fbook和fmovie字段中的值,并从“extrainfo”表中检索值。

因此,如果用户在jobtitle下拉菜单中选择“DECORATOR”,它应该从“extrainfo”表中的f1列获取值,并将其插入“registration”表中的f1列。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:0)

通过读取提交的值并通过选择数据匹配的行与SQL查询将其与数据库中的数据进行比较,即可实现此目的。

答案 1 :(得分:0)

表单提交后尝试这样

通过$ _POST

获取选择框的值
$jobtitle = $_POST['jobtitle']; //name of select box is assumed as jobtitle

从extrainfo获取值

$r = mysql_query("select f1 from extrainfo where jobtitle='$jobtitle'); //get f1 from extrainfo
$j = mysql_fetch_row($r);

为所有列

插入这样的注册表
mysql_query("insert into registration(f1)values('$j[0]')"); //insert the f1 into registration table

答案 2 :(得分:0)

您可以使用其中已有的值构建下拉列表,而不是事后查找它们:

<SELECT name="jobtitle">
    <OPTION value="f1_value">Decorator</OPTION>
    <OPTION value="f1_value">Welder</OPTION>
</SELECT>

其中f1_value是每个作业标题的extrainfo表中的值。如果您首先将数据读入数组,也可以使用foreach结构来构建<OPTION>...</OPTIONS>

<?php
$q="select * from extrainfo";
if ($r=mysql_query($q))
{
  $m=array();
  while ($row=mysql_fetch_assoc($m))
  {
    $m[]=$row;
  }
?>
<SELECT name="jobtitle">
<?php
  foreach ($m as $line)
  {
    echo '<OPTION value="'.$line['f1'].'">'.$line['jobtitle'].'</OPTION>';
  }
?>
</SELECT>