使用 php 从组合框插入
Posted
技术标签:
【中文标题】使用 php 从组合框插入【英文标题】:Insert from combo box using php 【发布时间】:2014-02-05 11:23:33 【问题描述】:我正在从数据库中填充一个组合框,问题是当我从组合框中选择一个项目并尝试保存到数据库中的另一个表时,它会选择记录 ID 列而不是项目本身。 这就是填充组合框的方式。
<label>State</label>
<select name="state" class="state" onChange="display(this.value)" style="width: 142px">
<option value="" selected="selected">-- Select State --</option>
<?php
$query="select * from tbl_state";
$query_result=mysql_query($query)or mysql_error();
while($row=mysql_fetch_array($query_result))
?>
<option value="<?php echo $row['id']; ?>"><?php echo $row['state_name']; ?></option>
<?php
?>
</select>
<div id="show_city" style="position: relative" height:5px;>
<label>LGA</label>
<select name="city" class="lga" style="width: 142px">
<option value="" selected="selected">-- Select LGA --</option>
</select>
</div>
</p>
数据库连接
$state = $_POST['state'];
$city = $_POST['city'];
$sql="INSERT INTO members (state, city)
VALUES ('$state', '$city')";
注意。我正在使用 javascript 来填充组合框。
【问题讨论】:
我不明白这个问题。 我有两个组合框,它们从数据库中动态填充两个表,当我从“状态”中选择项目时,“lga”组合框会填充来自 tbl_lga 的项目。这里的问题是我在表单中使用这些组合框,所以我想要的是将表单数据(包括两个组合框中的选定项目)提交到我数据库中的另一个表。 【参考方案1】:当您提交表单时,只会发送字段名称及其值。在您的情况下,当用户选择状态并按提交时,将在您在选项值标签处指定行 ID 时发送行 ID。
也可以使用<option value="<?= $row['state_name'] ?>"> ... </option>"
,然后直接获取状态名ini php:
$state = $_POST['state'];
或保留当前填充代码并通过使用记录 id 查询数据库来获取状态名称。
$state_id = intval($_POST['state']);
$city_id = intval($_POST['city']);
$sql = "SELECT `state_name` FROM tbl_state WHERE id=$state_id";
$query_result = mysql_query($sql) or mysql_error();
$state = mysql_result($query_result, 0);
echo $state;
getcity.php
<?php
$con=mysql_connect('localhost','root','') or die('Mysql not connected');
mysql_select_db('thriftdb',$con) or die('DataBase not connected');
$state_id=$_REQUEST['state_id'];
$query="select * from lga where state_id='$state_id'";
?>
<label>LGA</label>
<select name="city" style="width: 142px">
<option value="" selected="selected">-- Select LGA --</option>
<?php
$query_result=mysql_query($query)or mysql_error();
while($row=mysql_fetch_array($query_result))
?>
<option value="<?php echo $row['id']; ?>"><?php echo $row['lga_name']; ?></option>
<?php
?>
</select>
数据库结构如下 'lga' 表有...
lga_id --- state_id --- lga_name
'state'表有
state_id --- state_name
【讨论】:
感谢您的帮助...虽然我有点迷路...尝试使用此但字段返回空白... @Crossyde 你用的是哪一个?第一个还是第二个? 我尝试在不同的场合同时使用这两种方法... 好的@Syahmi 它工作了...感谢一个很好的交易....不过我还有另一个问题,城市字段是空白的。我认为这是因为我从“状态”表中提取了不同的表......关于我如何处理它的任何线索......再次感谢。 @Crossyde,我只显示状态代码。如果需要从城市中提取数据,则必须像从数据库中查询州名一样查询数据库。【参考方案2】:当表单发送组合的选定项时,它发送选定选项的值,而不是文本。如果要发送文本,请为每个组合添加隐藏输入,然后在组合的 onclick 事件中,调用将文本填充到隐藏输入的函数。
selectState = function()
$('#hiddenInputField').val($("select[name='state'] option:selected").text());
那么在服务器端你必须获取输入隐藏字段的值而不是选择字段。
【讨论】:
感谢这个方法......虽然我尝试使用它但似乎没有让它工作。以上是关于使用 php 从组合框插入的主要内容,如果未能解决你的问题,请参考以下文章