Уважаемые пользователи, по техническим причинам загрузка файлов временно недоступна. Приносим извинения за временные неудобства.

Счетчик видео размещенных в ббкоде ?!

У вас есть идея для расширения функциональности phpBB 3.0.x? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Счетчик видео размещенных в ббкоде ?!

Сообщение Vova_OB »

Этот код работает и считает количество сообщений в которых размещено видео с помощью тегов к примеру:
[video][/video],[myvideo][/myvideo],[videomy][/videomy] то есть разные комбинации тегов.
Как переделать чтобы код считал количество размещенных видео а не сообщений с видео ?

Код: Выделить всё

$sql = 'SELECT COUNT(post_id) AS count_posts_videos
        FROM ' . POSTS_TABLE . '
        WHERE  post_text '. $db->sql_like_expression($db->any_char.'['.$db->any_char.'video'.$db->any_char.']'.$db->any_char) ;
$result = $db->sql_query($sql);
$count_posts_videos = (int) $db->sql_fetchfield('count_posts_videos');
$db->sql_freeresult($result);
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 11 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Pazh »

вообще-то твой запрос считает колво-во сообщений с которых есть слово video между любыми квадратными скобками или bbcode-ами, т.е. спокойно посчитает такую конструкцию как пост
[b]video.ru[/b]
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Vova_OB »

Хорошо если сделать так то будет искать теги которые начинаются с видео.

Код: Выделить всё

$db->sql_like_expression($db->any_char.'[video'.$db->any_char.']'.$db->any_char)
А как сделать все таки чтобы находило все видео ролики в тегах если в сообщении несколько роликов в таком теге?
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 11 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Pazh »

одним sql запросом - никак. оптимально: сделать php скрипт который один раз посчитает - выбрать все id постов по предыдущему запросу и парсить пост для подсчета, и сохранить это значение в phpbb_config, а потом дописать обновление этого значения при создании нового поста с video
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Vova_OB »

Какие php функции для sql запроса нужно использовать, чтобы подсчитать количество совпадений в сообщение?
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 11 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Pazh »

Vova_OB на пальцах не объяснишь, изучай message_parcer.php и bbcode.php
Помощь в ЛС/email только за WM или ЮMoney
Shredder
Former team member
Сообщения: 2267
Стаж: 17 лет 10 месяцев
Благодарил (а): 284 раза
Поблагодарили: 584 раза

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Shredder »

Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Vova_OB »

Я так понимаю , первое значение это регулярное выражение.

Код: Выделить всё

preg_match_all("/(?  (d{3})?  )?  (?(1)  [-s] ) d{3}-d{4}/x",
                "Call 555-1212 or 1-800-555-1212", $phones);
Каким должно быть регулярно выражение чтобы найти

Код: Выделить всё

$db->any_char.'[video'.$db->any_char.']'.$db->any_char
?

Добавлено спустя 44 секунды:
чтобы подсчитать количество...
Shredder
Former team member
Сообщения: 2267
Стаж: 17 лет 10 месяцев
Благодарил (а): 284 раза
Поблагодарили: 584 раза

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Shredder »

Как-то так:

Код: Выделить всё

$count = 0;

$sql = 'SELECT post_text, bbcode_uid
	FROM ' . POSTS_TABLE . '
	WHERE  post_text ' . $db->sql_like_expression($db->any_char . 'video' . $db->any_char);
$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))
{
	$uid = $row['bbcode_uid'];
	$text = $row['post_text'];

	preg_match_all('#\[(?:video|myvideo):' . $uid . '\].*\[\/(?:video|myvideo):' . $uid . '\]#iu', $text, $matches);

	if (sizeof($matches))
	{
		$count += sizeof($matches[0]);
	}
}
$db->sql_freeresult($result);

trigger_error($count);
На рабочесть, естественно, не проверялось. Но должно дать представление.

Запуск trigger_error в конце не обязателен, он просто выводит результат на экран, если код используется внутри phpbb, и стоит здесь чисто для примера. Суть в том, что после выполнения цикла while результат должен оказаться в переменной $count
Вместо video|myvideo используй все нужные тебе для подсчёта теги, разделяя их имена вертикальной чертой.

Добавлено спустя 12 минут 11 секунд:
Поправил немного код.
Последний раз редактировалось Shredder 12.12.2013 15:55, всего редактировалось 1 раз.
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Vova_OB »

