0

如何获取此代码以显示已选择的选项?

这基本上是一个编辑页面,它从数据库中提取信息并填充相关字段

我在页面上有一个下拉菜单、多个选择框和单选按钮以及一些元素。信息在元素中显示得很好,但我不知道如何让 s 和单选按钮显示选中,如果它们与数据库中的信息匹配。

代码:

<select name="client">


    <option value="empty">Change Client...</option>
 <?php
                $result2 = mysql_query("SELECT name FROM clients") or die("Database query failed: " . mysql_error());    

while($row = mysql_fetch_assoc($result2)) {
    $clientlist = $row['name'];
    $clientname = htmlspecialchars($row['name']);

    if ($_POST['client'] == $clientlist)
    { 

    echo '<option value="' . $clientlist . '" selected="selected" >' . $clientname . '</option>' . '\n';
    }
    else{
    echo '<option value="' . $clientlist . '" >' . $clientname . '</option>' . '\n';
}
}


?>
</select>

    </p>
<p class="subheadsmall">Core Classification</p>

<?php

switch ($niche) {
    case "brand":
        echo '<input type="radio" name="niche" value="Brand" checked="checked" />Brand';
        echo '<input type="radio" name="niche" value="Marketing" />Marketing';
        echo '<input type="radio" name="niche" value="Communication" />Communication';
        break;
    case "marketing":
        echo '<input type="radio" name="niche" value="Brand" />Brand';
        echo '<input type="radio" name="niche" value="Marketing" checked="checked" />Marketing';
        echo '<input type="radio" name="niche" value="Communication" />Communication';
        break;
    case "communication":
        echo '<input type="radio" name="niche" value="Brand" />Brand';
        echo '<input type="radio" name="niche" value="Marketing" />Marketing';
        echo '<input type="radio" name="niche" value="Communication" checked="checked" />Communication';
        break;
    default;
        echo '<input type="radio" name="niche" value="Brand" />Brand';
        echo '<input type="radio" name="niche" value="Marketing" />Marketing';
        echo '<input type="radio" name="niche" value="Communication" />Communication';
    break;
}

?>

<p class="subheadsmall">Strategies</p>

<p class="sidebargrey">

<?php

            $result = mysql_query("SELECT strategies FROM studies WHERE id = '$id';
                if (!$result) {
                    die("Database query failed: " . mysql_error());
                }

while($row = mysql_fetch_array($result)) {
    $strategyname = $row['strategies'];


    echo $strategyname.'<br />';
}

?>
        <p class="subheadsmall">Add a strategy... (hold down command key to select more than one)</p>

<select name="strategies[]" multiple="multiple">
     <?php

            $result = mysql_query("SELECT * FROM strategies");
                if (!$result) {
                    die("Database query failed: " . mysql_error());
                }

while($row = mysql_fetch_array($result)) {
    $strategylist = $row['name'];
    $strategyname = htmlspecialchars($row['name']);
$pagelink = str_replace(" ","_",$strategylist);

    echo '<option value="<a href=&quot;strategies.php?strategy=' . $pagelink . '&quot;>'.$strategyname.'</a>" >' . $strategyname . '</option>' . '\n';
}

?>
    </p>
4

3 回答 3

0

选项 HTML 规范

将 selected="selected" 更改为刚刚选中。看起来该属性不需要分配。

您可能还想检查正在输出的 HTML,以确保您的作业评估为真。

于 2009-07-01T14:54:50.170 回答
0

您可以使用 javascript 来执行此操作。我的示例使用 jquery

首先给你的每个复选框一个 id 所以

echo '<input type="radio" name="niche" id="brand" value="Brand" />Brand';
echo '<input type="radio" name="niche" id="marketing" value="Marketing" />Marketing';
echo '<input type="radio" name="niche" id="communication" value="Communication" />Communication';

那么你的JS将是

$( "brand" ).attr( "checked", true ); // this would check the brand box

所以你可以根据需要写出这些。

于 2009-07-01T14:56:55.503 回答
0

如果可能的话,您应该将该组无线电打印更改为 for 循环。然后你可以做这样的事情:

foreach ($possibleRadios as $key => $val)
{ 
    echo '<input type="radio" name="' . $val->name . '" value="' . $val->id . '" ' .  ($isSelected($val->id) ? 'selected="selected' : '') . ' />$val->prettyName';
}
于 2009-07-01T15:00:05.480 回答