2014-12-03 108 views
0

我試圖在下面的for循環中顯示唯一值。數據從mysql中檢索。目前,它顯示了此列(書名)中的所有值,但只想顯示唯一值並從顯示中刪除任何重複的值。在for循環中顯示唯一值javascript

<?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> 
+1

你可以只使用一個'DISTINCT'在你的查詢,而不是做,在PHP – Ghost 2014-12-03 00:54:40

+0

謝謝,但我想在這個下降仍表現出獨特的價值下降,因爲這個頁面被用於檢索數據,你可以助攻? – Ykstate 2014-12-03 00:57:19

回答

1

而不是在PHP刪除重複的,你可以只使用一個DISTINCT子句中查詢:

<?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

+0

謝謝,我完全糊塗,但它的工作。還有一個問題,因爲我有多個列,我怎麼能包括在DISTINCT查詢? – Ykstate 2014-12-03 01:17:53

+0

@Ykstate如果您還想要其他列,您可以使用「GROUP BY」來使用其他變體,請查看我上面的修訂 – Ghost 2014-12-03 01:23:47

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); 
?> 
0

這可以通過使用DISTINCT關鍵字在您的查詢中最容易處理。如果您的查詢類似

SELECT bkname FROM Books;

相反,你會怎麼做

SELECT DISTINCT bkname從書本;

如果你不想修改你的數據集,並且想從數據集中的一列中得到一個唯一值的數組,你可以將這些值插入到一個數組中作爲哈希映射。關鍵將確保唯一性並消除重複。

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