Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> банерокрутилка 
:(
    Опции темы
Master
  Дата 29.1.2004, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Есть файл класса:
Код
<?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('<A href=""><IMG src="" width=460px height=68px></A>','Описание','0','100 ');
INSERT INTO banners (code,description,showbanner,maxshowbanner) values('<IMG src="" width=100px height=100px>','Описание','0','50');
INSERT INTO banners (code,description,showbanner,maxshowbanner) values('<IMG src="" width=120px height=160px>','Описание','0','150');


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

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

ЗЫ: сломал голову, но не нашел баг.


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
buddy
Дата 29.1.2004, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 4.11.2002
Где: Киев

Репутация: нет
Всего: нет



ну, во-первых, я бы поставил в первом запросе перед ..ASC LIMIT 1...

во-вторых, я сделал бы так:
SELECT MIN(showbanner), * FROM banners WHERE showbanner < maxshowbanner ORDER BY showbanner ASC LIMIT 1 (хотя при таком запросе LIMIT можно вообще изкоренить)

3. Обновление можно делать немного не так:
...SET showbanner = showbanner + 1..

4. в этотм же апдейте WHERE id = ".$id ... не хватает закрывающей кавычки.
5. ещё желательно этот самый $id взять в ' ' . так как в случаи, если $id будет пустой, возникнет синтаксическапя ошибка

PM WWW ICQ MSN   Вверх
Guest
Дата 29.1.2004, 16:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Согласен по пятому пункту.
Код
mysql_query("UPDATE banners SET showbanner = '{$table_banners['showbanner']+1}' WHERE id = '".$id."'")

должно работать. У самого были проблемы были. Так ИД просто не проверяется, и обновляется все. Я так думаю.
  Вверх
[xoodo]
Дата 29.1.2004, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 9.3.2003

Репутация: 1
Всего: 4



Это я был...
PM   Вверх
Master
Дата 30.1.2004, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



ничего из предложенного проблему не решило sad.gif


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Master
Дата 30.1.2004, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



получается следующее...
в таблице 3 баннера с идешниками 1,2,3 соответственно.

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

MySQL 4.0.15
PHP 4.3.0


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Master
Дата 4.2.2004, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Народ!!!
Ну так кто-нибудь может найти баг?
Я уже из сил выбился его искать sad.gif


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
buddy
Дата 4.2.2004, 15:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 4.11.2002
Где: Киев

Репутация: нет
Всего: нет



ошибка явно в логике, поэтому кроме тебя её никто не найдёт. переписать всё заново, более обдуманно - это единственный выход.
PM WWW ICQ MSN   Вверх
Master
Дата 4.2.2004, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



buddy прога маленькая совсем и ошибка не поддается никакой логике sad.gif


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Sardar
Дата 4.2.2004, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 4
Всего: 317



$id нужно взять в mysql_escape_string(), на случай если мускул упадет и register_globals=On.

Master может быть такое, что картинку баннера ты выдаешь скриптом и в нем сного правишь базу?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Master
Дата 4.2.2004, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Sardar но я же ведь просто вывожу переменную из класса.
Я не трогаю функию этим....


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Sardar
Дата 4.2.2004, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 4
Всего: 317



Возможно что у тебя баннер: <img src="getbanner.php?$id=xxx">
Сценарий getbanner.php правит базу и... возможно он и косячит. Если это так, то приведи его код.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Master
Дата 5.2.2004, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



ДА!
точно. Баннеры вызывали индекс директории, которым является файл из которого инкляйдится класс...
всё, разобрался.

Спасибо Sardar!


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Dyagilev
Дата 12.9.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.9.2009

Репутация: нет
Всего: нет



Master , поделись рабочим кодом , если не жалко .. 
ооо не обратил внимания топику 5 лет давности =) ну все равно может быть что то подобное есть =)) 

Это сообщение отредактировал(а) Dyagilev - 12.9.2009, 14:19
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1156 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.