0

投票リストのようなものを作りたいです。入力したデータをmysqlデータベースに保存するフォームがあります。ユーザーが「何か」と入力したとします。「bname」という列に保存されます。今私が欲しいのは、10人が「何か」または「何か」を入力したと仮定します(方法があれば大文字と小文字の区別は自動的に無視されますか?)そして、「何か - 10」がphpページに印刷されます。

私の試み:

$query="SELECT bname, count 
FROM brandnames 
GROUP BY bname 
HAVING COUNT(*) > 0
LIMIT 11";

$result=mysqli_query($con,$query) or die('Error!: ' . mysqli_error($con));

$query2="SELECT count
FROM brandnames
GROUP BY count
HAVING COUNT(*) > 0
ORDER BY count DESC
LIMIT 11";

$result2=mysqli_query($con,$query2) or die('Counting Error!: ' . mysqli_error($con));

while ($row=mysqli_fetch_assoc($result))
{
while ($row2=mysqli_fetch_assoc($result2))
{
echo ($row['bname'] . '&nbsp' . '-' . '&nbsp' . $row2['count'] . '<br />');
}
}

このことは何かを出力します - 4 何か - 3

この方法は使いたくありません。誰かが私に投稿するように指摘する投稿をしないかのように投稿しました。:/

「カウント」列を使用したくありません。上で述べたように、単純な投票リストが必要です。

ありがとう、 :)

4

2 に答える 2

1

探しているクエリは次のようになります

select bname, count(*) as nbr
  from brandnames
 group by bname
 order by nbr desc
limit 11;

count(*) は、bname でグループ化された行数を返します。大文字と小文字の区別は、連合によって異なります。大文字と小文字を区別する結合の場合は、代わりに lower(bname) でグループ化する必要があります。これにより、このクエリでインデックスが機能しなくなる可能性があることに注意してください。

于 2013-03-07T20:39:11.653 に答える
0

皆さんに感謝します。私はこれを行う方法を知りました。これが誰かに役立つことを願っています:) @Andreas Wederbrandに感謝します

<?php

//Create Connection

$query="SELECT columnname, count(*)
AS alias
FROM tablename
GROUP BY columnname
ORDER BY alias DESC";

$result=mysqli_query($con,$query) or die('Counting Error!: ' . mysqli_error($con));



while ($row=mysqli_fetch_array($result))
{
echo ($row['columnname'] . '&nbsp' . '-' . '&nbsp' . $row['alias'] . '<br />');
}

//Close Connection
?>
于 2013-03-07T21:38:50.160 に答える