2016-08-21 3 views
2

私は、私のウェブサイト上の訪問者をジオロケーションに記録するPHPスクリプトを設定することができました。 私は米国のように各国のヒット数を計算するコードを編集しようとしています。 GB:2; ... これは、各列に "132"を返すコードであるため、各国固有のヒットはありません。PHP MYSQL:一意の各エントリの行を返します

$squery = 'SELECT `gcountry`, `dtime` FROM `allowed`'; 
$ress = mysqli_query($conn, $squery); 
echo '<style>.tables {margin-left: 6cm;}</style>'; 
echo '<table border="1" class="tables">'; 
echo'<th><font color="white">Country</font></th><th><font color="white">Date/Time</font></th><font color="white">Hits</font></th>'; 

while($data = mysqli_fetch_array($ress)) 
{ 
echo '<tr>'; 
echo '<td><font color="white">&nbsp;'.$data['gcountry'].'&nbsp;</font></td><td><font color="white">'.$data['dtime'].'&nbsp;</font></td><td><font color="white">'.mysqli_affected_rows($conn).'&nbsp;</font></td>'; 
echo '</tr>'; 
} 

はポストを編集、そう...ここ はコードで、テーブルエントリを取り付ける:

$squery = 'SELECT gcountry,COUNT(*) FROM allowed GROUP BY gcountry'; 
$ress = mysqli_query($conn, $squery); 

echo '<style>.tables {margin-left: 6cm;}</style>'; 
echo '<table border="1" class="tables">'; echo'<th><font color="white">Country</font></th><font color="white">Hits</font></th>'; 

while ($data = mysqli_fetch_array($ress)) { 
    echo'<tr>'; 
    echo '<td><font color="white">&nbsp;'.$data['gcountry'].'&nbsp;</font></td><td><td><font color="white">'.mysqli_affected_rows($conn).'&nbsp;</font></td>'; 
    echo'</tr>'; 
} 

表の内容:

IP    | UserAgent     |  GCOUNTRY    | GCITY     | DTIME 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   GB    | London      | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   RU    | Moscow      | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   GB    | London      | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   GB    | London      | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   US    | Lombard     | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   US    | San Antonio    | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   RO    | Constanta     | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   RO    | Bucharest     | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   RO    | Iasi      | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   NL    | Amsterdam     | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   US    | Fort Lauderdale   | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   RO    | Constanta     | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   RO    | Constanta     | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   RO    | Bucharest     | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   RU    | Moscow      | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   US    | Irving      | 21-08-2016 
xxx.xxx.xxx.xxx |Mozilla Firefox ....  |   US    | Anaheim     | 21-08-2016 
+0

詳細をいくつか挙げてください。このデータを抽出するデータベースの列。 –

+0

あなたの返信Rayをありがとう。データベース名:追跡;テーブル名:許可。列:IP、UA、GCOUNTRY、GCITY、DTIME。私はgcountryカラム – unkn0wnx

+0

の各国からのヒットをすべて抽出しようとしています。@Chrisは正しいです。これを使用して '$ squery = 'SELECT' gcountry'、GROUP BY 'gcountry'を許可したCOUNT(*)をチェックしてください。 ' –

答えて

2

を見てくださいthe COUNT function、およびその使用方法GROUP BY

Earlier, you retrieved the names of the people who owned pets. You can use COUNT() if you want to find out how many pets each owner has:

mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner; 

+--------+----------+ 
| owner | COUNT(*) | 
+--------+----------+ 
| Benny |  2 | 
| Diane |  2 | 
| Gwen |  3 | 
| Harold |  2 | 
+--------+----------+ 
+0

ちょっとクリス、あなたの返事をありがとう。私が 'gcountryを使用しようとしている場合、dtime COUNT(*)FROM' allowed' GROUP BY 'gcountry' ';警告:mysqli_fetch_array()は、パラメータ1がmysqli_result、booleanが.........であると想定しています。 – unkn0wnx

+0

1つの行だけを表示している場合は、 'dtime'に何が含まれると思いますか?国? MySQLは、そのカラムでグループ化関数を使用していないので、複数の値を1つに減らす方法を知りません。 SQLクエリが失敗するので、['mysqli_query'は' false'を返します](https://secure.php.net/manual/en/mysqli.query.php)、mysqli_fetch_arrayで結果を得ることはできません。クエリから 'dtime'を取り出してみてください。 – Chris

+0

同じエラー: 'SELECT' gcountry' COUNT(*)FROM 'allowed' GROUP BY 'gcountry''; – unkn0wnx

関連する問題