Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2006-04-07 01:01:49

Demo
Гость

Фишка: Вывод на главной форума дни рождения

Вобщем обнаружил код, типа должен выводить на главной странице как здесь: http://board.shodown.net/index.php у кого сегодня день рождения и у кого оно будет скоро. И выводит напротив ника сколько лет исполняется.

Вот код:

$date = explode ('.',date("d.m.Y"));
$day = $date[0]+0; 
$month = $date[1]+0;
$year = $date[2];
$cur_date="%-".$month."-".$day;

if ($month=="1"||$month=="3"||$month=="5"||$month=="7"||$month=="8"||$month=="10"||$month=="12") $days=31;
if ($month=="4"||$month=="6"||$month=="9"||$month=="11") $days=30;
if ($month=="2") 
    {
    if(date("Y")%4==0) $days=29;
    else $days=28;

    }

$cur_date2="%-".$month."-".($day+1);
$cur_date3="%-".$month."-".($day+2);
if($day == $days){
$cur_date2="%-".($month+1)."-1";
$cur_date3="%-".($month+1)."-2";
}

$out_list="";
$query    = 'select id,username,birthday from '.$db->prefix.'users where birthday ILIKE \''.$cur_date.'\' or birthday LIKE \''.$cur_date2.'\' or birthday LIKE \''.$cur_date3.'\' order by birthday ASC';
//die($query);
$result = $db->query($query) or error('Unable to fetch user list', __FILE__, __LINE__, $db->error());;
$u_count = $db->num_rows($result);
if ($u_count > 0)
{
while($row=$db->fetch_object($result))
{

$a=strftime("%d-%m-%Y",strtotime($row->birthday));
$b=$row->username;
$id=$row->id;
$out_list=$out_list."\t<li> &raquo; <a href=\"/profile.php?id=".$id."\">".$b."</a>&nbsp;</li>\n";
}

Но что-то не получается его завести. Кто разбирается в ПХП гляньте. Вещь стоящая.
Это работает только с модом колендаря.

#2 2006-07-11 13:51:58

Zevs
Гость

Re: Фишка: Вывод на главной форума дни рождения

Да, я бы тоже хотел у себя такое прикрутить !!!
Может кто-нибудь доделает ?

#3 2006-07-20 18:35:40

Zevs
Гость

Re: Фишка: Вывод на главной форума дни рождения

В общем, нашел на французском форуме - чуть доработал напильником - и заработало, только возраст не показывает, но это и не критично.

#4 2006-07-20 19:46:52

spycam
Гость

Re: Фишка: Вывод на главной форума дни рождения

Ну так кидай сюда скороей код. Это же всем надо, кто ипользует календарь.

#5 2006-07-21 18:14:04

Zevs
Гость

Re: Фишка: Вывод на главной форума дни рождения

Index.php

Найти

    if ($num_users > 0)
        echo "\t\t\t".'<dl id="onlinelist" class= "clearb">'."\n\t\t\t\t".'<dt><strong>'.$lang_index['Online'].':&nbsp;</strong></dt>'."\t\t\t\t".implode(',</dd> ', $users).'</dd>'."\n\t\t\t".'</dl>'."\n";
    else
        echo "\t\t\t".'<div class="clearer"></div>'."\n";

После него добавить:

    $monthtoday=date('m');
    $daytoday=date('d');
    $result = $db->query('SELECT username, id from '.$db->prefix.'users WHERE DAYOFMONTH(birthday)=\''.$daytoday.'\' AND MONTH(birthday)=\''.$monthtoday.'\' ORDER by username ASC') or error('Impossible de retrouver la liste des utilisateurs ayant leur anniversaire aujourd\'hui', __FILE__, __LINE__, $db->error());

        $birthdays_today = array();
    while ($pun_birthdays_today = $db->fetch_assoc($result))
        $birthdays_today[] .=  "\n\t\t\t\t".'<dd><a href="profile.php?id='.$pun_birthdays_today['id'].'">'.$pun_birthdays_today['username'].'</a>';
            
        $num_birthdays_today = count($birthdays_today);
     if ($num_birthdays_today=='0') $num_birthdays_today=$lang_index['None'].' ';
        if ($num_birthdays_today > 0) {
        echo '<dl id="birthdayslist"><dd><strong>'.$lang_index['Birthday Today'].'</strong>';
            echo ': '.implode(',</dd> ', $birthdays_today).'</dd>'."\n\t\t\t".'</dl>'."\n";
        }

В lang/Russian/index.php

добавить

'Birthday Today'               =>      'Именинники сегодня',
'None'                         =>      'Нет',

В base.css секция 8.1 должна выглядеть так

/* 8.1 Horizontal display of online list, main navigation menu and breadcrumbs */

#birthdayslist DD, #birthdayslist DT, #onlinelist DD, #onlinelist DT, #onlinetodaylist DD, #onlinetodaylist DT,
#brdmenu LI, DIV.linkst LI, DIV.linksb LI, DIV.postlinksb LI,
DIV.postfootright LI, UL.bblinks LI {
    DISPLAY: inline;
    HEIGHT: 0
}

Вроде ничего не забыл smile

Работает с последней версией календаря

Редактировался Zevs (2006-07-21 18:14:50)

#6 2006-07-25 17:38:49

spycam
Гость

Re: Фишка: Вывод на главной форума дни рождения

Проверил, работает.
Кстати хорошо, что строка Именинники сегодня появляется только тогда, когда есть пользователи, у которых в этот день ДР - экономит место. Ещё бы возраст можно было бы вывести - было бы неплохо.

#7 2006-07-25 17:53:18

Zevs
Гость

Re: Фишка: Вывод на главной форума дни рождения

spycam пишет:

Кстати хорошо, что строка Именинники сегодня появляется только тогда, когда есть пользователи, у которых в этот день ДР - экономит место.

Это уже я доковырял smile

Ещё бы возраст можно было бы вывести - было бы неплохо.

Это точно

#8 2006-12-25 19:40:56

flashcat
Гость

Re: Фишка: Вывод на главной форума дни рождения

[size=16]хм интересный мод только я не могу установить у меня в index.php нету [/size]

if ($num_[h]users[/h] > 0)
        echo "\t\t\t".'<dl id="[h]online[/h]list" class= "clearb">'."\n\t\t\t\t".'<dt><strong>'.$lang_index['[h]online[/h]'].':&nbsp;</strong></dt>'."\t\t\t\t".implode(',</dd> ', $[h]users[/h]).'</dd>'."\n\t\t\t".'</dl>'."\n";
    else
        echo "\t\t\t".'<div class="clearer"></div>'."\n";

что мне делать куда вставить тода код???

#9 2006-12-25 20:08:47

AdminЧИК
Гость

Re: Фишка: Вывод на главной форума дни рождения

Это мод к календарю не прикручивается?
А есть прилипить.

#10 2007-01-12 20:04:20

antoniO
Гость

Re: Фишка: Вывод на главной форума дни рождения

посмотрел на код и не понял( просто новичек) куда его сувать  чтобы он работал плиз скажите

#11 2007-01-27 04:01:57

Slavik
Гость

Re: Фишка: Вывод на главной форума дни рождения

Выложи-ка я суда свой код,чтоб не потерять smile

        $result = $db->query('SELECT id, username, birthday FROM '.$db->prefix.'users WHERE DAYOFMONTH(birthday) = '.date('d').' AND MONTH(birthday) = '.date('n').' ORDER BY username') or error('Unable to fetch birtday list', __FILE__, __LINE__, $db->error());

        if($db->num_rows($result))
        {
            while($bday_list = $db->fetch_assoc($result))
            {
                list($bday_year,$bday_month,$bday_day) = explode('-', $bday_list['birthday']);
                $age = (strlen($bday_year)!='4')? $lang_profile['Unknown']: date('Y')-$bday_year;
?>
                Пользователю <a href="profile.php?id=<?php echo$bday_list['id']?>"><?php echo $bday_list['username']?></a> исполняется <?php echo $age?>.
<?php
            }
         }

Редактировался Slavik (2007-01-27 04:02:51)

#12 2007-01-27 09:52:37

artoodetoo
Гость

Re: Фишка: Вывод на главной форума дни рождения

Demo, наверняка твой код не работает именно потому, что сделан он для Calendar mod!
В оригинальном PunBB нет поля birthday! где ALTER TABLE?

Demo пишет:

Но что-то не получается его завести. Кто разбирается в ПХП гляньте. Вещь стоящая.

насколько я понял скрипт, для дня рождения в таблице USERS добавлено поле типа строка в формате YYYY-MM-DD. поиск ведется средствами MySQL и находят именинников на сегодня и два дня вперед. чтобы заработало нужен установленный мод Calendar, или самому выполнить такой запрос "ALTER TABLE ".$db->prefix."users ADD birthday varchar(10) NOT NULL DEFAULT '0-0-0'" - это из Calendar install_mod.php выдернуто.

---
У Славика проверяется только один день, зато возраст указывается.
Кстати, я везде встречаю рядом с полем ввода д/р галочку "показывать возраст" - вот такую фишку тоже надо учитывать! Многие пользователи не хотят показывать сколько им лет, а поздравления принимать хотят smile

Редактировался artoodetoo (2007-01-27 10:42:19)

#13 2007-01-27 11:04:48

Slavik
Гость

Re: Фишка: Вывод на главной форума дни рождения

artoodetoo пишет:

Кстати, я везде встречаю рядом с полем ввода д/р галочку "показывать возраст" - вот такую фишку тоже надо учитывать!

Да, надо сделать себе такую фишечку

#14 2007-01-27 11:46:02

artoodetoo
Гость

Re: Фишка: Вывод на главной форума дни рождения

в копилку - самое подробное описание работы с датами на MySQL:
http://phpclub.ru/mysql/doc/date-and-ti … tions.html

#15 2007-01-27 16:51:30

FedKoFF
Гость

Re: Фишка: Вывод на главной форума дни рождения

А вот мой вариант.

Добавить в  index.php

// День рождения
        $result = $db->query('SELECT id, username, birthday FROM '.$db->prefix.'users WHERE DAYOFMONTH(birthday) = '.date('d').' AND MONTH(birthday) = '.date('n').' ORDER BY username') or error('Unable to fetch birtday list', __FILE__, __LINE__, $db->error());
        if($db->num_rows($result))
        {
            while($bday = $db->fetch_assoc($result)) {
                $birthday = array();
                list($bday_year, $bday_month, $bday_day) = explode('-', $bday['birthday']);
                $age = (strlen($bday_year)!='4')? $lang_profile['Unknown']: date('Y')-$bday_year;
                $birthday = '<a href="profile.php?id='.$bday['id'].'" title="'.$lang_index['Today Bday'].' '.$age.'">'.pun_htmlspecialchars($bday['username']).'</a>';
                $num_bday = count($birthday);
            }
               echo '<dl id="birthdayslist"><dt>'.$lang_index['Birthday Today'].' (<dd>'.$lang_index['Users online'].': <strong>'.$num_bday.'</strong></dd>) '.$birthday.' ('.$age.')</dt></dl>';
         }

Добавить в  lang/index.php

'Users online'=>'Пользователей', // Эта строка может быть у вас уже есть :)
'Birthday Today'=>'Поздравляем с днем рождения',
'Today Bday'=>'Сегодня исполнилось'

Изменить в  style/imports/base.css часть 8.1

/****************************************************************/
/* 8. LISTS SPECIAL SETTINGS */
/****************************************************************/

/* 8.1 Horizontal display of online list, main navigation menu and breadcrumbs */

#birthdayslist DD, #birthdayslist DT, #onlinelist DD, #onlinelist DT, #onlinetodaylist DD, #onlinetodaylist DT,
    #brdmenu LI, DIV.linkst LI, DIV.linksb LI, DIV.postlinksb LI,
    DIV.postfootright LI, UL.bblinks LI {
        DISPLAY: inline;
        HEIGHT: 0
}

Спасибо всем, без ваших вариантов не было бы и этого smile

Редактировался FedKoFF (2007-01-27 16:56:35)

#16 2007-03-26 01:19:15

KCEOH
Гость

Re: Фишка: Вывод на главной форума дни рождения

А не подскажите, какие поля (тип) надо добавить в базу + код, которым можно в профиле менять ДР.

#17 2007-03-26 06:51:42

artoodetoo
Гость

Re: Фишка: Вывод на главной форума дни рождения

KCEOH, здесь приводят примеры для установленного мода Calendar. ставь по инструкции и будет тебе ДР.

если не хочется Calendar, но нужен ДР - см. сюда Elektra Profile with Labels

#18 2008-05-04 08:21:41

Pminaeff
Гость

Re: Фишка: Вывод на главной форума дни рождения

"Поздравляем с днем рождения (Сейчас пользователей: 1)"
А на самом деле у двоих в этот день д.р.
Подскажите как исправить

#19 2008-05-07 13:14:45

ehduapet
Гость

Re: Фишка: Вывод на главной форума дни рождения

Попробовал все варианты, больше всего понравился вариант FedKoFF. Спасибо!

Подвал доски

Под управлением FluxBB. Хостинг Hostens