将PHP变量输入HTML选择标记

时间:2009-12-09 17:15:04

标签: php html html-select

我有一个php变量($list),它是由逗号分隔的值列表。我试图弄清楚如何将此变量转换或输入到HTML选择标记。以下是我到目前为止的情况:

$dbquery = @$db->query('SELECT * FROM Company');
while ($queryText = $dbquery->fetchArray()){
  $array[]=$queryText['Company_Name'];
}
//the next batch of code, which is not included, converts the $array[] into a variable named $list//  
//the values for $list are: Company1, Company2, Company3, Company4...//

//HTML select tag//
echo '<select name="testSelect" id="testId">';
echo '<option value="'.$list.'">'.$list;
echo '</option></select>';

我知道我需要一个像“while”或“for”这样的循环来列出$ list中的值,但我不确定确切的语法。任何人都可以帮助我吗?

谢谢,

DFM

5 个答案:

答案 0 :(得分:3)

每个列表项(公司名称)都需要option元素。

<select name="testSelect" id="testId">
    <?php foreach ($array as $companyName): ?>
        <option value="<?php echo $companyName; ?>"><?php echo $companyName; ?></option>
    <?php endforeach; ?>
</select>

答案 1 :(得分:2)

您需要将explode()列表放入数组中(如果由于某种原因无法直接使用$array),请执行以下操作:

$listArray = explode(', ', $list);
echo '<select name="testSelect" id="testId">';
foreach ($listArray as $item)
    echo '<option value="'.htmlspecialchars($item).'">'. htmlspecialchars($item) . "</option>\n";
echo '</select>';

答案 2 :(得分:0)

请参阅implode()

您可以使用循环和字符串连接来模拟implode()函数。

例如:

$out = '';
$append = ', ';

for($arr as $v)
{
  $out .= $v.$append;
}

$out = substr($out, 0, (-1) * strlen($append));

答案 3 :(得分:0)

为什么首先将数组转换为逗号分隔列表?一旦你有一个数组,你可以做

foreach ($company in $list) {
    echo '<option value="' . htmlspecialchars($company) . '">' . htmlspecialchars($company) . '</option>';
}

输出您的选项。如果由于某些原因确实需要使用逗号分隔列表步骤,则可以始终使用explode(',',$ list)将其转换回数组。

答案 4 :(得分:0)

您可以使用explode()之类的东西将东西列表放入数组中,然后循环遍历......类似于:

$myArray = explode(",", $list);

echo "<select name=\"testSelect\" id=\"testId\">\n";
for($i = 0; $i < count($myArray); $i++) {
    // add each option to select list..
    echo "<option>" . $myArray[$i] . "</option>\n";
}
echo "</option>\n";

有关PHP explode()函数的更多信息:

http://www.php.net/manual/en/function.explode.php