このようにPHP内でHTMLを使用しています。
for($i=0;$i<count($arrSql);$i++)
$opt.="<option". if($_GET['pId'] == $arrSql[$i][0]){ echo "Selected";} ."value=".$arrSql[$i][0].">".$arrSql[$i][1]."</option>";
長い間テストしましたが、正しいように見えますが、エラーが表示され、バグがどこにあるのかわかりません。
if
連結 と を一緒に使用することはできません。次のように変更します。
for ($i=0;$i<count($arrSql);$i++) {
$opt .= "<option"
. ($_GET['pId'] == $arrSql[$i][0] ? " selected" : '')
."value=".$arrSql[$i][0].">".$arrSql[$i][1]."</option>";
スペースを忘れました。
以下を試してください:
for($i=0;$i<count($arrSql);$i++)
$opt.="<option". ($_GET['pId'] == $arrSql[$i][0] ? ' selected="selected" ' : ' ') ."value=".$arrSql[$i][0].">".$arrSql[$i][1]."</option>";
この場所ではあなたのecho
電話は必要ありません。あなたのステートメントは文字列を連結するだけで、それらを出力しません。
さらにif
、文字列連結内でステートメントを使用することはできません。ただし、if ショートカット、いわゆる三項演算子は、この状況で適用できます。
また、他の回答で指摘されているように、選択した部分の前にスペースがありません。
for($i=0;$i<count($arrSql);$i++) {
$opt .= "<option "
.($_GET['pId'] == $arrSql[$i][0]) ? "Selected" : ""
."value=" .$arrSql[$i][0]
. ">" .$arrSql[$i][1]. "</option>";
}
if
より明確な別の使用法は次のとおりです。
for($i=0;$i<count($arrSql);$i++){
$opt .="<option ";
if ($_GET['pId'] == $arrSql[$i][0]){
$opt .= "Selected";
}
$opt .= "value=" .$arrSql[$i][0]. ">" .$arrSql[$i][1]. "</option>";
}
必要に応じて、最後の行に続く中括弧を使用して、配列アクセスを文字列にインライン化することもできます: (詳細はこちら)
$opt .= "value=${$arrSql[$i][0]}>${$arrSql[$i][1]}</option>";
将来的には、スクリプトでエラー出力を有効にすることができます。これは主なエラーを示しています。