Ivan Pandžić
Ivan Pandžić

Reputation: 373

Creating dynamic dropdown lists

I want to create dynamic select lists. For example: I have 5 students in my db. My goal is to create 5 selects ,and in every select all students which are in database. So if user inserts a 6th student in the database, the page should display 6 selects, and in every select names of 6 students.

I've tried with this code, but it only creates 1 select, containing 4 students(the first one from the db is missing).

The Code:

$con=mysqli_connect("localhost","root","","novi-studomat");
$exe="SELECT * FROM kolegij WHERE id_student='$id_student'";
$i=1;
$execute=mysqli_query($con,$exe);
while($result=mysqli_fetch_array($execute))
{
echo '<select name=student'.$i.'>';
echo '<option value="-1" >Choose student</option> <br/>';
while($res=mysqli_fetch_array($execute))
{
    echo '<option value='.$res["id_student"].'>'.$res["name"].'</option> <br/>';
}
echo '</select>';
$i++;
}

Upvotes: 1

Views: 122

Answers (2)

Ivan Pandžić
Ivan Pandžić

Reputation: 373

Problem solved, I just needed to insert vars $exe and $execute inside for loop, so after every iteration $result is refreshed,otherwise it just prints options in first select...

CODE:

$con=mysqli_connect("localhost","root","","novi-studomat");
$exe="SELECT * FROM kolegij WHERE id_student='$id_student'";

$execute=mysqli_query($con,$exe);
$select = '';

for($j = 0; $j < mysqli_num_rows($execute); $j++) 
{
    $exe="SELECT * FROM kolegij WHERE id_student='$id_student'";
    $execute=mysqli_query($con,$exe);

    $select .= '<select name=student' . $j . '>';
    $select .= '<option value="-1" >Choose student</option> <br/>';
    while($result=mysqli_fetch_array($execute)) 
    {
         $select .= '<option value=' . $res["id_student"].'>' .   $res["name"] . '</option>';
    }
    $select .= '</select>';
}
echo $select;

Upvotes: 0

Memolition
Memolition

Reputation: 494

$con=mysqli_connect("localhost","root","","novi-studomat");
$exe="SELECT * FROM kolegij WHERE id_student='$id_student'";

$i=1;
$execute=mysqli_query($con,$exe);
$select = '';
for($j = 0; $j < mysqli_num_rows($execute); $j++) {
    $select .= '<select name=student' . $j . '>';
    $select .= '<option value="-1" >Choose student</option> <br/>';
    while($result=mysqli_fetch_array($execute)) {
        $select .= '<option value=' . $res["id_student"].'>' .   $res["name"] . '</option>';
        $i++;
    }
    $select .= '</select>';
}
echo $select;

UPDATE

inside the while

$select = '<select name=student' . $j . '>';
$select .= '<option value=' . $res["id_student"].'>' .   $res["name"] . 

change this lines by this other

$select = '<select name="student' . $j . '">';
$select .= '<option value="' . $res["id_student"]."'>' .   $res["name"] . 

we missed the double quotes for value and in select name

Upvotes: 2

Related Questions