Сортиране на най-често използваните думи в ...

WildBeast

Registered
Искам чрез PHP да преброя една дума колко пъти съществува във всичките мнения, записани в базата данни на phpBB форум, тоест да се създаде топ 50 на най-използваните думи. Трябва ми спешно! Моля, помогнете ми :(...
 
Ми ... ето ти една идейка. Правиш си база данни, в която ще съхваняваш думите, както и колко пъти са използвани
CREATE TABLE `words` (
`id` int(10) NOT NULL auto_increment,
`word` varchar(30) NOT NULL,
`counter` int(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
и при всеки пост ползваш тази проверка
$message = htmlspecialchars(addslashes($_POST['message']));
$words = explode(" ",$message);
$countword = count($words);
for ($i = 0;$i < $countword;$i++) {
if (strlen($words[$i]) > 3) {
echo $words[$i]." (".strlen($words[$i]).")<br />";
$check = mysql_query("SELECT `word` FROM `words` WHERE `word` = '".$words[$i]."'")or die(mysql_error());
if (mysql_num_rows($check) > 0) {
mysql_query("UPDATE `words` SET `counter` = `counter` + 1 WHERE `word` = '".$words[$i]."'")or die(mysql_error());
}
else {
mysql_query("INSERT INTO `words` VALUES ('NULL','".$words[$i]."','1')")or die(mysql_error());
}
}
}
за по-лесно може да си я сложиш в някоя функцийка и да я викаш където ти трябва.
И остава извеждането на десетта най-ползвани думи
$query = mysql_query("SELECT `word`,`counter` FROM `words` ORDER BY `counter` DESC LIMIT 10")or die(mysql_error());
while ($word = mysql_fetch_assoc($query)) { echo $word['word']." (".$word['counter'].")<br />"; }
:idea:
 
Форума е активен от поне 2-3 години и има над 150 000 мнения, твоя скрипт не помага ако съдя по обясненията ти без да гледам кода..
 
Идеята е същата ,само че вместо да записваш думите след поста ще трябва да го направиш по друг начин.
Тоест: един цикъл да обходи всички мнения ,всяко мнение да го раздроби на думи и да го запише в базата данни. Останалото (колкото и малко да е) е да изведеш самите думи.

Та по твоето обяснение от мене толкова, не знам дали ще ти е от полза - но това е само идейка ;)
 

Back
Горе