А при каких условиях, простите, это возможно, если мы в массив вносим два параметра типа INTEGER, которые являются айдишниками (праймари-ключи) из таблицы "команды"? :)
Что касается варианта с OR - ничего против него не имею, здесь его использование оправдано. Автора просил альтернативу - я предложил.
Исключительно вопрос привычки. Как оказалось, мой вариант работает ничуть не медленнее, однако его проще расширять (например, если бы в каждой игре участвовало 16 команд, разумнее использовать запаковку массива, чем создавать таблицу с 16+ полями).
hYPER-ok: Было бы не плохо увидеть результаты тестов.
Хмм.. Результатами я озадачен:)
Заполнял таблицы на 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к+ записей :)
hYPER-ok: Вы уверены, что LIKE будет быстрее работать чем OR?
Вы и сами знаете ответ наверняка.
Отвечу так - я уверен, что подобным вопросом вы озаботитесь не раньше, чем количество записей в таблице станет шестизначным.
Однако я еще подумаю на эту тему, ибо всегда интересовался выбором наиболее производительного и семантически верного решения. Пока я уверен в своем решении лишь наполовину, приеду домой и проведу тесты, о результатах отпишу.
Как насчет использования одного поля и функции 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к записей :)
Смело можно править 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[]" без кавычек. Форум фильтрует :)
Грузится страница - DIV, в нем картинка с ссылкой "закрыть".
Клик по ней обрабатывает jQuery - изменяется display на none, рекламный блок исчезает; затем устанавливаются cookies.
При каждой загрузке cookies проверяются, если нашего значения там нет - показывается рекламный блок.
PS: не люблю устанавливать куки через JS... есть еще вариант - по клику совершать AJAX-запрос к пхп-скрипту, ставящему куки, и соответствующие проверки в коде страницы с рекламным блоком, но это прицепить сложнее будет имхо.
В районе 1.3%, в зависимости от страны (от 0.25% в Бразилии до 2% в США), по данным Yahoo на конец 2010 года (пруф).
Никаких предпосылок к увеличению количества NOJS-юзеров не припомню, вряд ли процент увеличился.
Если уже есть готовый сайт, можно использовать следующий вариант: поставить js-счетчик хостов (из пакета google analytics вполне подойдет) и, скажем, пхп-счетчик (любой, пишется за десять минут). Разница показателей и будет искомым числом. В данном случае точность будет наивысшей.
а если это будет:
?
А при каких условиях, простите, это возможно, если мы в массив вносим два параметра типа INTEGER, которые являются айдишниками (праймари-ключи) из таблицы "команды"? :)
Что касается варианта с OR - ничего против него не имею, здесь его использование оправдано. Автора просил альтернативу - я предложил.
Исключительно вопрос привычки. Как оказалось, мой вариант работает ничуть не медленнее, однако его проще расширять (например, если бы в каждой игре участвовало 16 команд, разумнее использовать запаковку массива, чем создавать таблицу с 16+ полями).
Другое дело - надо ли оно? Видимо, нет.
Было бы не плохо увидеть результаты тестов.
Хмм.. Результатами я озадачен:)
Заполнял таблицы на 10000 записей рандомными значениями в диапазоне от 10 до 99.
Ваша таблица состоит из трех полей - id, team1, team2 - все типа INT.
Моя - из двух полей, (INT) id и (VARCHAR[32]) teams.
Запросы в цикле for, 100 итераций.
Результаты здесь в виде простецкой сводной таблички. Столбцы забыл подписать - запросы по порядку, сначала ваш, затем мой.
А удивило меня вот что - отличий нет (я ожидал выигрыш вашего варианта в пределах 20-30%). Вероятно, надо было тестировать на 100к+ записей :)
Вопросы? Предложения?
Вы уверены, что LIKE будет быстрее работать чем OR?
Вы и сами знаете ответ наверняка.
Отвечу так - я уверен, что подобным вопросом вы озаботитесь не раньше, чем количество записей в таблице станет шестизначным.
Однако я еще подумаю на эту тему, ибо всегда интересовался выбором наиболее производительного и семантически верного решения. Пока я уверен в своем решении лишь наполовину, приеду домой и проведу тесты, о результатах отпишу.
Как насчет использования одного поля и функции serialize?
У нас две команды, как я понял. Создаем массив с их id, одномерный или двумерный - реализация от этого не меняется. Пусть это будет
Перед занесением в базу данных запаковываем массив в строку.
Массив принимает вид 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> каждой из страниц применяются определенные правила. Далее редактируем необходимые CSS-ки и вуаля!
Пример наверное нужен=) Допустим, я зашел в категорию #51 под названием "abc". Тогда к тегу применяются следующие стили:
Смело можно править CSS темы, названия классов у нас есть.
С постами чуточку сложнее, ведь изначально никакого id не передается.
Открываем wp-includes/plugin.php, в конец добавляем код из кодекса
Таким образом, среди классов <body>-тега нашего поста будет искомый класс категории, в нашем случае - abc.
Далее - вторая часть вопроса.
Вариантов тоже немного - либо растягивать картинку, либо замостить, либо показать кусок в случае, если оно не помещается. Советую самостоятельно поэкспериментировать, поиграться можно со свойствами background-origin, background-attachment и background-position.
Аттачмент фиксед даст нам приклеивание при скролле (хотя в недавнем проекте я столкнулся с тем, что на всяких айпадах оно не работает).
PS: в куске кода из кодекса... $classes***91;***93; - естественно, вместо этого должно быть "$classes[]" без кавычек. Форум фильтрует :)
Ну то есть, чтобы была например кнопка, на которую когда нажмешь закрывается картинка
Ну как вариант... Не самый разумный, но я с DLE мало знаком.
Cookies устанавливаем их с помощью очень лайтовой библиотеки jquery.cookie.js (github link).
и больше не показывается.
Грузится страница - DIV, в нем картинка с ссылкой "закрыть".
Клик по ней обрабатывает jQuery - изменяется display на none, рекламный блок исчезает; затем устанавливаются cookies.
При каждой загрузке cookies проверяются, если нашего значения там нет - показывается рекламный блок.
PS: не люблю устанавливать куки через JS... есть еще вариант - по клику совершать AJAX-запрос к пхп-скрипту, ставящему куки, и соответствующие проверки в коде страницы с рекламным блоком, но это прицепить сложнее будет имхо.
Да, кое-кто вел, но давненько.
В районе 1.3%, в зависимости от страны (от 0.25% в Бразилии до 2% в США), по данным Yahoo на конец 2010 года (пруф).
Никаких предпосылок к увеличению количества NOJS-юзеров не припомню, вряд ли процент увеличился.
Если уже есть готовый сайт, можно использовать следующий вариант: поставить js-счетчик хостов (из пакета google analytics вполне подойдет) и, скажем, пхп-счетчик (любой, пишется за десять минут). Разница показателей и будет искомым числом. В данном случае точность будет наивысшей.