我有一个包含所有类别(id,category)的DB表和包含所有事件(id,event,categoryID)的表。
在事件编辑表单中,我有select
字段,其中包含所有类别(从数据库获取)。但是我正在开发一个编辑表单,我需要默认选择当前类别。
这是我的选择字段(PHP方法从DB获取所有类别并按以下顺序放置):
<option value="1">Cat1</option>
<option value="2">Cat2</option>
<option value="3">Cat3</option>
<option value="4">Cat4</option>
<option value="5">Cat5</option>
假设当前事件属于类别3,因此我需要生成以下HTML:
<option value="1">Cat1</option>
<option value="2">Cat2</option>
<option value="3" selected>Cat3</option>
<option value="4">Cat4</option>
<option value="5">Cat5</option>
如果我有catID,如何使用PHP实现它?
希望这个问题很清楚。对不起我的错误解释
UPD:这是我生成类别列表的PHP代码:
public function getCatList($conf) {
$mysqli = $this->dbConnect($conf);
// Quering...
$query = "SELECT * FROM categories";
$result = $mysqli->query($query);
while($row = mysqli_fetch_array($result)) {
echo '<option value="' . $row['id'] . '">' . $row['category'] . '</option>';
}
}
答案 0 :(得分:1)
你可以这样做
while($row = mysqli_fetch_array($result)) {3
echo '<option value="' . $row['id'] . '"';
//if condition is met then make the option selected
if($row['categoryID'] == 3) {
echo " selected='selected' ";
}
echo '>' . $row['category'] . '</option>';
}
答案 1 :(得分:1)
附加到while
次迭代条件将为您解决此问题:
while($row = mysqli_fetch_array($result)) {
$isSelected = $row['id'] == $catID;
echo '<option '.($isSelected ? 'selected="selected"' : '').' value="' . $row['id'] . '">' . $row['category'] . '</option>';
}
如果当前值与$catID
中存储的值相同,则进行比较 - 并将布尔结果存储在变量中。在echo中,如果值为true,则只执行条件分叉并附加selected
属性,否则不附加任何空字符串。
答案 2 :(得分:0)
您应该将选定的catID作为参数添加到getCatList
- 函数中。然后只需更改HTML的创建以包含selected-attribute:
public function getCatList($conf, $catID = 0) {
$mysqli = $this->dbConnect($conf);
// Quering...
$query = "SELECT * FROM categories";
$result = $mysqli->query($query);
while($row = mysqli_fetch_array($result)) {
echo '<option value="' . $row['id'] . '"' . ($row['id']==$catID?' selected':'') . '>' . $row['category'] . '</option>';
}
}
现在您可以将catID传递给您的函数:
$myConf = "something";
$myCatID = 3;
getCatList($myConf, $myCatID);
答案 3 :(得分:0)
//query for the categories and options
$current_value = 3;
$total_num_of_options = mysql_num_rows($your_query_result);
for($count = 1; $count <= $total_num_of_options){
echo "<option value='".$count."' ";
if($count == $current_value)
echo "selected";
echo ">cat".$count."</option>";
}