$arr = array(15,40,'i:44');
А при каких условиях, простите, это возможно, если мы в массив вносим два параметра типа INTEGER, которые являются айдишниками (праймари-ключи) из таблицы "команды"? :)
Что касается варианта с OR - ничего против него не имею, здесь его использование оправдано. Автора просил альтернативу - я предложил.
Исключительно вопрос привычки. Как оказалось, мой вариант работает ничуть не медленнее, однако его проще расширять (например, если бы в каждой игре участвовало 16 команд, разумнее использовать запаковку массива, чем создавать таблицу с 16+ полями).
Другое дело - надо ли оно? Видимо, нет.
Хмм.. Результатами я озадачен:)
Заполнял таблицы на 10000 записей рандомными значениями в диапазоне от 10 до 99.
Ваша таблица состоит из трех полей - id, team1, team2 - все типа INT.
Моя - из двух полей, (INT) id и (VARCHAR[32]) teams.
Запросы в цикле for, 100 итераций.
$num = rand(10,99);$query1 = mysql_query("SELECT * FROM `table1` WHERE `team1`='".$num."' OR `team2`='".$num."'");$query2 = mysql_query("SELECT * FROM `table2` WHERE `teams` LIKE '%i:".$num.";%'");
Результаты здесь в виде простецкой сводной таблички. Столбцы забыл подписать - запросы по порядку, сначала ваш, затем мой.
А удивило меня вот что - отличий нет (я ожидал выигрыш вашего варианта в пределах 20-30%). Вероятно, надо было тестировать на 100к+ записей :)
Вопросы? Предложения?
Вы и сами знаете ответ наверняка.
Отвечу так - я уверен, что подобным вопросом вы озаботитесь не раньше, чем количество записей в таблице станет шестизначным.
Однако я еще подумаю на эту тему, ибо всегда интересовался выбором наиболее производительного и семантически верного решения. Пока я уверен в своем решении лишь наполовину, приеду домой и проведу тесты, о результатах отпишу.
Как насчет использования одного поля и функции serialize?
У нас две команды, как я понял. Создаем массив с их id, одномерный или двумерный - реализация от этого не меняется. Пусть это будет
$arr = array(15,44);
Перед занесением в базу данных запаковываем массив в строку.
$arr_packed = serialize($arr);
Массив принимает вид a:2:{i:0;i:15;i:1;i:44;} и именно эта строка заносится в БД.
Что касается поиска - в зависимости от количества записей. Для небольших таблиц вполне можно использовать LIKE.
Критерием поиска для 44й команды будет i:44;
Пример: SELECT * FROM `table1` WHERE `column1` LIKE '%i:44;%'
Для небольших таблиц - понятие относительное, но лично я знаю индивидуума, который использует RLIKE (съедающий еще больше ресурсов, используется для поиска по regexp) в случае с таблицей, имеющей более 150к записей :)
Если я верно понял, то...
Wordpress Codex: body_class()
Под админом заходим в wp-admin/theme-editor.php?file=header.php
Ищем строчку с "<body". Она должна выглядеть так:
<body <?php body_class(); ?>>
Таким образом, к <body> каждой из страниц применяются определенные правила. Далее редактируем необходимые CSS-ки и вуаля!
Пример наверное нужен=) Допустим, я зашел в категорию #51 под названием "abc". Тогда к тегу применяются следующие стили:
<body class="archive category category-abc category-51 logged-in admin-bar customize-support">
Смело можно править CSS темы, названия классов у нас есть.
С постами чуточку сложнее, ведь изначально никакого id не передается.
Открываем wp-includes/plugin.php, в конец добавляем код из кодекса
function category_id_class($classes) { global $post; foreach((get_the_category($post->ID)) as $category) $classes[] = $category->category_nicename; return $classes;}add_filter('post_class', 'category_id_class');add_filter('body_class', 'category_id_class');
Таким образом, среди классов <body>-тега нашего поста будет искомый класс категории, в нашем случае - abc.
Далее - вторая часть вопроса.
Вариантов тоже немного - либо растягивать картинку, либо замостить, либо показать кусок в случае, если оно не помещается. Советую самостоятельно поэкспериментировать, поиграться можно со свойствами background-origin, background-attachment и background-position.
Аттачмент фиксед даст нам приклеивание при скролле (хотя в недавнем проекте я столкнулся с тем, что на всяких айпадах оно не работает).
PS: в куске кода из кодекса... $classes***91;***93; - естественно, вместо этого должно быть "$classes[]" без кавычек. Форум фильтрует :)
Ну как вариант... Не самый разумный, но я с DLE мало знаком.
Cookies устанавливаем их с помощью очень лайтовой библиотеки jquery.cookie.js (github link).
<!DOCTYPE html> <html lang="en"> <head> <title>#adv</title> <meta charset="utf-8"> <style type="text/css"> * {padding: 0; margin: 0; overflow: hidden;} #ad {position: relative; display: inline-block; border: solid black 1px; } #ad-close {position: absolute; right: 0px;} </style> <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> <script type="text/javascript" src="jquery.cookie.js"> </script> <script type="text/javascript"> $().ready(function() { function hide_block(id){ $("#"+id).css("display", "none"); return false; } if ($.cookie("ad_hide")) { hide_block("ad"); } $("#ad-close-link").click(function() { hide_block("ad"); $.cookie("ad_hide",'true',{expires: 9999, path: '/'}); }); }); </script> </head> <body> <div id="ad"> <div id="ad-close"> <a href="#" id="ad-close-link">[Закрыть]</a> </div> <img src="http://img.yandex.net/i/www/logo.png" alt="ya.logo"></div> </div> </body> </html>
Грузится страница - DIV, в нем картинка с ссылкой "закрыть".
Клик по ней обрабатывает jQuery - изменяется display на none, рекламный блок исчезает; затем устанавливаются cookies.
При каждой загрузке cookies проверяются, если нашего значения там нет - показывается рекламный блок.
PS: не люблю устанавливать куки через JS... есть еще вариант - по клику совершать AJAX-запрос к пхп-скрипту, ставящему куки, и соответствующие проверки в коде страницы с рекламным блоком, но это прицепить сложнее будет имхо.
Да, кое-кто вел, но давненько.
В районе 1.3%, в зависимости от страны (от 0.25% в Бразилии до 2% в США), по данным Yahoo на конец 2010 года (пруф).
Никаких предпосылок к увеличению количества NOJS-юзеров не припомню, вряд ли процент увеличился.
Если уже есть готовый сайт, можно использовать следующий вариант: поставить js-счетчик хостов (из пакета google analytics вполне подойдет) и, скажем, пхп-счетчик (любой, пишется за десять минут). Разница показателей и будет искомым числом. В данном случае точность будет наивысшей.