【发布时间】:2019-07-04 16:43:55
【问题描述】:
我有一份调查问卷,其中包含一个年龄复选框列表,这些复选框保存到数据库中的每个不同行但相同的外部 id (请参见 select 语句下方的图像以及我得到的结果)。现在我想把这 4 个结果放回一个复选框列表中,如果有一个值,复选框被选中,我让它在实际问卷中工作的方式(如果说验证失败是通过查询字符串,所以代码看起来像下面的代码槽 1)
但现在我使用的是 CMS,所以它直接从数据库中获取结果,所以我不太确定如何将 4 个值放入一个数组中,我可以使用它来检查 in_array 中显示的代码槽。
问卷中的 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”
因此年龄组值与相关值的复选框匹配,如果存在该值,则选中该框,否则不选中该框
所以当我这样做时@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
【问题讨论】:
-
请解释你想要什么输出
-
了解how to prevent SQL injection in PHP 很重要。 “想要”不是词。
-
@MD.JubairMizan 我想要的输出是与 inf_id 显示的项目相同,因此在这种情况下 inf_id = 2 并且“年龄组”中的结果是 'kids,teens,twenties ,30' 所以当我希望它们显示为已选中时(请参阅上面的已编辑图像以显示)但未选中任何内容
-
@danblack appologies 是俚语,现在要改了。 “想要的意思是想要;或者想要一个”在这种情况下“我想要接受那些”的意思是“我想要接受那些”,是的,我知道 SQL 注入,我刚刚从代码中获取了相关的片段
-
@MD.JubairMizan 我添加了一张额外的图片并解释如果您需要其他任何东西,请提前询问并感谢您
标签: php mysql arrays loops checkbox