0

次の HTML コードを 1 つの PHP ページに直接埋め込んでいます。

<select name="language_levels[]" class="span2">
    <option value="beginner">beginner</option>
    <option value="intermediate">intermediate</option>
    <option value="fluent">fluent</option>
    <option value="native">native</option>
</select>

ここで、データベース内のレコードに基づいてチェックされるオプションの 1 つを作成したいので、PHP ページで上記のコードをエコーアウトして、1 つのオプションをチェックすることができます (たとえば、初心者)。ただし、これは正しい方法ではないと思います(出力する正しいコード、つまりechoを決定するために多くの条件ステートメントが含まれるため)、phpがオプションを設定する方法(JavaScript/Jqueryなど)があるのではないかと思っています価値。

4

3 に答える 3

3
$value = 'beginner';
$options = array('beginner', 'intermediate', 'fluent', 'native');

<select name="language_levels[]" class="span2">
  <?php foreach($options as $o) {
    $selected = $o === $value ? "selected='selected'" : "";
    echo "<option value='$o' $selected>$o</option>";
  } ?>
</select>
于 2013-04-27T19:47:16.037 に答える
1

Webページの作成方法は次のとおりです(PHPを使用):

  1. example.com/foo.phpユーザーはあなたのサーバーから要求します
  2. サーバーはすべての PHP コードを実行しfoo.phpて、HTML ファイルを生成します。
  3. その HTML ファイルがユーザーのマシンに送り返されます
  4. そのユーザーのマシンは HTML を解析し、その中で Javascript を実行します。

ご覧のとおり、javascript/jquery の使用は間違っているだけでなく、不可能です。なぜなら、Javascript はどのオプションを選択echoすればよいかわからないからです (そのために JS 変数を -ed アウトしない限り、ただし、それを行う場合はそもそもなぜ属性をecho外に出さないのでしょうか?)。selected

selectedしたがって、PHP を使用して適切なオプションの属性を設定することには、まったく問題はありません。undefined がコメントしたように、何百万もの条件文を書かなくても済むようにする方法があります。1 つの例は undefined が示唆することを行うことであり、別の例は独自のカスタム選択タグ ロジックをクラスまたは関数として構築することです。

さらに別の方法は、そのようなクラス/関数を提供する多くの優れた PHP フレームワークの 1 つを使用することです。

于 2013-04-27T19:48:25.417 に答える
0
<select id = "level" name="language_levels[]" class="span2">
    <option value="beginner">beginner</option>
    <option value="intermediate">intermediate</option>
    <option value="fluent">fluent</option>
    <option value="native">native</option>
</select>

jquery を使用すると、これを行うことができます

var prevSelected='';
$(function()
{
    // get checked value via ajax call
    ajax(url,function(data)
    {
       if(prevSelected!='')
          $("#level option[value='" + prevSelected + "']").removeAttr("selected","selected");

       $("#level option[value='" + data + "']").attr("selected","selected");
       prevSelected=data;
    });

});
于 2013-04-27T19:53:52.703 に答える