1

追加と編集に使用するフォームが 1 つあります。ここでの私の目標は、追加フォームで count(items)+1 値を事前に選択することです。編集フォームでは、for ループのインクリメントと一致するときに、データベースから値を事前に選択する必要があります。現在、$selected 値が機能しておらず、追加フォームのパーツを実装する方法がわかりません。何かアイデアはありますか?

<?php for($x = 1; $x <= count($items)+1; $x++)
{
    if (isset($item_data))
    {
        $selected = $item_data->item_sort_order === $x ? ' selected="selected"' : '';
    }
    echo '<option value="'.$x.'"';
    if (isset($selected)) { echo $selected; }
    echo '>'.$x.'</option>';
}
?>
4

3 に答える 3

1

$selected毎回変数をリセットする必要があると思います。一度設定すると、そのままです。これを試して:

for($x = 1; $x <= count($items) + 1; $x++) {
    echo '<option value="' . $x . '"';
   if ((isset($item_data) && $item_data->item_sort_order === $x)
       echo ' selected="selected";
   echo '>' . $x . '</option>';
}

編集:

for($x = 1; $x <= count($items) + 1; $x++) {
    echo '<option value="' . $x . '"';
   if ((isset($item_data) && (int)$item_data->item_sort_order == $x)
       echo ' selected="selected";
   echo '>' . $x . '</option>';
}
于 2012-11-06T18:34:57.260 に答える
0

それは何かを変えますか?

for($x = 1, $length = count($items) + 1; $x <= $length; $x++) {
    echo '<option value="' . $x . '"' .
        (isset($item_data) && ($item_data->item_sort_order === $x) ? ' selected="selected"' : '') .
        '>' . $x . '</option>';
}
于 2012-11-06T18:37:53.237 に答える
0

いくつかの考えられる問題:

  1. 変数をリセットすることはありません$selected。これは、正しいものから始まるすべてのアイテムに「選択済み」属性が設定されることを意味します。

  2. ===私が承認するstrict 演算子を使用$item_data->item_sort_orderしていますが、int 値が含まれていない場合、この比較は一致しません。を使用して、そのプロパティvar_dumpの値型を確認できます。

  3. 並べ替え順序に「穴」がある場合、並べ替え順序と$x一致しない可能性があります。

  4. $item_dataループに設定されることはありません。

于 2012-11-06T18:31:53.957 に答える