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の場合は10個の異なる名前をドロップダウンします。次に、動的ドロップダウンの値を取得します。必要な結果が得られると思います。

于 2013-02-02T08:36:05.807 に答える
0

10個の選択ボックスを出力していますが、質問には「フォーム選択ボックス」と記載されています。1つだけが必要な場合は、選択タグをループの外に移動します。

<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']ます。その名前の変数は 1 つしかないため、最後の変数のみを取得します。それぞれから選択できるように、それらに異なる名前を付ける必要があります。

試す:

<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 に答える