Heliax

Members
  • Content count

    19
  • Joined

  • Last visited

1 Follower

About Heliax

  • Rank
    Пользователь
  • Birthday 03/13/81

Profile Information

  • Пол
    Not Telling
  • Специализация
    Вебмастер
  • Профиль ID
    Heliax
  1. Приветствую. Что-то я логики этого кода не понимаю... 1. У вас select генерируется скриптом, при этом опция с белым цветом встаёт в фокус. Т.е. заведомо известно, что в селекте выбран именно белый цвет. Так зачем тогда таким мудрёным способом пытаться получить этот самый цвет? 2. Обычно для получения значения достаточно конструкции вида: myColor = $('select#color').val(); 3. Зачем вы смешиваете JQuery c JS, если JQuery даёт весь необходимый инструментарий: наличие выражения document.getElementById("color").value немного сбивает с толку.
  2. Классика жанра: сайт полностью сливают на локальную машину под LAMP (вместе с БД), затем, всё что нужно правят (тестируют и ещё правят). Когда нужный результат достигнут, заливают всё обратно на сервер. Выгоды: быстрый апгрейд сайта без лишних головняков. Думаю, что у вас такой вариант по какой-то причине не прокатывает. Если так, то печаль. Править глобально сайт прямо на боевом сервере - это ответственное и рискованное предприятие.
  3. Я бы предпочёл вариант с использованием SWITCH, т.к. он более логичен, причём сделал бы чуть иначе: switch (strip_tags(trim($_POST['form-id']))){ case 1: # Здесь выполнение любого кода и вывод результатов. break; } Функции предназначены для выноса того участка кода, который неоднократно выполняется (и здесь не имеется в виду многократное выполнение всего php-скрипта). А вообще.. лучший вариант в плане производительности определяется экспериментальным путём: нужно получить среднеарифметические значения затраченного времени на выполнение разных версий скрипта. Полученные результаты, разумеется, сравнить между собой и выяснить.. какая версия шустрее.
  4. Если желаете чтобы в коде страницы небыло лишних ссылок, но посетители их видели (линки на партнёрки), то сделайте псевдо-ссылки посредством CSS и JavaScript. Вот простой пример (но можно куда хитрее замутить): CSS: .psevdoLink { color: #0000a0; text-decoration: underline; } .psevdoLink:hover { color: #0000ff; text-decoration: underline; cursor: pointer; } JS (с применением jQuery): jQuery(document).ready(function(){ //...код... // Обработчик псевдо-ссылок. jQuery('span.psevdoLink').bind('click', function(){ var myLinkID = jQuery(this).attr('id'), partnerLink = ''; switch(myLinkID){ case 'myLink1': partnerLink = 'my-partner1.ru'; break; case 'myLink2': partnerLink = 'my-partner2.com'; break; } if(partnerLink){ partnerLink = 'http://'+partnerLink; window.open(partnerLink, '_self'); } }); //...код... }); HTML: Съешь ещё этих <span class="psevdoLink" id="myLink1">мягких французских булок</span>, да выпей <span class="psevdoLink" id="myLink2">чаю</span>.
  5. Чтобы избежать запуска нескольких копий таймера одновременно, нужно удалить кнопку Старт вместе с её обработчиком (её я воткнул для примера). Кнопку Рестарт переименовать в Старт/Рестарт (её обработчик как раз именно так и работает).
  6. Вот.. набросал на скору руку. Дальше сам. Надеюсь, принцип работы будет понятен. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Отслеживание бафов</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <style type="text/css"> .myControlSection {margin-bottom: 7px;} .myControlSection button {width: 100px; height: 40px; font-weight: 700; cursor: pointer;} .myControlSection .newBuffAppendButton {width: 260px; margin-left: 14px;} .buffUnit {width: 48px; height: 48px; border: 1px solid #000; border-radius: 3px;} .buffUnit span {margin-left: 3px;} .buffClass1 {background: #ffffcc;} .buffClass2 {background: #ffff33;} .buffClass3 {background: #ffcccc;} .buffClass4 {background: #ccff66;} .buffClass5 {background: #ffcc66;} .buffClass6 {background: #99ccff;} .buffClass7 {background: #ffcc00;} .buffClass20 {background: #99ffff;} </style> <script type="text/javascript"> var myBuffTimer, // Собственно, наш таймер. buffTimingArr = {}; // «Реестр» - для хранения инфы о бафах, организуем на базе объектов. // Если на сайте есть другие фреймворки кроме jQuery и они между собой конфликтуют, то замени все символы $ на jQuery // Наличие ошибок в JS хорошо показывает IE :-) Для отладки скриптов будет очень полезно. $(document).ready(function(){ // Управление. $('button#myStartButton').unbind('click').bind('click', function(){ myBuffInit(); // Инициализация. myTimerForCalculateBuffs(); // Стартуем таймер. }); $('button#myStopButton').unbind('click').bind('click', function(){ clearTimeout(myBuffTimer); // Останавливаем таймер. // Сбрасываем на странице значения в ноль. $('div.buffUnit').each(function(){ $(this).find('span').html('0'); }); }); $('button#myRestartButton').unbind('click').bind('click', function(){ clearTimeout(myBuffTimer); // Останавливаем таймер. myBuffInit(); // Заново инициализируем. myTimerForCalculateBuffs(); // Стартуем таймер. }); $('button.newBuffAppendButton').unbind('click').bind('click', function(){ var currentBuffCount = $("div.buffUnit").length, // Сколько уже бафов есть на странице. newBuffID = 'buff'+currentBuffCount+1, // Выделяем ID для нового бафа. buffTimeValue = Math.floor(Math.random() * 100)+10, // Генерируем его продолжительность (от 10 до 100 сек). buffClass = 'buffClass'+(Math.floor(Math.random() * 7)+1); // Какого цвета будет новый баф (от 1 до 7). buffTimingArr[newBuffID] = buffTimeValue+'|0'; // Внесём новый баф в «реестр», и выкатим его на страницу. $('div#myBuffContainer').append('<div id="'+newBuffID+'" class="buffUnit '+buffClass+'"><span>'+buffTimeValue+'</span><input type="hidden" value="'+buffTimeValue+'" /></div>'); //alert(buffTimeValue); }); }); // Инициализация: соберём инфу по каждому бафу в «реестр». function myBuffInit(){ var buffID, buffTimeValue; $('div.buffUnit').each(function(){ buffID = $(this).attr('id'); // ID бафа ... buffTimeValue = $(this).find('input').val(); // ... и его длительность. buffTimingArr[buffID] = buffTimeValue+'|0'; // Запоминаем инфу о бафе (0 - это служебка для таймера: сколько баф уже действует). $('div#'+buffID).show().find('span').html(buffTimeValue); // Отсветим его длительность на странице. }); } // Зацикленый таймер для пересчёта валидности бафов. function myTimerForCalculateBuffs(){ var buffID, buffTimerArr, buffMaxTime, buffCurrentTime; // Проверяем каждый баф в «реестре» - не закончился ли он. for(buffID in buffTimingArr){ buffTimerArr = buffTimingArr[buffID].split('|'); // Текущая инфа о длительности бафа. buffMaxTime = parseInt(buffTimerArr[0]); // Сколько баф должен действовать. buffCurrentTime = parseInt(buffTimerArr[1]); // Сколько баф уже действует. buffCurrentTime++; if(buffCurrentTime == buffMaxTime){ // Если время истекло, то ... delete buffTimingArr[buffID]; // ... забываем про него ... $('div#'+buffID).hide(300); // ... и делаем какое-либо нужное нам действие. }else{ // Если время бафа не истекло, то ... buffTimingArr[buffID] = buffMaxTime+'|'+buffCurrentTime; // ... запомним сколько он уже действует, и ... $('div#'+buffID).find('span').html(buffMaxTime-buffCurrentTime); // ... отсветим на странице обратный отсчёт. } } // clearTimeout(myBuffTimer); // На случай, если таймер будет глючить. // Авто-перезапуск таймера через 1 сек. myBuffTimer = setTimeout(function(){ myTimerForCalculateBuffs(); }, 1000); } </script> </head> <body> <div class="myControlSection"> <button id="myStartButton">Старт</button> <button id="myStopButton">Стоп</button> <button id="myRestartButton">Рестарт</button> <button class="newBuffAppendButton">Добавить новый баф</button> </div> <div id="myBuffContainer"> <div id="buff1" class="buffUnit buffClass1"><span>0</span><input type="hidden" value="10" /></div> <div id="buff2" class="buffUnit buffClass2"><span>0</span><input type="hidden" value="90" /></div> <div id="buff3" class="buffUnit buffClass3"><span>0</span><input type="hidden" value="30" /></div> <div id="buff4" class="buffUnit buffClass4"><span>0</span><input type="hidden" value="25" /></div> <div id="buff5" class="buffUnit buffClass5"><span>0</span><input type="hidden" value="45" /></div> <div id="buff6" class="buffUnit buffClass6"><span>0</span><input type="hidden" value="150" /></div> <div id="buff7" class="buffUnit buffClass7"><span>0</span><input type="hidden" value="15" /></div> <!-- И так далее, можно добавлять динамически: как посредством PHP, так и с помощью JS --> <div id="buff20" class="buffUnit buffClass20"><span>0</span><input type="hidden" value="200" /></div> </div> </body> </html> bufftest.php
  7. И да, маленький совет: старайтесь не заключать символьный вывод в двойные кавычки без явной на то необходимости - это замедляет работу PHP. Строчку с выводом лучше переписать вот так: echo '<div id="newsbox"><div id="adtitle"><b>'.$row['status2'].' '.$row['vid'].'</b></div><div id="img_in_newsbox"><img src="'.$pic.'">'; Раз уж вы только изучаете PHP, то привыкайте писать код грамотно. ;-)
  8. Или вот ещё вариант (то же, но чуть короче): $pic = "img/house.jpg"; if (trim($row['pic'])) $pic = $row['pic']; echo "<div id=\"newsbox\"><div id=\"adtitle\"><b>".$row['status2']." ".$row['vid']."</b></div><div id=\"img_in_newsbox\"><img src=\"".$pic."\">
  9. Это я вам пример привёл. Между кавычками вы вольны прописать что угодно - любой путь до файла с вашим баннером. И лучше указывать абсолютный путь, например: jQuery('div#banner').load("http://my-site.ru/media/banners/banner1.html"); Т.к. контент в блоке "#banner" выводится скриптом, то на базе этого можно замутить и задержку перед выводом, и вывод баннера случайным образом (если баннеров несколько), и анимированный вывод баннера, и вывод нужного варианта баннера в зависимости от открытой страницы, и т.д. и т.п.
  10. Самый простой вариант, с применением jQuery. jQuery(document).ready(function(){ jQuery('div#banner').load("banner.html"); });
  11. Если поиск исполнителя ещё актуален, то готов предложить свою кандидатуру. Специализируюсь как раз таки на самописных движках, заточенных под конкретные нужды. Если что, шепните ЛС.
  12. Присоединяюсь к вопросу о ТЗ.
  13. Это так называемые "Быстрые ссылки". Смотреть в ЯВМ: Сайт в результатах поиска -> Быстрые ссылки.
  14. Вариант на базе JQuery (проверено). Надеюсь, логика работы будет понятна, и вы без труда сможете внедрить сие решение к себе в код. Если с программированием у вас не очень, то придётся обращаться к программерам. <div class="myDescriptionValue"> По рзелульаттам <strong>илссеовадний одонго анлигйсого унвиертисета</strong>, не иеемт занчнеия, в кокам пряокде рсапожолена бкувы в солве. Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, все-рвано ткест чтаитсея без побрелм. Пичрионй эгото ялвятеся то, что мы не чиатем кдаужю бкуву по отдльенотси, а все солво цликеом. </div> <div class="myDescriptionValue"> По рзелульаттам илссеовадний <font color="#0000ff">одонго анлигйсого унвиертисета</font>, не иеемт занчнеия, в кокам пряокде рсапожолена бкувы в солве. Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете. </div> <div class="myDescriptionValue">2 блок ...</div> <div class="myDescriptionValue">3 блок ...</div> <div class="myDescriptionValue">4 блок и т.д.</div> <script> // Логика работы. Если длина текста в каком-либо блоке с классом «myDescriptionValue» превышает заданное значение, то подрезаем такой текст и добавляем в конец многоточие. При этом из подрезаемого текста будут удалены все HTML-теги (если таковы в нём присутствовали). jQuery(document).ready(function(){ var stringLimit = 520, myDescriptionObj, myDescriptionValue; jQuery('div.myDescriptionValue').each(function(){ // Перебираем все имеющиеся блоки с нужным классом. myDescriptionObj = jQuery(this); myDescriptionValue = myDescriptionObj.text(); if(myDescriptionValue.length > stringLimit){ // Проверяем длину текста в блоке. myDescriptionValue = myDescriptionValue.substr(0, stringLimit)+'…'; // Подрезаем текст и добавляем многоточие. myDescriptionObj.html(myDescriptionValue); // Возвращаем подрезанный текст обратно. }; }); }); </script> Такие вещи лучше выполнять на стороне сервера, к примеру, на PHP – будет более грамотно.
  15. Нотка юмора. Вспоминается поговорка: "Администраторы сайтов делятся на две группы: на тех, кто делает бэкапы, и на тех, кто уже делает бэкапы". :-)