Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么select选项总是发布mysql表中的最后一个值_Php_Mysql - Fatal编程技术网

Php 为什么select选项总是发布mysql表中的最后一个值

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

我有一个表单选择框,它正确地填充了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>
    <?}?>
标签样式
所有菜单都具有相同的
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
}
?>