iNfame

Рейтинг
1
Регистрация
06.08.2012
dkameleon:
а если это будет:
$arr = array(15,40,'i:44');

?

А при каких условиях, простите, это возможно, если мы в массив вносим два параметра типа 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к+ записей :)

Вопросы? Предложения?

png 1344703920466.png
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к записей :)

Если я верно понял, то...

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[]" без кавычек. Форум фильтрует :)

ZeN41k:

Ну то есть, чтобы была например кнопка, на которую когда нажмешь закрывается картинка

Ну как вариант... Не самый разумный, но я с 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>
ZeN41k:
и больше не показывается.

Грузится страница - DIV, в нем картинка с ссылкой "закрыть".

Клик по ней обрабатывает jQuery - изменяется display на none, рекламный блок исчезает; затем устанавливаются cookies.

При каждой загрузке cookies проверяются, если нашего значения там нет - показывается рекламный блок.

PS: не люблю устанавливать куки через JS... есть еще вариант - по клику совершать AJAX-запрос к пхп-скрипту, ставящему куки, и соответствующие проверки в коде страницы с рекламным блоком, но это прицепить сложнее будет имхо.

Да, кое-кто вел, но давненько.

В районе 1.3%, в зависимости от страны (от 0.25% в Бразилии до 2% в США), по данным Yahoo на конец 2010 года (пруф).

Никаких предпосылок к увеличению количества NOJS-юзеров не припомню, вряд ли процент увеличился.

Если уже есть готовый сайт, можно использовать следующий вариант: поставить js-счетчик хостов (из пакета google analytics вполне подойдет) и, скажем, пхп-счетчик (любой, пишется за десять минут). Разница показателей и будет искомым числом. В данном случае точность будет наивысшей.

12
Всего: 17