Есть файл класса:
<?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 баннеру, который показан меньше всего раз, но не превышает максимальное кол-во показов этого баннера.
Фигня в чём. Если не выводить баннер (последняя строчка кода), то таблица обновляется правильно, но если баннер выводится, то обновляются почему-то все поля. Каким боком вывод переменной может влиять на результат работы функции ума не приложу
ЗЫ: сломал голову, но не нашел баг.