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>

第二个 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

试试这个:

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 回答
1

您正在使用

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

但是变量名称是$SNoand$SName并且您正在使用$Snoand $Sname。所以请用下面给出的行替换行。

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

我希望我会为你工作,

谢谢

于 2012-07-12T05:47:23.870 回答