Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Скрипт День рождения
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (3): [1] 2 3 » 

> Описание: скрипт День рождения
Zerh
Отправлено: 20 Февраля, 2008 - 13:06:07
Post Id


Newbie


Покинул форум
Сообщений всего: 25
Дата рег-ции: Февр. 2008  

Карма 0




Всем здрасть. Почитал форум и вижу он миногим помог!!! Надеюся и меня не оставят без внимания. Вообщем нужен скрипт дней рождения. Юзер заполняет форму в которую вводит день и месяц рождения, ник, при желании фамилию и имя и нажимает на кнопочку ОК!!! И когда настает день его рождения на сайте целый день висит поздравление именнинику!!! и плих еще типо кнопки "база", нажав на которую мона просмотреть весь сптсок дней родения.
Задача может для профи и не сложная но я практически полный ноль, поэтому прошу помощи специалистов.
P.S может это на PHP надо реализовывать... в таком случае сорь что не в ту тему черкнул свой пост
 
 Top
Furax
Отправлено: 20 Февраля, 2008 - 23:20:38
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Да, это задача php, т. к. js не имеет доступа к серверной части.

Так... Если делать через базу данных, где есть таблица birthdays с полями day, month, nick соответствующих типов, то можно провернуть нечто вот в таком роде:

Страница добавления даты:
CODE:
<form action="..." method="post">
День: <input name="day" size="2" maxlength="2"><br>
Месяц: <input name="month" size="2" maxlength="2"><br>
Ник: <input name="nick"><br>
<input type="submit" value="OK">
</form>

<?php
function addRecord()
{
if (! (isSet($_POST['day']) && isSet($_POST['month']) && isSet($_POST['nick'])))
return;
if (($_POST['day'] != (string)(int)$_POST['day']) || ($_POST['month'] != (string)(int)$_POST['month']))
{
echo 'Неверно введена дата рождения!';
return;
}

$day=(int)$_POST['day'];
$month=(int)$_POST['month'];

$monthSizes = array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if (! (isSet($monthSizes[$month]) && ($day >= 1) && ($day <= $monthSizes[$size])))
{
echo 'Неверная дата!';
return;
}

if (!preg_match('/\w{1,100}/', $_POST['nick']))
{
echo 'Недопустимый ник!';
return;
}

mysql_query("INSERT INTO birthdays (day, month, nick) VALUES ($day, $month, '$_POST[nick]')");
}

addRecord();
?>


На странице вывода сегодняшних дней рождения:
CODE:
$result = mysql_query('SELECT nick FROM birthdays WHERE (day = DAYOFMONTH(NOW())) AND (month = MONTH(NOW())) ORDER BY nick');
if (mysql_num_rows($result))
{
$nicks=array();
while ($row = mysql_fetch_row($result)) $nicks[] = $row[0];
echo 'Именинники: ' . implode(', ', $nicks);
}
else
echo 'Сегодня именинников нет';

(Отредактировано автором: 20 Февраля, 2008 - 23:21:05)

 
 Top
Vimaz
Отправлено: 21 Февраля, 2008 - 07:13:28
Post Id


Newbie


Покинул форум
Сообщений всего: 28
Дата рег-ции: Июль 2007  

Карма 0




а можно и мне помочь?
Нужен такой информер для моего сайта - Дни рождения любимых клоунов. Данные в базу может вбивать только Администратор. Вывод на странице - заголовок "Сегодня день рождения у..." : - далее список - Вася Пупкин, Аня Иванова, Вова Ажеев - в виде таблички...
Может, кто-то подскажет код такого скрипта?
 
 Top
Furax
Отправлено: 21 Февраля, 2008 - 07:34:51
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Vimaz
Ну... Гм... Аналогично приведённому выше коду, только сделай так, чтобы на страницу добавления мог зайти только админ.
 
 Top
Vimaz
Отправлено: 21 Февраля, 2008 - 09:27:43
Post Id


Newbie


Покинул форум
Сообщений всего: 28
Дата рег-ции: Июль 2007  

Карма 0




