I have this select menu in a for loop, so the query is running multiple times. And a lot of more of these queries so page loads very slow.
<div class="col-md-4">
<label for="edit_kwaliteit_id['.$i.']">Kwaliteit</label>
<div class="form-group input-group has-success has-feedback" id="edit_kwaliteit_id_div['.$i.']">
<span class="input-group-addon"><span style="display: inline-block; width:15px; text-align:center;" class="fab fa-squarespace" aria-hidden="true"></span></span>
<select class="form-control" id="edit_kwaliteit_id['.$i.']" name="edit_kwaliteit_id" onchange="validate_edit_table_1(this, '.$i.')">';
$sql_kwal = "SELECT
id,
kwaliteit
FROM kwaliteit
ORDER BY kwaliteit ASC
";
if(!$res_kwal = mysqli_query($mysqli, $sql_kwal)) { echo '<div class="alert alert-danger text-center" role="alert">Er is helaas iets fout gegaan.</div>'; }
while($row_kwal = mysqli_fetch_array($res_kwal)) {
echo '<option ';if($row_table_1['kwaliteit_id'] == $row_kwal['id']) { echo 'selected="selected"';} echo 'value="'.$row_kwal['id'].'">'.$row_kwal['kwaliteit'].'</option>';
}
echo '
</select>
<span class="glyphicon glyphicon-ok form-control-feedback" id="edit_kwaliteit_id_glyp['.$i.']"></span>
</div>
</div>
Since the query is the same everytime I wanted to move the query out of the loop and place the query itself before the loop. Something like
<?php
// some code
$sql_kwal = "SELECT
id,
kwaliteit
FROM kwaliteit
ORDER BY kwaliteit ASC
";
if(!$res_kwal = mysqli_query($mysqli, $sql_kwal)) { echo '<div class="alert alert-danger text-center" role="alert">Er is helaas iets fout gegaan.</div>'; }
// start loop
<div class="col-md-4">
<label for="edit_kwaliteit_id['.$i.']">Kwaliteit</label>
<div class="form-group input-group has-success has-feedback" id="edit_kwaliteit_id_div['.$i.']">
<span class="input-group-addon"><span style="display: inline-block; width:15px; text-align:center;" class="fab fa-squarespace" aria-hidden="true"></span></span>
<select class="form-control" id="edit_kwaliteit_id['.$i.']" name="edit_kwaliteit_id" onchange="validate_edit_table_1(this, '.$i.')">';
while($row_kwal = mysqli_fetch_array($res_kwal)) {
echo '<option ';if($row_table_1['kwaliteit_id'] == $row_kwal['id']) { echo 'selected="selected"';} echo 'value="'.$row_kwal['id'].'">'.$row_kwal['kwaliteit'].'</option>';
}
echo '
</select>
<span class="glyphicon glyphicon-ok form-control-feedback" id="edit_kwaliteit_id_glyp['.$i.']"></span>
</div>
</div>
// end loop
?>
But now while($row_kwal = mysqli_fetch_array($res_kwal)) gives an empty result. Any suggestions to keep one query instead of an query in each loop?
if(!$res_kwal = mysqli_query($mysqli, $sql_kwal)) {...to$res_kwal = mysqli_query($mysqli, $sql_kwal); if (!$res_kwal) {...