-1

I have questions that I can answer and everyting but some of them go up to F and some only to D so my question is how do I disable a button with no question behind it and keep the one that have questions.

I couldn't think of a way to solve this so thats why I am asking here.

$sql = "SELECT * FROM  questionlist_choice WHERE Qid='$Qid'";
   $result = mysqli_query($conn, $sql);
  if ($result->num_rows > 0) {
    $i = 0;
    $p = 1;
  while ($row = mysqli_fetch_assoc($result)) {
$vraag = $row['Vraag'];
$vraagA = $row['Vraag_keuzeA'];
$vraagB = $row['Vraag_keuzeB'];
$vraagC = $row['Vraag_keuzeC'];
$vraagD = $row['Vraag_keuzeD'];
$vraagE = $row['Vraag_keuzeE'];
$vraagF = $row['Vraag_keuzeF'];
$kikio =  "<div>
     <br><p>$p. $vraag</p>
     <input type='radio' name='q[$i]' value='A'required> $vraagA<br>
     <input type='radio' name='q[$i]' value='B'required> $vraagB<br>
     <input type='radio' name='q[$i]' value='C'required> $vraagC<br>
     <input type='radio' name='q[$i]' value='D'required> $vraagD<br>
     <input type='radio' name='q[$i]' value='E'required> $vraagE<br>
     <input type='radio' name='q[$i]' value='F'required> $vraagF<br>
 </div>";

 echo $kikio;
$i++;
$p++;
  }
}

?>    
<input value="submit" name="submit" type="submit">
</form>

I hope it will only show radio-buttons when there is a question with it.

Niels040
  • 79
  • 10
  • Instead of a fixed list of radio buttons, why don't you instead start with an empty list and add a radio for each question received from the database? – TommyN Sep 20 '19 at 07:35
  • @TommyN because its for multiple surveys and then I would have to change it for every new survey – Niels040 Sep 20 '19 at 07:37

3 Answers3

1

You can check value empty before ad string input: example:

    $kikio = 'div<br><p>$p. $vraag</p>';
     if($row['vraagA']!='') $kikio .= '<input type='radio' name='q[$i]' value='A'required> $vraagA<br>'; 
     if($row['vraagB']!='') $kikio .= '<input type='radio' name='q[$i]' value='B'required> $vraagB<br>';
     ...

     $kikio .= '</div>';
echo $kikio;
Au Nguyen
  • 655
  • 4
  • 12
1

You can disable the row when a result is empty (not tested!):

$result = mysqli_query($conn, $sql);
if ($result->num_rows > 0) {
    $i = 0;
    $p = 1;
    while ($row = mysqli_fetch_assoc($result)) {
        $vraag = $row['Vraag'];
        $form = '';
        echo "<div><br><p>$p. $vraag</p>";
        foreach(range('A','F') as $question) {
            ${'vraag'.$question} = $row['Vraag_keuze'.$question];
            $disabled = empty(${'vraag'.$question}) ? 'disabled' : '';
            $form .= "<input type='radio' name='q[$i]' value='A' required $disabled>${'vraag'.$question}<br>";
        }
        echo "$form </div>";
        $i++;
        $p++;
    }
}

?>    
<input value="submit" name="submit" type="submit">
</form>

Lukasz Formela
  • 447
  • 4
  • 17
1

Not tested but you could try dynamically building the html based upon whether or not a particular answer is empty of not ( presumably $row['Vraag_keuzeA'] etc are answers?! )

    $sql = "SELECT * FROM  questionlist_choice WHERE Qid='$Qid'";
    $result = mysqli_query($conn, $sql);

      if( $result->num_rows > 0 ) {
        $i = 0;
        $p = 1;

        $fields=array('Vraag_keuzeA','Vraag_keuzeB','Vraag_keuzeC','Vraag_keuzeD','Vraag_keuzeE','Vraag_keuzeF');
        $answers=array('A','B','C','D','E','F');


      while ($row = mysqli_fetch_assoc($result)) {
        $vraag = $row['Vraag'];

        $html=array();
        $html[]='<div>';
        $html[]=sprintf('<br><p>%s. $vraag</p>', $p );

        foreach( $fields as $index => $field ){
            if( !empty( $row[ $field ] ) ) {
                $html[]=sprintf(
                    '<input type="radio" name="%s" value="%s" required /> %s<br />', 
                    $q[ $i ], 
                    $answers[ $index ], 
                    $row[ $field ]
                );
        }
        $html[]='</div>';

        echo implode( PHP_EOL, $html );


        $i++;
        $p++;
      }
    }
?>
<input value="submit" name="submit" type="submit">
</form>
Professor Abronsius
  • 33,063
  • 5
  • 32
  • 46