从其他表中选择表单中的选项

Posted

技术标签:

【中文标题】从其他表中选择表单中的选项【英文标题】:Select options in form from other table 【发布时间】:2015-01-14 22:18:18 【问题描述】:

晚上好,

我有以下情况:

我有 2 张桌子:

表 1(人) 姓名 地址 性

表 2(性别) ID 性别(值:男/女/未知)

我用 php 制作了一个表格来填写姓名和地址,并制作了一个不同的表格来管理性别。

我想要做的是:我想将表 1 中的性别列链接到表 2 中的性别列。

我想在我的 php 表单中创建一个下拉菜单,以显示表 2 中的性别值,选择一个性别,并将该人 ID 链接到性别 ID。

我怎样才能做到这一点?

编辑:我的目的是,如果我更改性别名称:比如,男,男,我不必编辑我所有的人。

我现在的代码:

    <a href="index.php">Home</a><br>
<a href="personeninvoeren.php">Personen invoeren</a><br>
<a href="personeninvoeren.php">Voertuigen invoeren</a>
<a href="beheergeslacht.php">Geslacht beheren</a>
<?php 
mysql_connect('localhost','shopqvat_rdw','PASSWORD'); 
mysql_select_db('shopqvat_rdw') or die (mysql_error()); 

if(isset($_POST['verzenden'])) 
   
    $persoon_voornaam = $_POST['voornaam'];
  $persoon_tussenvoegsel = $_POST['tussenvoegsel'];
  $persoon_achternaam = $_POST['achternaam'];
  $persoon_straatnaam = $_POST['straatnaam'];
  $persoon_huisnummer = $_POST['huisnummer'];
  $persoon_toevoeging = $_POST['toevoeging'];
  $persoon_bsnnummer = $_POST['bsnnummer'];
  $persoon_geboortedatum = $_POST['geboortedatum'];
  $persoon_geslacht = $_POST['geslacht'];

  $sqlgeslacht = "SELECT * FROM geslacht";
$resultgeslacht = mysql_query($sqlgeslacht);

    mysql_query("INSERT INTO Persoon (voornaam, tussenvoegsel, achternaam,
        straatnaam, huisnummer, toevoeging, bsnnummer, geboortedatum, geslacht) VALUES ('".$persoon_voornaam."', '".$persoon_tussenvoegsel."', '".$persoon_achternaam."',
         '".$persoon_straatnaam."', '".$persoon_huisnummer."', '".$persoon_toevoeging."', '".$persoon_bsnnummer."', '".$persoon_geboortedatum."', '".$persoon_geslacht."')") or die (mysql_error()); 

    echo 'Persoon succesvol toegevoegd!'; 
   
else 
   
?> 
<form action=" <?=$_SERVER['PHP_SELF']?> " method="POST">
<div>Voornaam <input type='text' name='voornaam' id='voornaam' /></div><br>
<div>Tussenvoegsel <input type='text' name='tussenvoegsel' id='tussenvoegsel' /></div><br>
<div>Achternaam <input type='text' name='achternaam' id='achternaam' /></div><br>
<div>Straatnaam <input type='text' name='straatnaam' id='straatnaam' /></div><br>
<div>Huisnummer <input type='text' name='huisnummer' id='huisnummer' /></div><br>
<div>Toevoeging <input type='text' name='toevoeging' id='toevoeging' /></div><br>
<div>BSN Nummer <input type='text' name='bsnnummer' id='bsnnummer' /></div><br>
<div>Geboortedatum <input type='text' name='geboortedatum' id='geboortedatum' /></div><br>
<div>Geslacht <?php echo"<select name='geslacht' id='geslacht' >";

    while ($row = mysql_fetch_array($resultgeslacht)) 
    echo "<option value='" . $row['geslacht'] ."'>" . $row['geslacht'] ."</option>";

echo "</select>";?></div><br/>
<input type="submit" name="verzenden" value="verzenden">
</form> 
<? 
   
?>

编辑:我添加了一个数组,我用回显调用这些值,它显示一个空的下拉菜单,我做错了什么?

这都是关于:“Geslacht”,我有一个额外的表格,我可以在其中定义性别 (geslacht)。

所以我想以这种形式显示 table2 的值。当我选择该值时,我希望它与人 ID“链接”,所以每当我更改性别标题时,它都会在人身上发生变化。

【问题讨论】:

写一些代码?你能分享一下你尝试过的东西吗? 您在哪个方面遇到了问题?你试过什么?此数据、应用程序和演示文稿有 3 层。 对不起,我已经添加了我的代码,我正在尝试使用 LEFT 加入得到的其他回复。 【参考方案1】:

对于您的第一个点,您可以将 LEFT JOIN 添加到您的表中。

LEFT JOIN <table2> ON <table1>.<field> = <table2>.<field>    
LEFT JOIN Sex ON Person.Sex = Sex.ID

提示:让您的字段名称更清晰,不要使用 Sex 作为表和字段名称。

您可能想获得更多关于数据库结构的信息,如果您 google Normaliation/Database Relations 可以得到一些很好的提示

关于你的第二点:

进行查询以将性别表的所有记录放入一个数组中。然后在 PHP 中执行一个循环,并为数组 &lt;option value="_ID_"&gt;_SEXTitle_&lt;/option&gt; 中的每个条目插入选择字段

当您取回您的表单时,您只需将选择值输入到您的 Person 表的 Sex 字段中。

编辑: 您需要从输入更改为选择: 如果没有 PHP/MySQL 的动态,您的纯 html 代码应该如下所示:

<div>Geslacht <select type='text' name='geslacht' id='geslacht' >
    <option value="1">Male</option>
    <option value="2">Female</option>
    <option value="3">None ;)</option>
</select></div><br/>

Tipp2:永远不要将来自 POST/GET 数组的数据直接放在数据库中!至少将条目转义到Prevent SQL Injection

【讨论】:

非常感谢,我一直在这个方向,但我不知道如何使用它..我会试一试! 我不知道你的德国人有多好,但你可能想看看这边PHP-Kurs你不需要在插入语句中更改任何内容 好的,感谢您的提示,我已编辑代码以显示表中的值:Sex 进入下拉菜单,显示下拉菜单但未显示值。我已经编辑了我的起始帖子。我已经阅读了不同的教程来显示数组中的值。我错过了什么吗? 额外评论:感谢您提供的额外提示,一旦我掌握了下拉数组和 LEFT JOIN 的窍门,我会尽快跟进。

以上是关于从其他表中选择表单中的选项的主要内容,如果未能解决你的问题,请参考以下文章

从表单中的所有选择元素中获取所有选择的选项元素

加载时选择选项默认值不显示,选择其他选项时不显示

在 jQuery mobile 中未选择选项卡时禁用表单输入

VBA 中的动态组合框项

Ruby on Rails 表单添加带有文本框的“其他”选项以选择下拉菜单

在MS访问中的子表单上显示查询结果