Автор Тема: Помогите найти баг в баннерокрутилке  (Прочитано 2723 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Mаster

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 71
  • +0/-0
  • 0
    • Просмотр профиля
    • http://code.msk.ru/
Есть файл класса:
<?php

class banners_mod {

	
var 
$banner_code;

	
function 
get_banner() {
  
$query mysql_query("SELECT * FROM banners AS banners WHERE banners.maxshowbanner > banners.showbanner ORDER BY banners.showbanner LIMIT 1");
  
$table_banners mysql_fetch_assoc($query);
  
$id $table_banners[\'id\'];
  if (mysql_query("UPDATE banners SET showbanner = \'".($table_banners[\'showbanner\']+1)."\' WHERE id = ".$id)) {
  
	
echo $table_banners[\'id\'];
  } else {
  
	
echo mysql_error();
  
	
exit;
  }
  $this->banner_code = $table_banners[\'code\'];
  return true;
	
}

}

$banners_mod = new banners_mod;

$banners_mod->get_banner();
echo $banners_mod->banner_code;

?>


Таблица выглядит так:

# Таблица баннеров
DROP TABLE IF EXISTS banners;
CREATE TABLE banners (
   id INT NOT NULL AUTO_INCREMENT,  # Идетентификатор банера
   code VARCHAR(255) NOT NULL,     # Код баннера
   description VARCHAR(255) NOT NULL,  # Описание раздела
   showbanner INT NOT NULL,     # Текущее Кол-во показов баннера
   maxshowbanner INT NOT NULL,     # Максимальное Кол-во показов баннера

   PRIMARY KEY(id)
);

INSERT INTO banners (code,description,showbanner,maxshowbanner) values(\'\',\'Описание\',\'0\',\'100 \');
INSERT INTO banners (code,description,showbanner,maxshowbanner) values(\'\',\'Описание\',\'0\',\'50\');
INSERT INTO banners (code,description,showbanner,maxshowbanner) values(\'\',\'Описание\',\'0\',\'150\');

Так вот. Суть этой системы, выводить каждый раз по 1 баннеру, который показан меньше всего раз, но не превышает максимальное кол-во показов этого баннера.

Фигня в чём. Если не выводить баннер (последняя строчка кода), то таблица обновляется правильно, но если баннер выводится, то обновляются почему-то все поля. Каким боком вывод переменной может влиять на результат работы функции ума не приложу :(

ЗЫ: сломал голову, но не нашел баг.
Дурак учится на своих ошибках, умный на чужих.
умные учатся у дураков

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Помогите найти баг в баннерокрутилке
« Ответ #1 : 29 Января 2004, 14:24:42 »
Mаster
а почему этот класс нельзя было оформить в виде одной функции ?

А если сделать так:
Цитировать
Mаster:
 $this->banner_code = $table_banners[\'code\'];
  return true;
    }

заменить на
 $this->banner_code $table_banners[\'code\']; 
  return $this->banner_code ; 
    }

и в скрипте делать
echo $banners_mod->get_banner();
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Mаster

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 71
  • +0/-0
  • 0
    • Просмотр профиля
    • http://code.msk.ru/
Помогите найти баг в баннерокрутилке
« Ответ #2 : 30 Января 2004, 11:27:59 »
Цитировать
и в скрипте делать
echo $banners_mod->get_banner();

неа, тоже самое... те же мухи.
Дурак учится на своих ошибках, умный на чужих.
умные учатся у дураков

Оффлайн Mаster

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 71
  • +0/-0
  • 0
    • Просмотр профиля
    • http://code.msk.ru/
Помогите найти баг в баннерокрутилке
« Ответ #3 : 30 Января 2004, 12:37:51 »
получается следующее...
в таблице 3 баннера с идешниками 1,2,3 соответственно.

Убираю вывод самого баннера и смотрю по выводу идешников и смотрю базу после каждого обновления страницы... всё правильно... обновляется кол-во показов в таблице поочередно и по одному, но стоит поставить баннер на вывод, как при том что в таблице содержится 3 баннера происходит такой эфект, что берется значение по запросу (оно понятно одно) но обновление происходит не только в текущей строке как положено, но и в следующей.

MySQL 4.0.15
PHP 4.3.0
Дурак учится на своих ошибках, умный на чужих.
умные учатся у дураков

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28