我有一个简单的php表单并从数据库中获取值。会员类型(普通和黄金)有一个下拉框。我试图从数据库填充选定的下拉列表值。 (member_type value)
<?php
$sql = mysql_query("SELECT * FROM members");
while($read = mysql_fetch_array($sql)) {
$MemName = $read['member_name'];
$MemType = $read['member_type'];
echo '<td><input type="text" name="mname" id="mname" value="'.$MemName.'"></td>
<td>
<select>
<option value="Normal">Normal</option>
<option value="Gold">Gold</option>
</select>
</td>
';
}
?>
答案 0 :(得分:1)
<?php
$currentMembership = 'Gold';
$sql = mysql_query("SELECT * FROM members");
while($read = mysql_fetch_array($sql)) {
$MemName = $read['member_name'];
$MemType = $read['member_type'];
echo '<td><input type="text" name="mname" id="mname" value="'.$MemName.'"></td>
<td>
<select>
<option value="Normal" ' . ($MemType == 'Normal' ? ' selected' : '') .'>Normal</option>
<option value="Gold"' . ($MemType == 'Gold' ? ' selected' : '') .'>>Gold</option>
</select>
</td>
';
}
?>
答案 1 :(得分:1)
在我看来,两种当前的解决方案都可以改进:
<?php
$sql = mysql_query("SELECT * FROM members");
?>
<?php while($read = mysql_fetch_array($sql)): ?>
<td>
<input
type="text"
name="mname"
id="mname"
value="<?php echo $read['member_name'] ?>"
>
</td>
<td>
<select>
<option
value="Normal"
<?php echo $read['member_type'] == 'Normal' : 'selected' : '' ?>
>Normal</option>
<option
value="Gold"
<?php echo $read['member_type'] == 'Gold' : 'selected' : '' ?>
>Gold</option>
</select>
</td>
<?php endwhile ?>
这里有什么不同?
echo
语句中。看看阅读有多容易?您不必担心转义报价,也不必担心单引号和双引号之间的交替。<select>
菜单结构只添加一次 - 将代码多次添加到代码中效率相当低,每个都选择了不同的项目。想象一下,如果你有更多菜单项,维护是多么尴尬 - 每个菜单项都有一个额外的else
条款!}
在HTML中不是很明显。Nota bene:
$MemName
来自用户输入(或者您呈现的任何数据),请确保使用htmlentities()
将其转义,否则可能会引入XSS漏洞。$sql
可能不理想 - 查询函数的返回值是数据库结果 - SQL是输入。我建议在这里使用$result
或类似的内容。答案 2 :(得分:0)
将if放在你的MemType上
<?php
$sql = mysql_query("SELECT * FROM members");
while($read = mysql_fetch_array($sql)) {
$MemName = $read['member_name'];
$MemType = $read['member_type'];
echo '<td><input type="text" name="mname" id="mname" value="'.$MemName.'"></td><td>';
if($MemType == 'Normal') {
echo '<select>
<option value="Normal" selected>Normal</option>
<option value="Gold">Gold</option>
</select>';
}else if($MemType == 'Gold') {
echo '<select>
<option value="Normal">Normal</option>
<option value="Gold" selected>Gold</option>
</select>';
} else {
echo '<select>
<option value="Normal">Normal</option>
<option value="Gold">Gold</option>
</select>';
}
echo '</td>';
}
?>