Chris
Chris

Reputation: 545

Populate multiple drop-down lists with a single query

I have four drop-down lists that I would like to populate with values from an MSSQL table. All four lists should contain the same values. The query looks like this:

$data = $con->prepare("SELECT ID, Code FROM Table WHERE Code = :value ORDER BY Code");
$input = array('value'=>'value'); //'value' is hardcoded, not a variable
$data->execute($input);

And here is the code for my drop-downs:

<?php 
echo "<select name=\"proj1[]\">";
while($row = $data->fetch(PDO::FETCH_BOTH))
{
  echo "<option value='".$row['Code']."'>".$row['Code']."</option> ";
}
echo "</select>";
?>

This works fine for one drop-down. If I try to create another one (proj2[], proj3[], proj4[]) and apply the same query, however, the PHP page stops loading at that point and the second drop-down does not populate. The only way I've found around it is to copy the query and change the variables ($data becomes $data2 for proj2[], and so on). I'd really rather not have to write the same query four times. Is there a way around it?

Upvotes: 0

Views: 1181

Answers (2)

Jeppe
Jeppe

Reputation: 2233

Why not just put all of it in a veriable and then using it 4 times? Somthing like this:

<?php
while($row = $data->fetch(PDO::FETCH_BOTH))
{
  $options .= "<option value='".$row['Code']."'>".$row['Code']."</option> ";
}
for($i = 0; $i <= 4; $i++){
echo "<select name=\"proj1[]\">";
echo $options;
echo "</select>";
}
?>

Upvotes: 0

AbraCadaver
AbraCadaver

Reputation: 78984

$select = '';

while($row = $data->fetch(PDO::FETCH_BOTH))
{
  $select .= "<option value='".$row['Code']."'>".$row['Code']."</option> ";
}

echo "<select name=\"proj1[]\">";
echo $select;
echo "</select>";

echo "<select name=\"proj2[]\">";
echo $select;
echo "</select>";

//etc...

Upvotes: 2

Related Questions