php - 如何根据相同的外键将 SQL 数据库中的多行显示到复选框中

标签 php mysql arrays loops checkbox

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

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

enter image description here

问卷中的 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>';
}
?>

当我尝试使用时

//where $vId = 2;
$sql_elite_ages = "select * from inf_ages_interacted where inf_id = $vId";
$rs_elite_ages = mysqli_query($vconncvnl, $sql_elite_ages);
$rs_elite_ages_all = mysqli_fetch_assoc($rs_elite_ages);
$rs_elite_ages_array = mysqli_fetch_array($rs_elite_ages); 

结合

$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 2 teens 2 2 2 2 teens teens”

我想显示的是enter image description here

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

所以当我这样做时@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 

enter image description here

最佳答案

不要使用foreach(),而是使用while()

这是 mysql_fetch_array() 的预期功能。如果您不想拥有“重复项”而只拥有关联数组,请使用 mysql_fetch_assoc()相反。

示例:

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

关于php - 如何根据相同的外键将 SQL 数据库中的多行显示到复选框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54626319/

相关文章:

php - GoDaddy include_path 和 auto_prepend_file

mysql - 基于 Web 的 PhpMyAdmin 替代方案?

MySQL - 对 SELECT 结果进行 UNION

arrays - 在 GO 语言中删除和添加元素到数组

c - tictactoe 函数不接受输入值

php - 如何在 Zend Framework 查询中放置

php - 带有 Permissions API 的 Paypal 动态凭证

php - wordpress-独特场景-通过URL获取附件ID

mysql - 使用 VBA 将 mySQL 数据库中的值提取到 Excel 中

arrays - 在WebGL中将大数组传递给uniform