0

我有一个表单选择框,它正确填充了 mysql 表中的值,但是当它发布时,发布的值是表“manutags”中的最后一项,而不是框中显示的选定项目。有人能告诉我我的逻辑有什么问题吗?

<p class="formlabel cf text nobox">Tag Style  <!--popuplate with tag styles-->
<?$i=1;
    while($i<11){?>         
        <select class="man_sty <?$m='man'.$i++;echo $m?>" name="style_id">
        <?
            $sql = "SELECT DISTINCT man,style_id FROM manutags WHERE man_id = '$m'";
            $result = mysql_query($sql) or die(mysql_error());
        while($row = mysql_fetch_array($result)){
        ?>
         <option value="<?=$row[1];?>"><?echo $row[1]?></option><!-- tag dropdown values-->
        <?}?>
        </select>
    <?}?>

HTML

<p class="formlabel cf text nobox">
Tag Style
<select class="man_sty man1" name="style_id_1" style="display: none;">
<option selected="" value="Kliktag">Kliktag</option>
<option value="RD2000">RD2000</option>
<option value="Button-R">Button-R</option>
<option value="SnappTagg">SnappTagg</option>
<option value="AutoEID">AutoEID</option>
</select>
<select class="man_sty man2" name="style_id_2" style="display: none;">
<option selected="" value="rototag">rototag</option>
</select>
<select class="man_sty man3" name="style_id_3" style="display: inline;">
<option selected="" value="Qwik">Qwik</option>
<option value="Zee">Zee</option>
</select>
</p>
4

4 回答 4

0

您正在输出 10 个选择框,但您的问题是“表单选择框”。如果您只想要一个,请将选择标签移到循环之外:

<p class="formlabel cf text nobox">Tag Style  <!--popuplate with tag styles-->
<select class="man_sty <?$m='man'.$i++;echo $m?>" name="style_id">
<?php
$i=1;
while($i<11){
    $sql = "SELECT DISTINCT man,style_id FROM manutags WHERE man_id = '$m'";
    $result = mysql_query($sql) or die(mysql_error());
    while($row = mysql_fetch_array($result)){
    ?>
        <option value="<?=$row[1];?>"><?echo $row[1]?></option><!-- tag dropdown values-->
    <?php
    }
}
?>
</select>

如果您确实需要 10 个选择框,那么您可能希望对参数使用数组语法:

<p class="formlabel cf text nobox">Tag Style  <!--popuplate with tag styles-->
<?php
$i=1;
while($i<11){
    ?>
<select class="man_sty <?$m='man'.$i++;echo $m?>" name="style_id[]">
    <?php
    $sql = "SELECT DISTINCT man,style_id FROM manutags WHERE man_id = '$m'";
    $result = mysql_query($sql) or die(mysql_error());
    while($row = mysql_fetch_array($result)){
    ?>
        <option value="<?=$row[1];?>"><?echo $row[1]?></option><!-- tag dropdown values-->
    <?php
    }
    ?>
    </select>
    <?php
}
?>

然后在接收端,您将在 $_POST['style_id'] 中收到一个数组(假设您在表单中使用 method="post")。

于 2013-02-02T08:39:15.503 回答
0

你所有的菜单都一样name="style_id"。因此,当您提交表单时,它们都设置了$_POST['style_id']. 由于只有一个具有该名称的变量,因此您只能得到最后一个。您需要给它们起不同的名称,以便您可以从中获得选择。

尝试:

<select class="man_sty <?$m='man'.$i++;echo $m?>" name="style_id[]">

然后$_POST['style_id']将是一个包含每个选择的值的数组。

于 2013-02-02T08:31:50.670 回答
0

一探究竟。似乎您忘记更改name每个选择。

<?php
for ($i = 1; $i <= 10; $i++) {
    $manId = "man" . $i;
    echo "<select class=\"man_sty {$manId}\" name=\"style_id_{$i}\">";
    $sql = "SELECT DISTINCT man, style_id FROM manutags WHERE man_id = '{$manId}'";
    $result = mysql_query($sql) or die(mysql_error());
    $selected = 'selected';
    while ($row = mysql_fetch_array($result)) {
        echo "<option value=\"{$row[1]}\" {$selected}>{$row[1]}</option>";
        $selected = '';
    }
    echo "</select>";
}
?>
于 2013-02-02T08:32:07.893 回答
0

使您的下拉名称动态。为 10 下拉 10 个不同的名称。然后拿起动态下拉的值。认为会给你所需的结果。

于 2013-02-02T08:36:05.807 回答