Php 如何基于同一外键将sql数据库中的多行显示到复选框中

Php 如何基于同一外键将sql数据库中的多行显示到复选框中,php,mysql,arrays,loops,checkbox,Php,Mysql,Arrays,Loops,Checkbox,我有一份调查问卷,其中有一个年龄复选框列表,保存到数据库中的每个不同的行中,但相同的外来id请参见select语句下面的图像以及我得到的结果。现在我想把这4个结果放回一个复选框列表中,如果有一个值,复选框会被选中,如果说验证失败,我在实际问卷中的工作方式是通过查询字符串,所以代码看起来像下面的代码槽1 但是现在我使用的是CMS,所以它直接从数据库中获取结果,所以我不太确定如何将4个值放入一个数组中,我可以使用该数组检查下面显示的代码槽 来自问卷调查的PHP代码 <?php if (is

我有一份调查问卷,其中有一个年龄复选框列表,保存到数据库中的每个不同的行中,但相同的外来id请参见select语句下面的图像以及我得到的结果。现在我想把这4个结果放回一个复选框列表中,如果有一个值,复选框会被选中,如果说验证失败,我在实际问卷中的工作方式是通过查询字符串,所以代码看起来像下面的代码槽1

但是现在我使用的是CMS,所以它直接从数据库中获取结果,所以我不太确定如何将4个值放入一个数组中,我可以使用该数组检查下面显示的代码槽

来自问卷调查的PHP代码

<?php
  if (isset($_GET['kage']) && $_GET['kage'] !== null) {
  $agegroups = explode("_", $_GET['kage']);

  $checked = in_array('kids', $agegroups) ? 'checked="checked"' : '';
     echo '<label for="kids" id="kid"><input type="checkbox" name="age[]" class="ages" value="kids" id="kids" ' . $checked . '>Ages 0 - 10</label>';
  $checked = in_array('teens', $agegroups) ? 'checked="checked"' : '';
     echo '<label for="teens" id="teen"><input type="checkbox" name="age[]" class="ages" id="teens" value="teens" ' . $checked . '> Ages 11-19 </label>';
  $checked = in_array('twenties', $agegroups) ? 'checked="checked"' : '';
     echo '<label for="twentys" id="twenty"><input type="checkbox" name="age[]" class="ages" id="twentys" value="twenties" ' . $checked . '> Ages 20-29</label>';
  $checked = in_array('thirties', $agegroups) ? 'checked="checked"' : '';
     echo '<label for="thirtys" id="thirty"><input type="checkbox" name="age[]" class="ages" id="thirtys" value="thirties" ' . $checked . '> Ages 30-39 </label>';
  $checked = in_array('forties', $agegroups) ? 'checked="checked"' : '';
     echo '<label for="fourtys" id="fourty"><input type="checkbox" name="age[]" class="ages" id="fourtys" value="forties" ' . $checked . '> Ages 40-49</label>';
  $checked = in_array('fifties', $agegroups) ? 'checked="checked"' : '';
     echo '<label for="fiftys" id="fifty"><input type="checkbox" name="age[]" class="ages" id="fiftys" value="fifties" ' . $checked . '> Ages 50-59 </label>';
  $checked = in_array('sixtyup', $agegroups) ? 'checked="checked"' : '';
     echo '<label for="sixtyplus" id="sixty"><input type="checkbox" name="age[]" class="ages" id="sixtyplus" value="sixtyup" ' . $checked . '> Ages 60+</label>';
  echo '<br>';
} else {
 echo '<label for="kids" id="kid"><input type="checkbox" name="age[]" class="ages" id="kids" value="kids">Ages 0 - 10</label>  
       <label for="teens" id="teen"><input type="checkbox" name="age[]" class="ages" id="teens" value="teens"> Ages 11-19 </label>
       <label for="twentys" id="twenty"><input type="checkbox" name="age[]" class="ages" id="twentys" value="twenties"> Ages 20-29</label>
       <label for="thirtys" id="thirty"><input type="checkbox" name="age[]" class="ages" id="thirtys" value="thirties"> Ages 30-39 </label>
       <label for="fourtys" id="fourty"><input type="checkbox" name="age[]" class="ages" id="fourtys" value="forties"> Ages 40-49</label>
       <label for="fiftys" id="fifty"><input type="checkbox" name="age[]" class="ages" id="fiftys" value="fifties"> Ages 50-59 </label>
       <label for="sixtyplus" id="sixty"><input type="checkbox" name="age[]" class="ages" id="sixtyplus" value="sixtyup"> Ages 60+</label>';
}
?>
结合

$agegroups = $rs_elite_ages_array;
$array= ' ';

foreach ($agegroups as $row){
echo $addary .= $row .' ';
}
我的结果是2 2 2 2 2 2 2 2 2青少年2 2 2 2青少年

我想展示的是

因此,年龄组值与相关的“值”复选框匹配,如果该值存在,则选中该复选框,否则不选中该复选框

所以当我这样做的时候@Lelio Faieta

$sql="SELECT `agegroup` FROM `inf_ages_interacted` WHERE inf_id = $vId";
$rs = mysqli_query($vconncvnl,$sql);

while($row = mysqli_fetch_assoc($rs)){

print_r($row); echo '<br>';

} the results i get is 
而不是使用foreach使用while

这是的预期功能。如果不希望有重复项而只希望有关联数组,请改用

例如:

while ($row = mysql_fetch_assoc($data)) { ... }

请解释你想知道的重要输出。want不是word.@MD.JubairMizan我想要的输出是用inf\u id显示的项目,它们是相同的,因此对于这种情况,inf\u id=2,年龄组的结果是“孩子、青少年、二十岁,所以当我想让它们显示为选中状态时,请参见上面编辑的图像以显示,但什么都没有checked@danblack俚语中的同位语我现在就改。想要意味着想要;或者想要一个在这种情况下,我想采用这些方法,我想采用这些方法,是的,我知道SQL注入,我只是从code@MD.JubairMizan我添加了一个额外的图像,并解释如果您还需要什么,请提前询问并感谢您。因此,我尝试了$row=mysqli\u fetch\u assoc$rs\u elite\u ages{echo$row['agegroup'].';$count++;这给了我结果“kids Teventies twenties twenties Thorties”有没有办法在循环之外获取$row['agegroup']呢?因为我有以下$checked=strpos$row['agegroup'],'kids'!==false?'checked=checked':;echo'Ages 0-10';但是如果我把它放在while循环中,它只会为每个项目生成4个输入@MD.jubair如果你需要循环之外的数据,你必须为它生成另一个新数组,我在@Lelio Faieta的部分添加了一点额外的内容,这样你们都可以看到代码和结果一旦我使用了打印$row@Meitie因此,在while循环中,只需创建一个类似$data[]=$row['agegroup']的数组,并检查是否将此数组置于循环之外,然后您就可以轻松地使用in_数组或array_搜索来查找要检查的数组:D我添加了$data[]=$row['agegroup']然后在我的$checked=in_数组'kids'中使用了$data,$data?'checked=checked':;代码使用in_数组,现在一切正常:D
while ($row = mysql_fetch_assoc($data)) { ... }