Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Страницы 1
Тема закрыта
Вобщем обнаружил код, типа должен выводить на главной странице как здесь: 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> » <a href=\"/profile.php?id=".$id."\">".$b."</a> </li>\n";
}
Но что-то не получается его завести. Кто разбирается в ПХП гляньте. Вещь стоящая.
Это работает только с модом колендаря.
Да, я бы тоже хотел у себя такое прикрутить !!!
Может кто-нибудь доделает ?
В общем, нашел на французском форуме - чуть доработал напильником - и заработало, только возраст не показывает, но это и не критично.
Ну так кидай сюда скороей код. Это же всем надо, кто ипользует календарь.
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'].': </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
}
Вроде ничего не забыл
Работает с последней версией календаря
Редактировался Zevs (2006-07-21 18:14:50)
Проверил, работает.
Кстати хорошо, что строка Именинники сегодня появляется только тогда, когда есть пользователи, у которых в этот день ДР - экономит место. Ещё бы возраст можно было бы вывести - было бы неплохо.
Кстати хорошо, что строка Именинники сегодня появляется только тогда, когда есть пользователи, у которых в этот день ДР - экономит место.
Это уже я доковырял
Ещё бы возраст можно было бы вывести - было бы неплохо.
Это точно
[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]'].': </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";
что мне делать куда вставить тода код???
Это мод к календарю не прикручивается?
А есть прилипить.
посмотрел на код и не понял( просто новичек) куда его сувать чтобы он работал плиз скажите
Выложи-ка я суда свой код,чтоб не потерять
$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)
Demo, наверняка твой код не работает именно потому, что сделан он для Calendar mod!
В оригинальном PunBB нет поля birthday! где ALTER TABLE?
Но что-то не получается его завести. Кто разбирается в ПХП гляньте. Вещь стоящая.
насколько я понял скрипт, для дня рождения в таблице 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 выдернуто.
---
У Славика проверяется только один день, зато возраст указывается.
Кстати, я везде встречаю рядом с полем ввода д/р галочку "показывать возраст" - вот такую фишку тоже надо учитывать! Многие пользователи не хотят показывать сколько им лет, а поздравления принимать хотят
Редактировался artoodetoo (2007-01-27 10:42:19)
Кстати, я везде встречаю рядом с полем ввода д/р галочку "показывать возраст" - вот такую фишку тоже надо учитывать!
Да, надо сделать себе такую фишечку
в копилку - самое подробное описание работы с датами на MySQL:
http://phpclub.ru/mysql/doc/date-and-ti … tions.html
А вот мой вариант.
Добавить в 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
}
Спасибо всем, без ваших вариантов не было бы и этого
Редактировался FedKoFF (2007-01-27 16:56:35)
А не подскажите, какие поля (тип) надо добавить в базу + код, которым можно в профиле менять ДР.
KCEOH, здесь приводят примеры для установленного мода Calendar. ставь по инструкции и будет тебе ДР.
если не хочется Calendar, но нужен ДР - см. сюда Elektra Profile with Labels
"Поздравляем с днем рождения (Сейчас пользователей: 1)"
А на самом деле у двоих в этот день д.р.
Подскажите как исправить
Попробовал все варианты, больше всего понравился вариант FedKoFF. Спасибо!
Страницы 1
Тема закрыта