2016-12-03 64 views
0

我試圖在一段時間內找到字母的出現()..但它現在對我來說還不是很適合。 ..這是我現在所擁有的代碼:檢查並顯示出現信件的次數(A,B,C等)。PHP

$sql = "SELECT name FROM shops ORDER BY name ASC"; 
$result = mysqli_query($conn,$sql); 

// Previous or first letter 
$first = ""; 
// Current letter 
$current = ""; 
$c_instances = 0; 
while($obj = mysqli_fetch_object($result)){ 

    $current = strtoupper(substr($obj->name,0,1)); 

    if(empty($first)){ 
     $first = strtoupper(substr($obj->name,0,1)); 
    } 

    if($current != $first){ 
     ?> 
      <a href=""><li><?=$first;?> <span><?=$c_instances;?></span></li></a> 
     <? 
     $first = strtoupper(substr($obj->name,0,1)); 
     $c_instances = 0; 
    } 
    $c_instances++; 

} 

這不工作之類的,但是當它涉及到的最後一個字母,它並沒有表現出來。現在它是現在,它的範圍從A-H,但它只顯示從A到F,而不是最後兩個以「H」開頭的商店。我有點知道是什麼造成了它,但我的大腦現在無法繞過它。我相信這是因爲它使用$ first而不是$ current,所以它會回顯出前面的那個。讓我知道是否你有一個想法來解決這個..謝謝

enter image description here

+0

當然,你可以做到這一點的計算在SQL – RiggsFolly

+1

你只需要在你的'while'循環之外重複這一行(再一次),'

  • ' –

    +0

    謝謝你的隊友。 – Anders

    回答

    1

    你可以得到SQL來完成所有的工作適合你,如果你想

    SELECT SUBSTRING(name,1,1) as First, count(name) 
    from shops 
    GROUP BY First 
    ORDER BY First; 
    
    相關問題