I am having trouble with my HTML/PHP table i am trying to populate html select tag with data from database and show it in table. But select tag with database data is only shown in first row of the table. Here is my code:
$result2 = mysqli_query($con,"SELECT vozac FROM vozaci");
$result = mysqli_query($con,"SELECT registracija,tip,status,vozac,napomena2,IDV FROM status_vozila order by status desc")
or die("Error: ".mysqli_error($con));
while($row = mysqli_fetch_array($result))
{
echo '<form action="" method="post">';
echo '<tr>';
echo '<td>'.$row['registracija'].'</td>';
echo '<td>'.$row['tip'].'</td>';
echo '<td>'.$row['status'].'</td>';
echo '<td>
<select name="statusi">
<option value="Na parkingu" name="Na parkingu">Na parkingu</option>
<option value="Na turi" name="Na turi">Na turi</option>
<option value="Potreban radionici" name="Potreban radionici">Potreban radionici</option>
<option value="Potreban radionici-na parkingu" name="Potreban radionici-na parkingu">Potreban radionici-na parkingu</option>
<option value="Potreban radionici-na turi" name="Potreban radionici-na putu">Potreban radionici-na turi</option>
<option value="Razvoz" name="Razvoz">Razvoz</option>
</select>
<input type="submit" name="update" value="Promeni" /></td>';
echo '<td>'.$row['vozac'].'</td>';
echo '<td>';
echo '<select name="list">';
while ($row = mysqli_fetch_array($result2)) {
echo '<option value="' . $row['vozac'] .'">' . $row['vozac'] .'</option>';
}
echo '</select>';
echo '</td>';
echo '<td>'.$row['napomena2'].'</td>';
echo '<td><input type="text" name="napomena2" value=""><input type="submit" name="update3" value="Dodaj" /></td>';
echo'<td><input type="hidden" name="IDV" value="'.$row['IDV'].'"></td>';
echo '</tr>';
echo '</form>';
}
mysqli_close($con);
?>
You are overwriting row
variable. in other loop change variable name
while ($row1 = mysqli_fetch_array($result2)) {
echo '<option value="' . $row1['vozac'] .'">' . $row1['vozac'] .'</option>';
}
Also You need to store all values in one array first then traverse it. Instead of calling same query multiple times. Once your data is fetched. It will not execute again until you call (mysqli_query()
) query again.
edit
I already mention that store all values in one array first then traverse it. Try this code:
$result2 = mysqli_query($con,"SELECT vozac FROM vozaci");
$list_vozaci = array();
while ($row = mysqli_fetch_array($result2)) {
$list_vozaci[] = $row['vozac'];
}
$result = mysqli_query($con,"SELECT registracija,tip,status,vozac,napomena2,IDV FROM status_vozila order by status desc")
or die("Error: ".mysqli_error($con));
while($row = mysqli_fetch_array($result))
{
echo '<form action="" method="post">';
echo '<tr>';
echo '<td>'.$row['registracija'].'</td>';
echo '<td>'.$row['tip'].'</td>';
echo '<td>'.$row['status'].'</td>';
echo '<td>
<select name="statusi">
<option value="Na parkingu" name="Na parkingu">Na parkingu</option>
<option value="Na turi" name="Na turi">Na turi</option>
<option value="Potreban radionici" name="Potreban radionici">Potreban radionici</option>
<option value="Potreban radionici-na parkingu" name="Potreban radionici-na parkingu">Potreban radionici-na parkingu</option>
<option value="Potreban radionici-na turi" name="Potreban radionici-na putu">Potreban radionici-na turi</option>
<option value="Razvoz" name="Razvoz">Razvoz</option>
</select>
<input type="submit" name="update" value="Promeni" /></td>';
echo '<td>'.$row['vozac'].'</td>';
echo '<td>';
echo '<select name="list">';
foreach ($list_vozaci as $key => $value) {
echo '<option value="' . $value .'">' . $value .'</option>';
}
echo '</select>';
echo '</td>';
echo '<td>'.$row['napomena2'].'</td>';
echo '<td><input type="text" name="napomena2" value=""><input type="submit" name="update3" value="Dodaj" /></td>';
echo'<td><input type="hidden" name="IDV" value="'.$row['IDV'].'"></td>';
echo '</tr>';
echo '</form>';
}
mysqli_close($con);
?>