从其他表中选择表单中的选项
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 中执行一个循环,并为数组 <option value="_ID_">_SEXTitle_</option>
中的每个条目插入选择字段
当您取回您的表单时,您只需将选择值输入到您的 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 中未选择选项卡时禁用表单输入