我有两张桌子。技能,包含所有可用的技能。
和user_skills,包含用户获得的技能。
我需要输出所有可用的技能,并且用户具有的技能(我通过session['username']
选择)将被标记(选中复选框)。
$get_all_skills = mysqli_query($conn, "SELECT * FROM skills");
$web_design = array();
$web_develop = array();
$automation = array();
$security = array();
while($show_row = mysqli_fetch_array($get_all_skills)){
switch($show_row['skill_type']){
case '1':
array_push($web_design, $show_row['skill_name']);
break;
case '4':
array_push($web_develop, $show_row['skill_name']);
break;
case '3':
array_push($automation, $show_row['skill_name']);
break;
case '2':
array_push($security, $show_row['skill_name']);
break;
}
}
我怎么可能做这个工作? 部分HTML是:
<div class="">
<ul class="to_do">
<?php
for($i=0;$i<count($web_develop);$i++){
?>
<li>
<p>
<input type="checkbox" class="flat"> <?php echo $web_develop[$i];?> </p>
</li>
<?php } ?>
</ul>
</div>
答案 0 :(得分:0)
考虑到你声明了user_skills数组($ user_skills_array)并拥有数据,请使用下面的html代码
localhost:9000
答案 1 :(得分:0)
尝试下面的解释。
<?php
$get_all_skills = mysqli_query($conn, "SELECT * FROM skills");
$availableSkills = [];
$skillTypes = [
1 => 'Webdesign',
2 => 'Security',
3 => 'Automation',
4 => 'Web Development',
];
while($show_row = mysqli_fetch_array($get_all_skills)){
$skill = [
'id' => $show_row['id'];
'name' => $show_row['name'];
];
$skillType = $show_row['skill_type'];
$availableSkills[$skillType][] = $skill;
}
// assuming user_skills:
$userSkills = [
1,
2,
5,
8
];
?>
<ul class="to_do">
<?php foreach ($availableSkills as $type => $skillsForType) : ?>
<li>
<?= $skillTypes[$type] ?>
<ul>
<?php foreach ($skillsForType as $skill) : ?>
<li>
<input
type="checkbox"
class="flat"
name="skill[<?= $type ?>]"
value="<?= $skill['id'] ?>"
<?= in_array($skill['id'], $userSkills) ? 'checked="checked"' : ''
> <?= $skill['name'] ?>
</li>
<?php endforeach; ?>
</ul>
</li>
<?php endforeach; ?>
</ul>
首先,你已经完成所有技能的收集。 接下来,我将您的不同技能数组优化为一个,并列出所有技能类型。
可用技能按其类型ID编制索引(请参阅$ skillsTypes)。
接下来,我假设您的用户技能收集可能如下所示。
在HTML部分中,我正在迭代每种技能类型,并在嵌套的foreach中回显所有相应的技能。 如果当前迭代的技能id是user-skill-relation的in_array,则设置“checked”属性。
为了澄清我在这个例子中使用了短语法。
[] --> array()
<?= --> <?php echo
foreach () : endforeach;