填充从数据库
我真的使用这个代码重新填充从数据库下拉列表下拉列表:填充从数据库
$city_id = 15;
while($row = mysql_fetch_assoc($result)) {
$selected = ($row['city_id'] == $city_id) ? 'selected="selected" ' : NULL;
echo '<option value="'.$city_id .$selected . '">"'.$row['city_name'].'"</option>\n';
}
它`工作就像一个魅力,但我的问题是他们是更优雅的解决方案?
我经常用的功能,因为选择框的东西,我最终创造了很多......
function select($name, $default, $values, $style='', $param='') {
$html = '<select name="'.$name.'" style="'.$style.'" '.$param.' >';
foreach($values as $i => $data) {
if (isset($data['noFormat'])) {
$html .= '<option value="'.$data['value'].'" '.(($data['value']==$default)?'SELECTED="SELECTED"':'').' '.
(isset($data['style']) ? ' style="'.$data['style'].'" ' : '').'>'.$data['text'].'</option>';
} else {
$html .= '<option value="'.htmlentities($data['value']).'" '.(($data['value']==$default)?'SELECTED="SELECTED"':'').' '.
(isset($data['style']) ? ' style="'.$data['style'].'" ' : '').'>'.htmlentities($data['text']).'</option>';
}
}
$html .= '</select>';
return $html;
}
然后依次通过查询构建阵列像这样:
$default[] = array('value' => '0', 'text' => 'Select a City...');
while($row = mysql_fetch_assoc($result)) {
$list[] = array('value' => $row['city_id'], 'text' => $row['city_name']);
}
$list = array_merge($default,$list);
最后一个例子来创建HTML:
select('select','form_el_name',$list['0'],$list,'font-size:12px;','onChange="document.forms[0].submit();"');
希望它有帮助!
除了改进代码的indentation
以外,这没什么问题。
$city_id = 15;
while($row = mysql_fetch_assoc($result))
{
$selected = ($row['city_id'] == $city_id) ? ' selected="selected"' : NULL;
echo '<option value="' . $row['city_id']. '"' . $selected . '>'.$row['city_name'].'</option>\n';
}
- mysql_fetch_assoc到mysql_fetch_array
- 加适量评论
-
使用标准的PHP类ezsql或simple class tuts
$query="SELECT name,id FROM student"; /* You can add order by clause to the sql statement if the names are to be displayed in alphabetical order */ $result = mysql_query ($query); echo "<select name=student value=''>Student Name</option>"; // printing the list box select command while($nt=mysql_fetch_array($result)){//Array or records stored in $nt echo "<option value=$nt[id]>$nt[name]</option>"; /* Option values are added by looping through the array */ } echo "</select>";//Closing of list box
好,更优雅的解决办法是有一个“控制器”文件提取所有t他在城市把他们放入一个数组/对象列表/不管。然后,在“查看”文件中,您遍历该变量。这样,你就可以更多地从逻辑中分离出演示文稿。
鉴于:
<select name=student value=''>Student Name</option>
<?php foreach($cities as $city): ?>
<option value="<?php echo $city->id ?>" ><?php echo $city->name ?></option>
<?php endforeach; ?>
</select>
另外,我会强烈建议使用PDO对数据库访问。
几乎我所做的,以及我将要提交的解决方案。 – 2010-09-02 14:41:25
谢谢。我不认为回声可以称为“优雅”。无论如何,更优雅的是使用适当的框架。 – Nacho 2010-09-02 14:44:00
你有两个输入错误@回声部分:不是$ city_id,而是$ row ['city_id'],并将'selected'部分放入'value'中。顺便说一句,你不能以更优雅的方式做到这一点。 – fabrik 2010-09-02 14:24:12