天儿真好, 我在获取正确的值以便在我制作的表单上发布时遇到了问题。它传递的是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的新手,我花了几天的时间才得到将tech_userlogin放入下拉框的东西。这是有效的,但是当它发布时,techID来自$ techID和$ tech_userlogin。 有人可以帮我解决这个问题吗?任何帮助将不胜感激。 干杯,Spud
答案 0 :(得分:2)
似乎正在发生的事情是您已将选择框命名为&#34; tech_userlogin&#34;,但在选项标签中,该值设置为techid。由于该值是在$ _REQUEST数组中发回的,所以请尝试这样的事情:
while ($row=mysql_fetch_array($result)) {
$tech_userlogin=$row["tech_userlogin"];
$options.="<OPTION VALUE=\"$tech_userlogin\">$tech_userlogin</option>";
}
我相信这会给你你想要的东西。
答案 1 :(得分:0)
在表单上,$ row [&#39; techID&#39;]被设置为下拉菜单tech_userlogin(最终$ _POST [&#39; tech_userlogin&#39;])。有几种方法可以解决这个问题。
1)在选项的值字段中发布两个值,并使用以下内容分隔处理方:
$techArray = explode(',',$string);
# $techArray[0] will be either the id or login
# $techArray[1] will be the other
由于可能存在安全问题,建议不要这样做。
2)刚刚通过下拉框浏览techID并进行另一个查询以获取帖子页面上的用户登录信息,并使用它来填写tech_userlogin字段。推荐
答案 2 :(得分:0)
它传递技术ID的原因是,当您提交下拉列表时,value
是...... well ..值。
如果您想传递值和名称,可以通过各种方式进行。
第一个是使用Javascript(jQuery会很棒),你可以将change
事件绑定到tech_user_login
下拉菜单。因此,当此更改时,它可以更新列表中所选项目内容的隐藏输入。
第二种方法是将tech id和tech登录名存储在选项的值中 - 如下所示:
$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]
作为技术登录名。
最后,您可以发布值并在下一页上使用第二个查询查找技术登录。
答案 3 :(得分:0)
首先检查include 'sql_connect_R.inc.php';
中所选的值,例如if(isset( $_REQUEST['tech_userlogin'] ))
,这将为您提供<OPTION VALUE=\"$techID\">$tech_userlogin</option>
选择框的值。请注意,只提供值$techID
,而不是$tech_userlogin
。如果你想要$tech_userlogin
的结果,那么再次运行一个查询,其值将通过$techID
。
希望这会对你有所帮助