我有一个表单选择框,它正确填充了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>
答案 0 :(得分:0)
您的所有菜单都具有相同的name="style_id"
。因此,当您提交表单时,他们都设置了$_POST['style_id']
。由于只有一个具有该名称的变量,因此您只能获得最后一个变量。您需要为它们指定不同的名称,以便从每个名称中进行选择。
尝试:
<select class="man_sty <?$m='man'.$i++;echo $m?>" name="style_id[]">
然后$_POST['style_id']
将是一个包含每个选择值的数组。
答案 1 :(得分: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>";
}
?>
答案 2 :(得分:0)
让你的下拉名称动态。 10下降10个不同的名字。然后拿起动态下拉的值。认为会给你所需的结果。
答案 3 :(得分: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”)。