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

时间:2015-01-14 22:18:19

标签: php mysql join

晚上好,

我有以下情况:

我有两张桌子:

表1(人) 名称 ADRESS 性别

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

我已经用PHP填写了一个表格来填写姓名和地址,以及另一种管理性别的表格。

我想要做的是以下内容:我想将表1中的Sex列链接到表2中的colum sex。

我想在我的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“链接”,所以每当我改变性别标题时,它就会改变。

1 个答案:

答案 0 :(得分:2)

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

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

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

您可能希望获得有关数据库结构的更多信息,如果您使用Google Normaliation/Database Relations

,可以获得一些好的提示

关于你第二点:

进行查询以将性别表的所有记录都放入数组中。然后在PHP中执行循环并为数组<option value="_ID_">_SEXTitle_</option>

中的每个条目插入选择字段

当你回到表格时,你只需要在人物表的性别字段中输入选择值。

编辑: 您需要从输入更改为选择: 无论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