|
|
|
| Решил сделать на сайте облако тегов но выдает ошибку - Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\pix\blocks\right.php on line 12. В чем может быть проблема? Спасибо...
Вот таблица mysql:
CREATE TABLE `tag` (
`tag` text NOT NULL,
`counter` varchar(5) NOT NULL
);
INSERT INTO `tag` VALUES ('Пиво', '323');
INSERT INTO `tag` VALUES ('Водка', '424');
INSERT INTO `tag` VALUES ('Коньяк', '160');
INSERT INTO `tag` VALUES ('Ликер', '127');
INSERT INTO `tag` VALUES ('Настойка', '95');
INSERT INTO `tag` VALUES ('Спирт', '153');
|
Вот пхп код:
mysql_connect('host', 'user', 'password') OR DIE("Нет соединения с базой.");
mysql_select_db("base") OR DIE("Не могу выбрать базу.");
mysql_query("SET NAMES 'utf8'"); // нужно подключиться к базе!
$terms = array(); // создали массив
$maximum = 0; // переменная для рассчёта максимального значения
$query = "SELECT tag, counter FROM `tag`"; // в таблице - теги и число использований. Выбираем.
while ($row = mysql_fetch_array($query))
{
$tag = $row['tag'];
$counter = $row['counter'];
if ($counter> $maximum) $maximum = $counter; // обновляем максимум. В таблице не должно быть нулей.
$terms[] = array('tag' => $tag, 'counter' => $counter); // добавляем в массив
}
shuffle($terms); // перемешиваем массив, если нужно.
echo "<div id='tagcloud'><div>\n"; // начинаем вывод облака
foreach ($terms as $k) // бежим по тегам в массиве
{
$percent = floor(($k['counter'] / $maximum) * 100); // рассчёт популярности тега в процентах
// определяем класс для тега из его популярности
if ($percent <20)
{
$class = 'smallest';
} elseif ($percent>= 20 and $percent <40) {
$class = 'small';
} elseif ($percent>= 40 and $percent <60) {
$class = 'medium';
} elseif ($percent>= 60 and $percent <80) {
$class = 'large';
} else {
$class = 'largest';
}
// выводим тег
echo "<span class='$class'><a href='tag.php?q=" . urlencode($k['tag']) . "' title='" . $k['tag'] . "'>" . $k['tag'] . "</a></span>\n ";
// здесь tag.php - страница, на которую создаются ссылки из облака.
}
echo "</div></div><br />\n";
|
| |
|
|
|
|
|
|
|
для: bigpit
(23.01.2012 в 14:02)
| | Дело в том, что функция mysql_fetch_array() принимает дескриптор результирующей таблицы, т.е. запрос нужно передать mysql_query(), она выполнит запрос, получит данные, а вам вернет дескриптор, по которому вы сможете прочитать данные из результирующей таблицы при помощи функции mysql_fetch_array(). Без mysql_query() никак не обойтись. | |
|
|
|
|
|
|
|
для: bigpit
(23.01.2012 в 14:02)
| |
<?
mysql_connect('host', 'user', 'password') OR DIE("Нет соединения с базой.");
mysql_select_db("base") OR DIE("Не могу выбрать базу.");
mysql_query("SET NAMES 'utf8'"); // нужно подключиться к базе!
$terms = array(); // создали массив
$maximum = 0; // переменная для рассчёта максимального значения
$query = mysql_query("SELECT tag, counter FROM `tag`") or die ("ошибка в запросе ", mysql_error()); // в таблице - теги и число использований. Выбираем.
while ($row = mysql_fetch_array($query))
{
$tag = $row['tag'];
$counter = $row['counter'];
if ($counter> $maximum) $maximum = $counter; // обновляем максимум. В таблице не должно быть нулей.
$terms[] = array('tag' => $tag, 'counter' => $counter); // добавляем в массив
}
shuffle($terms); // перемешиваем массив, если нужно.
echo "<div id='tagcloud'><div>\n"; // начинаем вывод облака
foreach ($terms as $k) // бежим по тегам в массиве
{
$percent = floor(($k['counter'] / $maximum) * 100); // рассчёт популярности тега в процентах
// определяем класс для тега из его популярности
if ($percent <20)
{
$class = 'smallest';
} elseif ($percent>= 20 and $percent <40) {
$class = 'small';
} elseif ($percent>= 40 and $percent <60) {
$class = 'medium';
} elseif ($percent>= 60 and $percent <80) {
$class = 'large';
} else {
$class = 'largest';
}
// выводим тег
echo "<span class='$class'><a href='tag.php?q=" . urlencode($k['tag']) . "' title='" . $k['tag'] . "'>" . $k['tag'] . "</a></span>\n ";
// здесь tag.php - страница, на которую создаются ссылки из облака.
}
echo "</div></div><br />\n";
?>
|
| |
|
|
|