G'day,我在我制作的表格上发布正确的值时遇到了问题。它传递的是ID,而不是名称。这是我的代码:
<td name="tech_userlogin" id="tech_userlogin" align="right" valign="top"><select name="tech_userlogin" id="tech_userlogin" class="db_field_name">
<?php
$sql="SELECT techID, tech_userlogin FROM technicians";
$result=mysql_query($sql);
$options="";
while ($row=mysql_fetch_array($result)) {
$techID=$row["techID"];
$tech_userlogin=$row["tech_userlogin"];
$options.="<OPTION VALUE='"$techID'">$tech_userlogin</option>";
}
?>
<OPTION VALUE="">---Select---
<?php echo $options; ?>
</SELECT>
表单发布到此页面:
<?php
include 'sql_connect_R.inc.php';
$id = mysql_real_escape_string($_POST['jobID']);
$equip = mysql_real_escape_string($_POST['wo_equip']);
$techID = mysql_real_escape_string($_POST['techID']);
$tech_login = mysql_real_escape_string($_POST['tech_userlogin']);
mysql_query("UPDATE work_orders SET wo_equip = UCASE('$equip'), wo_techID = '$techID', tech_userlogin = '$tech_login'
WHERE jobID = '$id'");
mysql_close($con);
我是PHP/MySQL的新手,花了几天时间才得到一个可以将techn_userlogin放入下拉框的东西。这是有效的,但当它发布technID时,$technID和$techn_userlogin都会出现。有人能帮我解决这个问题吗?如有任何帮助,我们将不胜感激。干杯,斯普德
似乎发生的事情是,您将选择框命名为"techn_userlogin",但在选项标记中,该值被设置为technid。由于该值是$_REQUEST数组中返回的值,请尝试以下操作:
while ($row=mysql_fetch_array($result)) {
$tech_userlogin=$row["tech_userlogin"];
$options.="<OPTION VALUE='"$tech_userlogin'">$tech_userlogin</option>";
}
我相信这会给你想要的。
在表单上,$row['techID']被设置为下拉菜单tech_userlogin(最终为$_POST['tech-userlogin'](。有几种方法可以解决这个问题。
1( 在选项的值字段中POST两个值,并使用在处理端分离
$techArray = explode(',',$string);
# $techArray[0] will be either the id or login
# $techArray[1] will be the other
由于可能存在安全问题,不建议这样做。
2( 只需通过下拉框中的techID,然后进行另一个查询,即可在帖子页面上获取用户登录信息,并使用它来填写tech_userlogin字段。推荐
它之所以传递技术id,是因为当您提交下拉列表时,value
是。。。好价值
如果你想传递值和名称,你可以通过各种方式来实现。
第一种是使用Javascript(jQuery会很好(,您可以将change
事件绑定到tech_user_login
下拉列表。因此,当这种情况发生变化时,它可以更新列表中所选项目内容的隐藏输入。
第二种方法是将技术id和技术登录名存储在选项的值中,类似于:
$techID=$row["techID"];
$tech_userlogin=$row["tech_userlogin"];
$options.="<OPTION VALUE='"$techID~~$tech_userlogin'">$tech_userlogin</option>";
然后,当发布值时,您可以简单地执行类似$array_tech = explode("~~",$_POST["tech_userlogin"]);
的操作,并使用$array_tech[0]
作为技术id,使用$array_tech[1]
作为技术登录名。
最后,您可以发布该值,并在下一页上使用第二个查询查找技术登录。
首先像if(isset( $_REQUEST['tech_userlogin'] ))
一样在include 'sql_connect_R.inc.php';
中选中的值,这将为您提供<OPTION VALUE='"$techID'">$tech_userlogin</option>
的选择框的值。请注意,只提供值$techID
,而不是$tech_userlogin
。如果您想要$tech_userlogin
的结果,那么再次使用它的值运行查询,您将通过$techID
获得该值。
希望这将帮助您