/ / Mentre dentro un po '- php, while-loop

Mentre dentro un po '- php, while-loop

Sto cercando di contare quante volte è un hashtagmenzionato nel database. Quindi il primo è ottenere tutti gli hashtag, e il secondo è dentro l'altro mentre per contare quante volte l'hashtag è menzionato. Ma il problema è che i numeri non vanno d'accordo correttamente, è solo mostrare 1,2,3,4,5 .. ecc., E quando c'è un hashtag menzionato due volte mostra che è 3 + 4.

Come posso risolvere questo?

$i = 0;
$popular_hashtags_query = mysql_query("SELECT * FROM " . $dbPrefix . "hashtags WHERE status=1");

while ($popular_hashtags = mysql_fetch_array($popular_hashtags_query)) {
echo "<div class="hashtag_label"><a data-hover="";
$count_hashtags_query = mysql_query("SELECT * FROM " . $dbPrefix . "hashtags WHERE status=1 AND hashtag="" . $popular_hashtags["hashtag"] . """);
while ($count_hashtags = mysql_fetch_array($count_hashtags_query)) {
$i++;
echo $i;
}
echo ""><span>#".$popular_hashtags["hashtag"] . "</span></a></div>";
}

risposte:

1 per risposta № 1

Suggerisco di usare mysqli o PDO. in questo caso il gruppo per hashtag nella query è il modo migliore e non è necessario eseguire query e loop aggiuntivi.

$popular_hashtags_query = mysql_query("
SELECT
`hashtag`, count(*) AS `count`
FROM `" . $dbPrefix . "hashtags` WHERE `status` = 1 GROUP BY `hashtag`
");

while ($popular_hashtags = mysql_fetch_array($popular_hashtags_query)) {
echo "<div class="hashtag_label"><a data-hover="";
echo $popular_hashtags["count"];
echo ""><span>#" . $popular_hashtags["hashtag"] . "</span></a></div>";
}

0 per risposta № 2

Ci sono un sacco di problemi con il tuo codice. Innanzitutto, le funzioni mysql_ sono deprecate e alla fine verranno rimosse completamente da php, quindi dovresti passare alle funzioni mysqli_ o a un PDO.

Secondo, le tue azioni su $ i sono nel posto sbagliato. Dovresti essere resettato $i = 0 come prima azione all'interno del primo ciclo, oppure semplicemente andando a contare il numero totale di volte in cui viene utilizzato qualsiasi hashtag.

In terzo luogo, stai riecheggiando $ i all'interno del secondo tempoloop, il che significa che ogni volta che il ciclo viene eseguito, farai per sempre echi di numeri crescenti.L'eco dovrebbe essere al di fuori del ciclo interno, dopo aver contato le istanze dell'hashtag.

E infine, puoi realizzare tutto questo con un ciclo eseguendo "SELECT hashtag, count(*) FROM " . $dbPrefix . "hashtags WHERE status=1 group by hashtag"


0 per risposta № 3

Non è necessario eseguire il loop su tutti i record di una tabella per ripetere la stessa operazione. Quello che vuoi è usare una funzione di aggregazione nella tua query SQL.

Qualcosa come il seguente:

SELECT hashtag, COUNT(hashtag)
FROM hashtags
GROUP BY hashtag