Как я могу показать переключатель как проверенный, когда значение соответствует значению в моей базе данных - PullRequest
0 голосов
/ 22 января 2019

У меня есть список, где люди могут отвечать на вопросы, у каждого вопроса есть три возможных ответа с помощью переключателей.

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

Обычные данные не проблема, но у меня возникают некоторые проблемы с переключателями.

Моя структура базы данных выглядитнапример:

wpi_info
-id
-other non important fields for this question 

wpi_categories 
- id
- title
- info_id (same as id of wpi_info)

wpi_questions
-id 
-title
-answer
-cid (same as id of wpi_categories)

Вот как я сейчас показываю переключатели (категории / вопросы отображаются, но переключатели не отмечены):

<?PHP
$een = 1;
$twee = 2;
$drie = 3;
$getcats = 'SELECT * FROM wpi_categories WHERE info_id = "'.$conn->real_escape_string($getinfo['id']).'" ORDER BY id';
$getcatscon = $conn->query($getcats);
while($getcats = $getcatscon->fetch_assoc()){
    if(!empty($getcats['title'])){
      $werkplekinspectie .= '
      <label class="categorytitle">'.$getcats['title'].'</label>
      <div class="row">';

      $getquestions = 'SELECT * from wpi_questions WHERE cid = "'.$getcats['id'].'"';
      $getquestionscon = $conn->query($getquestions);
      while($getquestions = $getquestionscon->fetch_assoc()){
        $werkplekinspectie .= '
        <div class="col-md-8">
          <p class="questionclass">'.$getquestions['title'].'</p>
        </div>
        <div class="col-md-4">
          <div class="container text-right">
              <input type="radio" name="questionlist['.$getcats['title'].']['.$getquestions['title'].']" id="radio-'.$een.'" value="ok" required>
              <label class="radiotoggle" for="radio-'.$een.'"><span class="radio">Ok</span></label>
              <input type="radio" name="questionlist['.$getcats['title'].']['.$getquestions['title'].']" id="radio-'.$twee.'" value="fout">
              <label class="radiotoggle" for="radio-'.$twee.'"><span class="radio">Fout</span></label>
              <input type="radio" name="questionlist['.$getcats['title'].']['.$getquestions['title'].']" id="radio-'.$drie.'" value="nvt">
              <label class="radiotoggle" for="radio-'.$drie.'"><span class="radio">N.v.t</span></label>
            </div>
        </div>';
        $een+=3;
        $twee+=3;
        $drie+=3;
      }
      $werkplekinspectie .= '
      </div>';
    }
}
echo $werkplekinspectie;
?>

Значения ok, nvt, fout - это то, что хранится в столбце answer в wpi_questions.

Для каждого переключателя, если ответ соответствует значению, которое необходимо проверить.Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 22 января 2019

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

<?php $gender ='male';?>
    <input type="radio" name="gender" value="male" <?php echo isset($gender) && !empty($gender) && $gender == 'male' ? 'checked'  :'' ; ?> > Male<br>
    <input type="radio" name="gender" value="female" <?php echo isset($gender) && !empty($gender) && $gender == 'female' ? 'checked'  :'' ; ?> > Female<br>
0 голосов
/ 22 января 2019

Вы можете просто проверить соответствие ответа и вывести атрибут checked:

'...
<input type="radio" name="questionlist['.$getcats['title'].']['.$getquestions['title'].']" id="radio-'.$een.'" value="ok" required ' . ($getquestions['answer'] == 'ok' ?'checked':'') . '>
<label class="radiotoggle" for="radio-'.$een.'"><span class="radio">Ok</span></label>
<input type="radio" name="questionlist['.$getcats['title'].']['.$getquestions['title'].']" id="radio-'.$twee.'" value="fout" ' . ($getquestions['answer'] == 'fout'?'checked':'') . '>
<label class="radiotoggle" for="radio-'.$twee.'"><span class="radio">Fout</span></label>
<input type="radio" name="questionlist['.$getcats['title'].']['.$getquestions['title'].']" id="radio-'.$drie.'" value="nvt" ' . ($getquestions['answer'] == 'nvt'?'checked':'') . '>
<label class="radiotoggle" for="radio-'.$drie.'"><span class="radio">N.v.t</span></label>
...'

однако весь кодовый блок очень трудно читать, и со временем, безусловно, появятся ошибки.

Широко признано, что смешивать логику доступа к данным с html - ужасная идея, но если вы застряли, поддерживая огромное старое унаследованное приложение, возможно, не удастся выполнить полный рефакторинг

В этом случае вы, по крайней мере, можете значительно упростить поддержку своего кода, разместив доступ к данным вверху и создав HTML-код снизу, используя синтаксис шаблонов phps вместо огромных конкатенаций строк.

0 голосов
/ 22 января 2019

Вы можете сделать это в jquery, проверив значение из базы данных и сохранив его, как проверено

 $('#id').prop('checked', true);
...