Php 为什么select选项总是发布mysql表中的最后一个值
我有一个表单选择框,它正确地填充了mysql表中的值,但是在发布时,发布的值是表“manutags”中的最后一项,而不是框中显示的选定项。有人能告诉我我的逻辑有什么问题吗Php 为什么select选项总是发布mysql表中的最后一个值,php,mysql,Php,Mysql,我有一个表单选择框,它正确地填充了mysql表中的值,但是在发布时,发布的值是表“manutags”中的最后一项,而不是框中显示的选定项。有人能告诉我我的逻辑有什么问题吗 <p class="formlabel cf text nobox">Tag Style <!--popuplate with tag styles--> <?$i=1; while($i<11){?> <select class="m
<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>
<?}?>
标签样式
所有菜单都具有相同的
name=“style\u id”
。因此,当您提交表单时,它们都会设置$\u POST['style\u id']
。因为只有一个变量具有该名称,所以只能得到最后一个。你需要给他们不同的名字,这样你就可以从每个人身上得到选择
尝试:
查看它。似乎您忘记更改每个选择的名称
<?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>";
}
?>
使您的下拉名称动态化。对于10,请下拉10个不同的名称。然后选择“动态”下拉列表的值。思考会给你所需的结果。你正在输出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>
标签样式
是否希望订单应为最新发布的值从下拉框中选择我要发布的值。这正确地填充了许多样式id,但是当发布时,“manutags”表中的最后一项被发布,即使它没有显示在选择框中。据我所知,您正在进行10个下拉列表。你想要什么?有什么问题吗?发布表单时,是否只显示最后一个下拉列表的值?@Bhavik htere下拉列表中最多有10个项目,效果非常理想。发布的值不会显示在下拉列表中,它始终是整个表中的最后一项。Iv尝试了…….name=“style_id[]”菜单现在没有填充任何选项。这没有任何意义。此更改与选项无关。此解决方案不会填充DropDownNotice:Undefined index:style\u id in F:\....tags\u by\u user.php在第11行,lin11是:$style\u id=mysql\u real\u escape\u字符串($\u POST['style\u id']);此解决方案不会填充下拉列表。我确实想要10个选择框,但其中9个有css类->显示:无取决于以前的菜单。你说“不填充下拉列表”是什么意思?请举例说明您希望生成的HTML是什么样子。很抱歉,我曾尝试发布生成的HTML,但由于我无法正确格式化,该帖子一直被拒绝。您必须在每行缩进代码,并使用四个空格字符。您能就我如何做到这一点提出建议吗,然后如何从$_POST['style_id']获得正确的值;对我可以发帖。首先你告诉我在while循环中,你在哪里增加$i的值。如果你在创建10个下拉列表,那么1)增加$i的值。2) name=“style\u id”-使用此名称。3) 提交表单后,执行for循环以拾取值。对于($i=1;$i)
<?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>";
}
?>
<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>
<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
}
?>