не ну я же писал что хочу такое чтоб навел пользователь курсор на изображение и изображения начали меняться. Гугл бесполезен когда не знаешь что ищешь :D или как оно называется
if (this.cycleTimeout) clearTimeout(this.cycleTimeout);
this.cycleTimeout = 0; this.cyclePause = 0;
var $cont = $(this); var $slides = options.slideExpr ? $(options.slideExpr, this) : $cont.children(); var els = $slides.get(); if (els.length < 2) { if (window.console) console.log('terminating; too few slides: ' + els.length); return; // don't bother }
// support metadata plugin (v1.0 and v2.0) var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {}); var meta = $.isFunction($cont.data) ? $cont.data(opts.metaAttr) : null; if (meta) opts = $.extend(opts, meta);
function go(els, opts, manual, fwd) { if (opts.busy) return; var p = els[0].parentNode, curr = els[opts.currSlide], next = els[opts.nextSlide]; if (p.cycleTimeout === 0 && !manual) return;
if (manual || !p.cyclePause) { if (opts.before.length) $.each(opts.before, function(i,o) { o.apply(next, [curr, next, opts, fwd]); }); var after = function() { if ($.browser.msie) this.style.removeAttribute('filter'); $.each(opts.after, function(i,o) { o.apply(next, [curr, next, opts, fwd]); }); queueNext(opts); };
if (opts.nextSlide != opts.currSlide) { opts.busy = 1; $.fn.cycle.custom(curr, next, opts, after); } var roll = (opts.nextSlide + 1) == els.length; opts.nextSlide = roll ? 0 : opts.nextSlide+1; opts.currSlide = roll ? els.length-1 : opts.nextSlide-1; } else { queueNext(opts); }
function queueNext(opts) { if (opts.timeout) p.cycleTimeout = setTimeout(function() { go(els,opts,0,!opts.rev); }, opts.timeout); } }
// advance slide forward or back function advance(els, opts, val) { var p = els[0].parentNode, timeout = p.cycleTimeout; if (timeout) { clearTimeout(timeout); p.cycleTimeout = 0; } opts.nextSlide = opts.currSlide + val; if (opts.nextSlide < 0) { opts.nextSlide = els.length - 1; } else if (opts.nextSlide >= els.length) { opts.nextSlide = 0; } go(els, opts, 1, val>=0); return false; }
$.fn.cycle.custom = function(curr, next, opts, cb) { var $l = $(curr), $n = $(next); $n.css(opts.cssBefore); var fn = function() {$n.animate(opts.animIn, opts.speedIn, opts.easeIn, cb);}; $l.animate(opts.animOut, opts.speedOut, opts.easeOut, function() { $l.css(opts.cssAfter); if (!opts.sync) fn(); }); if (opts.sync) fn(); };
нет мне нужен именно такой без всяких эффектов обычная смена картинок с настройкой интервала
---------- Добавлено 13.01.2013 в 00:44 ----------
hedint: Я бы на вашем месте вообще выкинул этот код и просто сформулировал свою задачу)
Код в приведенном примере - ужасен, начиная от неиспользования var в функциях (в итоге все переменные пойдут в глобальную область видимости), заканчивая использованием indexOf без заглушки для старых браузеров.
KostaShah: FLOOR(RAND() * COUNT(*) ) - возвращает случайное число, от нуля, до количества записей минус 1. То есть, к примеру, если в таблице ровно 100 записей, то эта конструкция сгенерирует случайное число от нуля до 99. Далее это число используется в качестве офсета - сдвига от начала списка записей, в запросе, который должен выдать 14 записей. Всё будет работать хорошо для тех случаев, когда случайное число попало в диапазон от 0 до 86. То есть, когда после сдвига на это число, остаётся ещё хотя бы 14 записей для показа. Если же оно превысило 86, то выдано будет меньше 14 записей. Решается эта проблема просто: нужно изначально уменьшить диапазон генерации случайного числа на 13: FLOOR(RAND() * (COUNT(*)-13))
Спасибо. я знал как эта конструкция работает просто не знал как задать рандомное число промежуток 😂
дани мапов: kondratt вы мой запрос пробовали? Он рабочий, только в таблице star_option поле - id_post, а вы в первом посте указали id. Исправьте это в запросе.
Извини не не проверял щас все варианты проверю
Я бы сделал иначе. Тут нет необходимости в подзапросах, и таблицу post можно вообще не трогать, так как о наличии поста для каждой звезды свидетельствует соответствующая запись в star_option:
Код:
SELECT s.*, COUNT(so.id_post) AS cnt
FROM star s
LEFT JOIN star_option so ON s.id=so.star_id
GROUP BY s.id
Точно точно туплю чет ппц:(:(:(
---------- Добавлено 31.12.2012 в 06:34 ----------
Всем огромное спасибо взял последний вариант
---------- Добавлено 31.12.2012 в 06:49 ----------
а можно ли вот с этим запросом что нибудь сделать он работает прекрасно только иногда бывает что что выводиться меньше записей чем надо. Ну или как лучше сделать случайный вывод ?
CREATE TABLE `post` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`post_date` DATE NOT NULL ,
`post_title` VARCHAR( 255 ) NOT NULL ,
`keywords` VARCHAR( 255 ) NOT NULL ,
`url_video` TEXT NOT NULL ,
`image` VARCHAR( 255 ) NOT NULL ,
`visits` INT( 11 ) NOT NULL ,
PRIMARY KEY ( `id` ) ,
KEY `post_date` ( `post_date` )
) ENGINE = INNODB DEFAULT CHARSET = utf8;
так вот star_option служит для объединения таблиц star и post
Мне надо так что бы было так на странице star.php делается выборка записей из таблицы star (выводились все звезды что есть и кол-во связанных с ним постов) Вооот. как то так
не ну я же писал что хочу такое чтоб навел пользователь курсор на изображение и изображения начали меняться. Гугл бесполезен когда не знаешь что ищешь :D или как оно называется
так то что я хочу называется карусель?)
Так ладно а как его прикрутить мне ? он же работает как слайдер а мне нужна что бы при наведении на изображение картинка менялась на следующую....
нет мне нужен именно такой без всяких эффектов обычная смена картинок с настройкой интервала
---------- Добавлено 13.01.2013 в 00:44 ----------
Я бы на вашем месте вообще выкинул этот код и просто сформулировал свою задачу)
Код в приведенном примере - ужасен, начиная от неиспользования var в функциях (в итоге все переменные пойдут в глобальную область видимости), заканчивая использованием indexOf без заглушки для старых браузеров.
я не силен в javascript :(
ау народ:(:(:(:(:(
FLOOR(RAND() * COUNT(*) ) - возвращает случайное число, от нуля, до количества записей минус 1. То есть, к примеру, если в таблице ровно 100 записей, то эта конструкция сгенерирует случайное число от нуля до 99. Далее это число используется в качестве офсета - сдвига от начала списка записей, в запросе, который должен выдать 14 записей. Всё будет работать хорошо для тех случаев, когда случайное число попало в диапазон от 0 до 86. То есть, когда после сдвига на это число, остаётся ещё хотя бы 14 записей для показа. Если же оно превысило 86, то выдано будет меньше 14 записей. Решается эта проблема просто: нужно изначально уменьшить диапазон генерации случайного числа на 13: FLOOR(RAND() * (COUNT(*)-13))
Спасибо. я знал как эта конструкция работает просто не знал как задать рандомное число промежуток 😂
kondratt вы мой запрос пробовали? Он рабочий, только в таблице star_option поле - id_post, а вы в первом посте указали id. Исправьте это в запросе.
Извини не не проверял щас все варианты проверю
Код:
Точно точно туплю чет ппц:(:(:(
---------- Добавлено 31.12.2012 в 06:34 ----------
Всем огромное спасибо взял последний вариант
---------- Добавлено 31.12.2012 в 06:49 ----------
а можно ли вот с этим запросом что нибудь сделать он работает прекрасно только иногда бывает что что выводиться меньше записей чем надо. Ну или как лучше сделать случайный вывод ?
ну щас я все объясню как у меня все работает
есть таблица star
и таблица star_option
и таблица post
так вот star_option служит для объединения таблиц star и post
Мне надо так что бы было так на странице star.php делается выборка записей из таблицы star (выводились все звезды что есть и кол-во связанных с ним постов) Вооот. как то так
не так не получается надо их объединить и сгруппировать по star id
Спасибо все заработало :):):)