Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Топ запросов


Автор: vitalina 30.6.2009, 23:58
Здравствуйте! Помогите, пожалуйста. 

Есть форма поиска. Вот я хочу знать что ищут люди на моём сайте : какие слова и фразы они вводят в форму поиска, как часто они это ищут...

Автор: MoLeX 1.7.2009, 06:17
так сохраняй то что ищут в СУБД или в файлик

Автор: lelik133 1.7.2009, 08:14
лучше в БД, будет проще строить топ

Автор: vitalina 1.7.2009, 12:49
Спасибо, попробую. 

Автор: vitalina 3.7.2009, 11:30
Создала таблицу searchword (id, searchword, date)
Вывела searchword, количество поисковых фраз, количество уникальных, вывела уникальные.
А как вывести количество фраз в уникальных запросах не знаю! То есть:

uyg8i 03.07.2009
gghloh 03.07.2009
Дева 03.07.2009
Весы 03.07.2009
Дева 03.07.2009
Весы 02.07.2009

Мне надо так:

uyg8i        1
gghloh      1
Дева         2
Весы         2

Чтоб количество правилтно считало, а то у меня считает все по 1...

$r5=mysql_query("select count(DISTINCT searchword) AS cnt, searchword from searchword group by searchword order by searchword desc");
for ($i=0; $i<mysql_num_rows($r5); $i++)
{
$f5=mysql_fetch_array($r5);
echo ($f5[searchword]."".$f5[cnt]);

Автор: lelik133 3.7.2009, 12:06
group by и count

Автор: vitalina 3.7.2009, 12:34
...

Автор: lelik133 3.7.2009, 12:41
group by и count их надо использовать вместе
Код

select `Field`,count(`Field`) as num from `table` group by `Field`

в общем виде

Автор: icewind 3.7.2009, 12:45
Как- то так
Код

SELECT searchword, COUNT(*) as cnt FROM searchword GROUP BY searchword ORDER BY cnt ASC

а вообще не хорошо называть таблицу и поле одним именем
lelik133 опередил  smile 

Автор: vitalina 3.7.2009, 12:53
Цитата(icewind @ 3.7.2009,  12:45)
Как- то так
Код

SELECT searchword, COUNT(*) as cnt FROM searchword GROUP BY searchword ORDER BY cnt ASC

а вообще не хорошо называть таблицу и поле одним именем
lelik133 опередил  smile

Ну и что же он по Вашему посчитает???

Автор: icewind 3.7.2009, 12:59
Цитата(vitalina @  3.7.2009,  11:30 Найти цитируемый пост)
А как вывести количество фраз в уникальных запросах не знаю! То есть:

Вот ответ.
Цитата(vitalina @  3.7.2009,  12:53 Найти цитируемый пост)
Ну и что же он по Вашему посчитает???

А по вашему что должен?
Насколько я понял надо было вывести так 
Цитата

uyg8i        1
gghloh      1
Дева         2
Весы         2

Автор: vitalina 3.7.2009, 13:01
Выведет количество уникальных запросов

Автор: patap 3.7.2009, 13:02
можно еще DISTINCT вместо Group

Автор: icewind 3.7.2009, 13:05
А к чему тогда пример того что вам нужно? Какой вопрос, такой ответ
Код

SELECT COUNT(DISTINCT(`searchword`)) FROM searchword

Автор: lelik133 3.7.2009, 13:06
он выведет сколько раз у вас в таблице встречается каждый запрос
как раз
uyg8i        1
gghloh      1
Дева         2
Весы         2

Автор: vitalina 3.7.2009, 13:12
Мне нужна частота повторений уникальных фраз

Добавлено через 2 минуты и 57 секунд
Как вывест эти цифры???

Добавлено через 5 минут и 44 секунды

$r5=mysql_query("select count(DISTINCT searchword), searchword from searchword group by searchword order by searchword desc");
for ($i=0; $i<mysql_num_rows($r5); $i++)
{
$f5=mysql_fetch_array($r5);
echo ($f5[searchword]."<br>");

Автор: patap 3.7.2009, 13:18
mysql_fetch_array() или mysql_fetch_assoc()

да вообще как обычно ты все и выовдишь 


Код

$r5=mysql_query("select count(DISTINCT searchword), searchword from searchword group by searchword order by searchword desc");
$num = mysql_num_rows($r5); // такие вещи желательно в цикл не пихать
for ($i = 0; $i < $num; $i++) {
    $mas = mysql_fetch_array($r5);
    echo $mas[1]. ' - ' .$mas[0].'<br />';
}

Автор: vitalina 3.7.2009, 13:24
как вывести правильное количество???

Добавлено через 2 минуты и 14 секунд
Выводит 
1
1
1
1
 а это не правильно

Добавлено через 2 минуты и 43 секунды
$r5=mysql_query("select count(DISTINCT searchword) AS cnt, searchword from searchword group by searchword order by searchword desc");
for ($i=0; $i<mysql_num_rows($r5); $i++)
{
$f5=mysql_fetch_array($r5);
echo ($f5[searchword]."".$f5[cnt]);

Автор: patap 3.7.2009, 13:44
ну ты ж в своем примере перетираешь результат 

тут
Код

$f5=mysql_fetch_array($r5);


а не пардон, не досмотрел немного.. )

Автор: vitalina 3.7.2009, 13:45
И что? Не поняла.

Добавлено через 1 минуту и 19 секунд
Как мне вывести правильное количество?

Автор: patap 3.7.2009, 13:53
Тебе ж написали запрос, который нормално работает!


Код

SELECT searchword, COUNT(*) as cnt FROM searchword GROUP BY searchword ORDER BY cnt ASC



зачем ты юзаешь это чудо, которое нифига не работает?????????? (не поленился взял и проверил)
Код

select count(DISTINCT searchword) AS cnt, searchword from searchword group by searchword order by searchword desc

Автор: vitalina 3.7.2009, 13:59
Fu... S4itaet nepraviljno!

Добавлено через 3 минуты и 19 секунд
Izvinite, uzhe praviljno!!! Spasibo!!!

Добавлено через 3 минуты и 41 секунду
 smile  smile 

Автор: icewind 3.7.2009, 14:27
Цитата(vitalina @  3.7.2009,  13:12 Найти цитируемый пост)
Мне нужна частота повторений уникальных фраз

Уникальные фразы повторятся не могут.  Их количество всегда одно число. Вам нужно было подсчитать количество повторений ВСЕХ фраз! Просто в другой раз чем точнее вы поставите вопрос, тем раньше получите ответ

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)