-2

此处的代码在 Chrome 中有效,其中数据库列表显示在下拉框中,但是在 IE 中它只是列出而不在下拉框中:

if (!$result)
{
/*echo $query;*/
$message = 'ERROR: ' . sqlsrv_errors();
return $message;
}
else
{ 
$i = 0;
echo '<html><body><table><tr><td>&nbsp;Forte ID:&nbsp;&nbsp;&nbsp;</td></tr><select id="ForteID" name="ForteID"><table width="150"><tr>';
while ($i < sqlsrv_num_rows($result))
{
    $meta = sqlsrv_fetch($result, $i);
    echo '<td>' . $meta->name . '</td>';
    $i = $i + 1;
}
echo '';

while ( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ))
{
    $count = count($row);
    $y = 0;
    echo '<tr><option>';
    while ($y < $count)
    {
        $c_row = current($row);
        echo '<td>' . $c_row . '</td>';
        next($row);
        $y = $y + 1;
    }
    echo '</option></tr>';
}
sqlsrv_free_stmt ($result);

echo '</table></select></body></html>';
}
sqlsrv_close( $connection);
?>

让我知道是否需要更好地描述。提前致谢!

编辑:

这就是我现在所拥有的:

<?php
$serverName = 'localhost\SQLEXPRESS';
$connectionInfo = array('Database'=>'database', 'UID'=>'username', 'PWD'=>'password','ReturnDatesAsStrings'=>true,);
$connection = sqlsrv_connect($serverName, $connectionInfo);

$query = '  SELECT Column1
        FROM database.dbo.Reps 
        ORDER By Column1';
$result = sqlsrv_query($connection,$query);

// Move the data to a simple array to simplify presentation code.
$resultAsArray = array(); 
while ( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC )) {
$resultAsArray []= $row;
}
?>

<form method="get" action="getlog.php">
<select>
<?php foreach ($resultAsArray as $row): ?>
<option value="<?php= $row['Column1'] ?>"><?php= $row['Column1'] ?></option>
<?php endforeach; ?>
</select>
<input type="submit" name="getLog" value="Get Log">
</form>
</html>
4

1 回答 1

4

正如第一条评论所述,不应期望在 select 中嵌套表。我假设您只是想将数据库查询的内容放入选择中。为此,您只需要<select><option>标签。此外,为了帮助您的代码更具可读性(和可维护性!),请将您的代码分成两部分,即数据库访问和演示。我不使用 sqlsrv 库,所以我将只使用伪代码进行数据库访问。

<?php
$resultSet = db_call_to_load_the_data();

// Move the data to a simple array to simplify presentation code.
$resultAsArray = array(); 
while ($row = $resultSet->getNextRow()) {
    $resultAsArray []= $row;
}

然后显示它...

<select>
<?php foreach ($resultAsArray as $row): ?>
    <option value="<?= $row['value_column'] ?>"><?= $row['display_value_column'] ?></option>
<?php endforeach; ?>
</select>

我想这就是你要找的。如果我把事情简单化了,我很抱歉。

于 2012-12-18T20:56:03.880 回答