в
Сделал вот так , выводит на странице значение $all_embeded_forum_posts_videos 2212 по запросу %[video%, когда через массовый поиск в дремвивере в бекапе базы данных 1162 результата по запросу %[video%, то есть где то у меня ошибка.Подскажите пожалуйста

Код: Выделить всё

<?php

/**
* This mod includes GeoLite data created by MaxMind,
* available from http://www.maxmind.com/.
*/
include_once($phpbb_root_path . 'includes/functions_display.' . $phpEx);

global $db, $phpbb_root_path ;

//vsogo video u postax foruma
function all_embeded_forum_posts_videos()
{
global $db, $phpbb_root_path ;
$sql = 'SELECT COUNT(post_id) AS count_posts_videos
        FROM ' . POSTS_TABLE . '
        WHERE  post_text '. $db->sql_like_expression($db->any_char.'[video'.$db->any_char.']'.$db->any_char.'[/video'.$db->any_char.']'.$db->any_char) ;
$result = $db->sql_query($sql);
$count_posts_videos = (int) $db->sql_fetchfield('count_posts_videos');
$db->sql_freeresult($result);

$all_embeded_forum_posts_videos = 0;

$sql = 'SELECT post_text, bbcode_uid
	FROM ' . POSTS_TABLE . '
	WHERE  post_text ' . $db->sql_like_expression($db->any_char.'[video'.$db->any_char.']'.$db->any_char.'[/video'.$db->any_char.']'.$db->any_char);
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
	$uid = $row['bbcode_uid'];
	$text = $row['post_text'];
	preg_match_all('#[(?:video|videovk|videovknew|videogoogle|videodailymotion|videoyandex|videovimeo|videorutube|videomailru|videoyoutube):' . $uid . '].*[/(?:video|videovk|videovknew|videogoogle|videodailymotion|videoyandex|videovimeo|videorutube|videomailru|videoyoutube):' . $uid . ']#iu', $text, $matches);

	if (sizeof($matches))
	{
		$all_embeded_forum_posts_videos += sizeof($matches[0]);
	}
}
$db->sql_freeresult($result);
return $all_embeded_forum_posts_videos;
return $count_posts_videos;
}
?>
Добавлено спустя 55 минут 51 секунду:
Что значит вот это кусок с предыдущего сообщения

Код: Выделить всё

. ']#iu', 
- меняя буквы после # меняется выводимое значение, и что туда ставить нужно чтобы вывело точное значение?
Shredder
Former team member
Сообщения: 2267
Стаж: 17 лет 10 месяцев
Благодарил (а): 284 раза
Поблагодарили: 584 раза

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Shredder »

Поменяй-ка:

Код: Выделить всё

preg_match_all('#[(?:video|videovk|videovknew|videogoogle|videodailymotion|videoyandex|videovimeo|videorutube|videomailru|videoyoutube):' . $uid . '].*[/(?:video|videovk|videovknew|videogoogle|videodailymotion|videoyandex|videovimeo|videorutube|videomailru|videoyoutube):' . $uid . ']#iu', $text, $matches);
на:

Код: Выделить всё

preg_match_all('#\[(?:video|videovk|videovknew|videogoogle|videodailymotion|videoyandex|videovimeo|videorutube|videomailru|videoyoutube):' . $uid . '\].*\[\/(?:video|videovk|videovknew|videogoogle|videodailymotion|videoyandex|videovimeo|videorutube|videomailru|videoyoutube):' . $uid . '\]#iu', $text, $matches);
В моём примере (и соответственно у тебя) не экранированы "служебные символы" (перед определёнными симводами не стоит обратный слеш). Честно говоря не понимаю, откуда это взялось, ведь именно этот кусок я копировал из рабочего мода, и там эти слеши ЕСТЬ. А скопировал, и вдруг не оказалось... Чудеса.
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Vova_OB »

Shredder поменял и результат вывода $all_embeded_forum_posts_videos 983, а должно быть 1162. чудеса

Добавлено спустя 9 минут 25 секунд:
понял, в общем то что вы советуете работает. видимо мне тут кое что подправить нужно, сделаю , отпишусь.
Shredder
Former team member
Сообщения: 2267
Стаж: 17 лет 10 месяцев
Благодарил (а): 284 раза
Поблагодарили: 584 раза

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Shredder »

Ради интереса запустил твой скрипт - у меня всё правильно посчитало. Правда, кодов значительно меньше. Может, неправильный результат - именно 1162?
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение Vova_OB »

Shredder соглашусь!!!. заметил это, сейчас подправляю другие штуки чтобы лишнее не считало.

Добавлено спустя 58 минут 6 секунд:
Vova_OB писал(а):Shredder
Клево, все правильно работает считает, единственное значение нужно в базе сохранять и скрипт или при таймере или при редактирование постов запускать
ostridm
phpBB 2.0.7
Сообщения: 552
Стаж: 14 лет 6 месяцев
Благодарил (а): 20 раз
Поблагодарили: 62 раза

Re: Счетчик видео размещенных в ббкоде ?!

Сообщение ostridm »

хотите свой свой сервер прикончить?

Вернуться в «Запросы модов для phpBB 3.0.x»