在for循环javascript中显示唯一值

时间:2014-12-03 00:52:55

标签: javascript php html mysql

我正试图在下面的for循环中显示唯一值。从mysql中检索数据。目前,它显示此列中的所有值(书名),但只想显示唯一值并从显示中删除任何重复值。

<?php
$i=0;
while($rows=mysql_fetch_array($result))
{
$roll1[$i]=$rows['bkname'];
$i++;
}
$total_elmt=count($roll1);
?>
<form method="POST" action=" ">
<select name="sel1" id="sel1">
<option value="Select Book Name">Book Name</option>
<?php 
for($j=0;$j<$total_elmt;$j++)
{
?><option><?php 
echo $roll1[$j];
?></option><?php
}
?>
</select>
</form>

3 个答案:

答案 0 :(得分:1)

您可以在查询中使用DISTINCT子句,而不是删除PHP中的重复项:

<?php

$db = new mysqli('localhost', 'username', 'password', 'database_name');
// $sql = 'SELECT DISTINCT(bkname) FROM your_table_name';
$sql = 'SELECT * FROM your_table_name GROUP BY bkname';
$query = mysqli_query($db, $sql);

?>

<form method="POST" action="">
    <select name="sel1" id="sel1">
        <option disabled selected>Book Name</option>
        <?php while($row = mysqli_fetch_assoc($query)): ?>
            <option value="<?php echo $row['bkname']; ?>"><?php echo $row['bkname']; ?></option>
        <?php endwhile; ?>
    </select>
</form>

强制性注释:

  

Please, don't use mysql_* functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial

     

参考:https://stackoverflow.com/a/12860140/3859027

答案 1 :(得分:0)

PHP array_unique如何运作?

<?php
$input = array("Tale of two cities", "Tale of two cities", "A brief history of time", "Hop on Pop");
$noduplicates = array_unique($input);
var_dump($noduplicates);
?>

答案 2 :(得分:0)

使用DISTINCT关键字最容易在查询中处理此问题。如果您的查询类似于

  

SELECT bkname FROM Books;

相反,你会做

  

SELECT DISTINCT bkname FROM Books;

如果您不想修改数据集,并且只想从数据集中的一列中获取一组唯一值,则可以将这些值作为哈希映射插入到数组中。关键是确保唯一性并消除重复。

while($rows=mysql_fetch_array($result)){
    $roll1[$rows['bkname']] = $rows['bkname'];
}