1

選択したタグをHTMLオプションタグに動的に設定する問題に焦点を当てた例があることは承知していますが、私が達成しようとしていることで、ブレークステートメントと引用符のかなり難しい問題にぶつかっています。

while($info = mysql_fetch_array($companydesc)) 
{
$output3 .= '<option value="'. $info['company_code'] . if ($result['company']==$info['description']){echo 'selected=\"selected\"'} . '">' . $info['description'] . '</option>';
}
echo $output3;

私が受け取るエラーは、ifステートメントの行に予期しないT_IFがあります。そこにifステートメントを入れることは合法ではありませんか?それとも適切な休憩をとることの問題ですか?どんな助けでも大歓迎です(そしてうまくいけばコードのフォーマットはうまくいきました)

4

3 に答える 3

1

三元ステートメントを使用します。

while($info = mysql_fetch_array($companydesc)) {
    $output3 .= '<option value="'. $info['company_code'].'"'.($result['company']==$info['description'] ? ' selected=\"selected\"' : '') . '>' . $info['description'] . '</option>';
}
echo $output3;
于 2012-11-27T04:09:04.653 に答える
0

ええ、それは違法です、私の提案は:

while($info = mysql_fetch_array($companydesc))
{
  if($result['company']==$info['description'])
  {
    $output3 .= '<option value="' . $info['company_code'] . '" selected = selected>' . $info['description'] . '</option>';
  }
  else
  {
    $output3 .= '<option value="' . $info['company_code'] . '">' . $info['description'] . '</option>';
  }
}
echo $output3;
于 2012-11-27T04:12:34.257 に答える
0

次のようなもので当初意図した方法で、個々のソリューションですべてを修正しようとしています

    while($info = mysql_fetch_array($companydesc)) 

これは、phpを抑制し、最終的にコードの保守を非常に困難にする大きな要因の1つですが、学習曲線上は非常に簡単です。

この関数は、オプションで選択されたパラメーターを受け取り、選択ボックスを作成します。これは、独自のカスタムコードを使用して、すべてのクエリに対してすべての選択ボックスを実行するよりもはるかに優れています。

ここで構文エラーが発生する可能性がありますが、通常は

    function selectBox($array, $selected=false){
        foreach($array as $name => $value){
            $options .= '
                <option value=" . $name . '"'
                . ($selected != false && $selected == $value) ? 'SELECTED' : '' 
                . '>".$name."</option>"; 
       }
   } 

選択ボックスでは、事前定義されたキー=>値のペアの配列を渡す必要があるため、追加のヘルパー関数が必要になります(データベースの戻り値だけを渡すことはできません)。

また、おそらく言及する価値があるのは、使用することはmysql_fetch_array($companydesc)データベースレベルをまったく抽象化しないということです。将来的には、このようなコードは、Postgresや別のデータベースシステムなどへの移行を完全に禁止します。

于 2012-11-27T05:13:56.780 に答える