Как отобразить несколько строк из базы данных SQL в флажок на основе одного и того же внешнего ключа - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть анкета, в которой есть список флажков для возрастов, которые сохраняются в базе данных в каждой отдельной строке, но имеют тот же внешний идентификатор (см. Изображение под оператором select, а также результаты, которые я получаю).Теперь я хочу взять эти 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 подростки 2 2 2 2 подростки подростки"

я хочу показать это enter image description here

, поэтому значения возрастной группы соответствуют значимому флажку, и если значение присутствует, то флажок установлен, в противном случае оставьте флажок не отмеченным

, поэтому, когда я делаю этоway @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

1 Ответ

0 голосов
/ 11 февраля 2019

Вместо использования foreach() используйте while()

Это предполагаемая функциональность mysql_fetch_array () .Если вы не хотите иметь «дубликаты» и просто иметь ассоциативный массив, используйте взамен mysql_fetch_assoc () .

Пример:

while ($row = mysql_fetch_assoc($data)) { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...