选择列表框显示双倍相同的值

时间:2014-09-30 00:41:13

标签: php mysql select

我有一个包含人名的列表框。在“请求者”列中,有许多名称以相同的名称重复。因此,当我创建列表框时,名称会显示所有名称,而某些名称会显示多个具有相同名称的名称。我怎么能让名字只出来一个。以下是我的代码。

<select name="requestor" id="requestor">
    <option value="0">-- Select requestor --</option>
    <?php 
    $getallCapex_transaction = mysql_query("SELECT * FROM capex_transaction ");
    while($viewallCapex_transaction = mysql_fetch_array($getallCapex_transaction))
    {
    ?>
    <option id="<?php echo $viewallCapex_transaction ['Project_id'];?>"><?php 
    echo $viewallCapex_transaction['Requestor']; ?></option>
<?php } ?>
</select>

还有一个问题,如何显示与mySql连接的月份和年份列表?有人可以给我看一些代码。感谢

2 个答案:

答案 0 :(得分:0)

好吧,如果有多个行具有相同的&#34;请求者&#34;但是不同的&#34; Project_id&#34;,这就是它将如何发展。你可以在SQL中选择不同的Requestor,但这会让你不知道你指的是什么记录。

答案 1 :(得分:0)

将您的值放在数组中,并使用array_unique之类的内容来创建一个唯一的数组。尝试这样的事情:

<?php
    $requestorArray = array();
?>

<select name="requestor" id="requestor">
    <option value="0">-- Select requestor --</option>
    <?php 
        $getallCapex_transaction = mysql_query("SELECT * FROM capex_transaction ");
        while($viewallCapex_transaction = mysql_fetch_array($getallCapex_transaction))
        {
            $requestorArray[$viewallCapex_transaction ['Project_id']] = $viewallCapex_transaction['Requestor'];
        }

        $requestorArray = array_unique($requestorArray);
        foreach($requestorArray as $projectId => $requestor)
    ?>
            <option id="<?php echo $projectId;?>"><?php 
            echo $requestor; ?></option>
    <?php } ?>
</select>