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

时间:2011-10-04 05:33:19

标签: php mysql

天儿真好, 我在获取正确的值以便在我制作的表单上发布时遇到了问题。它传递的是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

4 个答案:

答案 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

希望这会对你有所帮助