0

PHP で関数を作成しました。この関数の目的は、次の行を HTML 選択タグに出力することです。

<option value="<?php echo $key . $product[$name . '_id'] == $key ? 'selected' : null  ?>"><?php echo $value ?></option>

これは私が思いついたものです:

function Select($name){
    $ids = array();
    $values = array();
    $query1 = $sql->query("SELECT * FROM '$name'");
    while($fetch = $query1->fetch_assoc()){
        array_push($ids, $fetch[$name . '_id']);
        array_push($values, $fetch[$name]);
    }
    $names = array_combine($ids, $values);

    foreach($names as $key => $value){
        return '<option value="' . $key . '"' . $product[$name . '_id'] == $key ? 'selected' : null . '>' . $value . '</option>';
    }
}

これは機能していないようですが、これを HTML select タグに直接配置すると機能します。次のようになります。

<select name="type" class="chozen" id="type">
    <?php
        $brand_ids = array();
        $brand_values = array();
        $query1 = $sql->query("SELECT * FROM brands");
        while($brand = $query1->fetch_assoc()){
            array_push($brand_ids, $brand['brand_id']);
            array_push($brand_values, $brand['brand']);
        }
        $brands = array_combine($brand_ids, $brand_values);

        foreach($brands as $key => $value){
            ?>
            <option value="<?php echo $key ?>"<?php echo $product['brand_id'] == $key ? 'selected' : null ?>><?php echo $value; ?></option>
            <?php
        }
    ?>
</select>

誰かが私が間違っていた場所を教えてもらえますか、私はそれを理解できません。

4

3 に答える 3

0

次の行を試すことができると思います:

$str = "";
foreach($names as $key => $value){
   $str .= '<option value="' . $key . '" ' . (($product[$name . '_id'] == $key) ?     'selected'    : '') . '>' . $value . '</option>';
}
return $str;

1) null の代わりに空の文字列を使用します。2) 値の $key の後のスペース

うまくいけば、それは役に立ちます

于 2013-04-11T11:22:33.033 に答える
0

あなたの問題は、すべての行を個別に返そうとしていることです。ただし、関数は最初に戻った後は続行されません。これはうまくいくはずです:

$str = '';
foreach($names as $key => $value){
    $str = $str.'<option value="' . $key . '"' . $product[$name . '_id'] == $key ? 'selected' : null . '>' . $value . '</option>';
}
return str;
于 2013-04-11T11:20:44.490 に答える