很难从动态下拉列表中获得要发布的价值


Having difficulty getting value to post from dynamic dropdown

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获得该值。

希望这将帮助您