Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
 
 автор: bigpit   (23.01.2012 в 14:02)   письмо автору
 
 

Решил сделать на сайте облако тегов но выдает ошибку - 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";

  Ответить  
 
 автор: cheops   (23.01.2012 в 14:09)   письмо автору
 
   для: bigpit   (23.01.2012 в 14:02)
 

Дело в том, что функция mysql_fetch_array() принимает дескриптор результирующей таблицы, т.е. запрос нужно передать mysql_query(), она выполнит запрос, получит данные, а вам вернет дескриптор, по которому вы сможете прочитать данные из результирующей таблицы при помощи функции mysql_fetch_array(). Без mysql_query() никак не обойтись.

  Ответить  
 
 автор: Ильдар   (23.01.2012 в 14:31)   письмо автору
 
   для: 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";
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования