Пишу скрипт облака тэгов. Начал делать ещё вчера, но застрял на одном моменте, когда скрипт делает совсем не то, что надо. В чём дело понять не могу. Вчера 4 часа бился над разгадкой и бес толку, сегодня вот уже 2,5 часа бьюсь и так не могу решить. Сил моих больше нет решать эту головоломку...
Задача такая: есть переменная $tags, которой передаются тэги через запятую, например: тэг1, тэг2, тэг3. Нужно сделать так, чтобы скрипт проверял если такой тэг в базе и если есть, то повышал его рейтинг на 1, а если нет (то есть это новый тэг), то просто записывал его в базу. Проблема в том, что он всегда пытается повысить рейтинг даже для тех тэгов, которых нет в базе! Почему так происходит?
// составим sql для записи новых тэгов либо увеличения рейтинга старых
if ($tags)
{
$tags_mas = explode(",", $tags); // объединим тэги в массив и удалим лишние пробелы по бокам
$count_tags = count($tags_mas); // подсчитаем сколько всего тэгов
for ($i=0; $i<$count_tags; $i++)
{
$tags_mas[$i] = trim($tags_mas[$i]);
$sql_select_tags[$i] = 'SELECT rating FROM '.$db["db_table_tags"].' WHERE tags="'.$tags_mas[$i].'" LIMIT 0, 1';
$result_select_tags[$i] = connect_bd($sql_select_tags[$i]);
if(!$result_select_tags[$i]) // запишем тэг в БД, если его до этого там не было
{
$sql = 'INSERT INTO '.$db['db_table_tags'].' (tags, rating) VALUES ("'.$tags_mas[$i].'", 1)';
$result_insert_tags = connect_bd($sql);
echo ' Выполняем запись!';
}
else // увеличим счётчик тэга, если он уже есть в БД
{
$count_rating[$i] = mysql_fetch_array($result_select_tags[$i]); // разложим полученные данные в массив
$count_rating[$i]['rating']++;
// формируем sql-строку и коннектимся к БД
$sql = 'UPDATE '.$db['db_table_tags'].' SET tags="'.$tags_mas[$i].'", rating="'.$count_rating[$i]['rating'].'" WHERE tags="'.$tags_mas[$i].'"';
$result = connect_bd($sql);
echo ' Выполняем увеличение!';
}
}
}
Вроде бы простой скрипт, а я застрял из-за него на много часов!