2016-08-03 13 views
-1

enter image description herePHP-Tabelle mit Comma [diese löschen]

Hier bekommen i mos beliebte Hashtags (mos Hashtags verwendet), aber Problem ist mit Komma meiner Anfrage Diesen:

Popular hashtags: 
#q7 (2) 
#q9 (2) 
#q7 , #q0 (1) 
#q0 (1) 

Ich möchte dies:

Popular hashtags: 
#q7 (3 times) 
#q9 (2 times) 
#q0 (2 times) 

mein Code:

$query_result = mysqli_query($Connection, "select hashtag, count(hashtag) as cnt 
from tricks 
group by hashtag 
order by cnt desc limit 5"); 

$results = array(); 
while($row = mysqli_fetch_assoc($query_result)) { 
    $results[] = "{$row['hashtag']} ({$row['cnt']})"; 
} 
echo "Popular hashtags: </br>", implode("</br>", $results); 
+0

print_r ($ ergebnisse); was es zeigt? –

+0

zeigen dies: Beliebte Hashtags: # q7 (2) # q9 (2) # q7, # q0 (1) # q0 (1), aber ist falsch –

+0

beacouse # q7 3times # q9 2times und # q0 verwendet wird Zeiten –

Antwort

1

Php Lösung:

$query_result = mysqli_query($Connection, 
        "SELECT hashtag FROM tricks");    

$popularHashtags = array(); 

while($row = mysqli_fetch_assoc($query_result)) { 

    $hashtags = explode(',', $row['hashtag']); 

    foreach($hashtags as $hashtag) { 
     $hashtag = trim($hashtag); 

     if (!empty($hashtag)) { 

     if (!isset($popularHashtags[$hashtag])) { 
      $popularHashtags[$hashtag] = 0; 
     } 

     $popularHashtags[$hashtag]++; 
     } 
    } 
} 


arsort($popularHashtags); 

// for showing popular hashtags 

echo "Popular hashtags: <br />"; 

foreach($popularHashtags as $hashtag => $total) { 
    echo $hashtag . " (" . $total . ") <br />"; 
} 
+0

Vielen Dank, aber jetzt zeigen Sie mir diesen Fehler: (!) Parse Fehler: Syntaxfehler, unerwartete '$ Zeile ' –

+0

Ich habe einige Änderungen vorgenommen. Könntest du das nochmal überprüfen? @ShkurtaAbazi – Depzor

+0

jetzt arbeiten, aber nicht korrekt zeigen :(siehe Bild: http://i.imgur.com/62IjVTw.png –

0

Wenn Sie die Anzahl der in diesem Feld enthaltenen Istags kennen, können Sie die Funktion SUBSTRING_INDEX verwenden, oder Sie können diese Antwort MySQL split sehen, um Ihr Feld zu teilen.

So etwas (ich habe nicht eine MySQL-Instanz):

SELECT hastag as T1 FROM tricks WHERE hastag NOT LIKE '%,%' -- Take the Hastag without separator in it 
UNION 
SELECT SUBSTRING_INDEX(hashtag, ',', 1) as T1 FROM tricks WHERE hastag LIKE '%,%' -- Take the first Hastag (before separator) 
UNION 
SELECT SUBSTRING_INDEX(hashtag, ',', 2) as T1 FROM tricks WHERE hastag LIKE '%,%' -- Take the second Hastag (before separator) 
+0

nicht arbeiten tut mir leid ... –

0

dies ausprobieren

select count(*) as total, hashtag FROM (
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(hashtag, ',', n.n), ',', -1) hashtag 
    FROM table CROSS JOIN 
(
    SELECT a.N + b.N * 10 + 1 n 
    FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a 
    ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b 
    ORDER BY n 
) n WHERE n.n <= 1 + (LENGTH(hashtag) - LENGTH(REPLACE(hashtag, ',', ''))) ORDER BY hashtag) alias GROUP by hashtag 

die Hilfe von this Antwort Nahm. Hoffe, das hilft dir