0

一致することがわかった場合、選択した値をリストに表示しようとしています。正常に入力されましたが、選択した値のコードは実行されません。

Code:
$StaffName = 'Jimmy Chan';
<select name="Staff" id="Staff"><?php
$data = array();
$data[0] = '';
echo "<option value='" . $data[0] . "'>" . $data[0] . "</option>";
$result= $DB->query('select No, FirstName, LastName from Staff');
foreach ($result as $data)
{
    $SNo = $data['No'];
    $SFN = $data['FirstName'];
    $SLN = $data['LastName'];
    $SName = $SFN.' '.$SLN;         

    if($SName == $StaffName)
    {
        echo "<option value='".$Sno."' selected = \"selected\">".$Sname."</option>\n";
    }
    else
    {
    echo "<option value='" .$SNo. "'>" . $SName . " </option>";
    }

}                 
?>
        </select>

2 番目の else ステートメントは実行されますが、if ステートメントは実行されません。私はすでに「選択した」を内部に入れています。親切なアドバイス。

4

3 に答える 3

1

問題は変数$SNameの値にあるようです。比較する前に、両方の変数をトリミングして大文字または小文字に変換します。

小文字: http: //php.net/manual/en/function.strtolower.php

大文字: http: //php.net/manual/en/function.strtoupper.php

トリム: http: //php.net/manual/en/function.trim.php

また、試してみてください

echo "<option value='".$Sno."' selected="selected">".$Sname."</option>"; //remove \n
于 2012-07-12T05:34:53.907 に答える
1

使用している

echo "<option value='".$Sno."' selected = \"selected\">".$Sname."</option>\n";

しかし、変数名は$SNoandであり、 $SNameand を使用$Snoして$Snameいます。そのため、行を以下の行に置き換えてください。

echo "<option value='".$SNo."' selected = \"selected\">".$SName."</option>\n";

私はあなたのために働くことを願っています,

ありがとう

于 2012-07-12T05:47:23.870 に答える
1

これを試して:

foreach ($result as $data)
{
    $SNo = $data['No'];
    $SFN = $data['FirstName'];
    $SLN = $data['LastName'];
    $SName = trim($SFN).' '.trim($SLN);         
    if(strtolower($SName) == strtolower($StaffName))
    {
        echo "<option value='".$Sno."' selected = 'selected'>".$Sname."</option>\n";
    }
    else
    {
        echo "<option value='" .$SNo. "'>".$SName."</option>\n";
    }
}

また、最初の「if」ステートメントに $SName の代わりに $Sname があります。PHPがそれを改善できるかどうかはわかりませんが、覚えておいてください。$Sno および $SNo 変数についても同様です。

于 2012-07-12T05:46:27.660 に答える