ок
 
 Top
Zerh
Отправлено: 21 Февраля, 2008 - 10:51:53
Post Id


Newbie


Покинул форум
Сообщений всего: 25
Дата рег-ции: Февр. 2008  

Карма 0




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

(Отредактировано автором: 21 Февраля, 2008 - 10:52:23)

 
 Top
Furax
Отправлено: 21 Февраля, 2008 - 21:00:16
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Zerh
Тогда ИМХО проще всего загонять в массив. В файле birthdays.txt в начале должно лежать:
CODE:
a:0:{}
(Это результат выполнения serialize(array()).)

Естественно, если данные должны быть защищены, нужно делать уже php-файл.

Страница добавления:
CODE:
<form action="/" method="post">
День: <input name="day" size="2" maxlength="2"><br>
Месяц: <input name="month" size="2" maxlength="2"><br>
Ник: <input name="nick"><br>
<input type="submit" value="OK">
</form>

<?php

function addRecord()
{
if (! (isSet($_POST['day']) && isSet($_POST['month']) && isSet($_POST['nick'])))
return;
if (($_POST['day'] != (string)(int)$_POST['day']) || ($_POST['month'] != (string)(int)$_POST['month']))
{
echo 'Неверно введена дата рождения!';
return;
}

$day=(int)$_POST['day'];
$month=(int)$_POST['month'];

$monthSizes = array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if (! (isSet($monthSizes[$month]) && ($day >= 1) && ($day <= $monthSizes[$month])))
{
echo 'Неверная дата!';
return;
}

if (!preg_match('/\w{1,100}/', $_POST['nick']))
{
echo 'Недопустимый ник!';
return;
}

$dates = unserialize(file_get_contents('birthdays.txt'));

if (!isSet($dates[$month]))
$dates[$month] = array();

if (!isSet($dates[$month][$day]))
$dates[$month][$day] = array();

$dates[$month][$day][] = $_POST['nick'];

$file = fopen('birthdays.txt', 'w');
fwrite($file, serialize($dates));
fclose($file);
}

addRecord();
?>


Страница отображения:
CODE:
<?php

$dates = unserialize(file_get_contents('birthdays.txt'));

$month = (int)date('m');
$day = (int)date('d');

if (isSet($dates[$month]) && isSet($dates[$month][$day]))
echo 'Именинники: ' . implode(', ', $dates[$month][$day]);
else
echo 'Сегодня именинников нет';

?>
 
 Top
Zerh
Отправлено: 23 Февраля, 2008 - 07:16:17
Post Id


Newbie


Покинул форум
Сообщений всего: 25
Дата рег-ции: Февр. 2008  

Карма 0




Вроде все заработало но возникла проблемка. после каждого обнавления страницы через запятую добавляються все именниники, и выглядит это так Именинники: Zerh, Zerh, Zerh и так +1 Zerh после каждого обновления странички. И еще, если можно, сделать так чтоб скрипт понимал русские ники!!!
 
 Top
Furax
Отправлено: 23 Февраля, 2008 - 23:54:59
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Zerh
Это не обновление. Ты, видимо, внёс именинника, а потом давил "Обновить". Вот браузер каждый раз и передавал POST-поля для добавления именинника, а скрипт добавлял. Попробуй закрыть браузер, а потом снова зайти на страницу - и обновляй сколько хочешь!

Если боишься этого эффекта в будущем - просто раздели страницы добавления и отображения.

По второму вопросу - вот эта строчка:
CODE:
if (!preg_match('/\w{1,100}/', $_POST['nick']))
должна быть заменена на
CODE:
if (!preg_match('/[a-zA-Zа-яА-Я\-]{1,100}/', $_POST['nick']))
 
 Top
Zerh
Отправлено: 24 Февраля, 2008 - 04:26:04
Post Id


Newbie


Покинул форум
Сообщений всего: 25
Дата рег-ции: Февр. 2008  

Карма 0




Огромнейшее тебе спасибо. Все работает! Ты мне очень сильно помог
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« JavaScript »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0397]     [ Gzipped ]