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

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

Strict Standards: Resource ID#37 used as offset, casting to integer (37) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Скрипт День рождения
ТвойWeb » WebMaster класс » JavaScript » Скрипт День рождения

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

1. Zerh - 20 Февраля, 2008 - 13:06:07 - перейти к сообщению
Всем здрасть. Почитал форум и вижу он миногим помог!!! Надеюся и меня не оставят без внимания. Вообщем нужен скрипт дней рождения. Юзер заполняет форму в которую вводит день и месяц рождения, ник, при желании фамилию и имя и нажимает на кнопочку ОК!!! И когда настает день его рождения на сайте целый день висит поздравление именнинику!!! и плих еще типо кнопки "база", нажав на которую мона просмотреть весь сптсок дней родения.
Задача может для профи и не сложная но я практически полный ноль, поэтому прошу помощи специалистов.
P.S может это на PHP надо реализовывать... в таком случае сорь что не в ту тему черкнул свой пост
2. Furax - 20 Февраля, 2008 - 23:20:38 - перейти к сообщению
Да, это задача 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 'Сегодня именинников нет';
3. Vimaz - 21 Февраля, 2008 - 07:13:28 - перейти к сообщению
а можно и мне помочь?
Нужен такой информер для моего сайта - Дни рождения любимых клоунов. Данные в базу может вбивать только Администратор. Вывод на странице - заголовок "Сегодня день рождения у..." : - далее список - Вася Пупкин, Аня Иванова, Вова Ажеев - в виде таблички...
Может, кто-то подскажет код такого скрипта?
4. Furax - 21 Февраля, 2008 - 07:34:51 - перейти к сообщению
Vimaz
Ну... Гм... Аналогично приведённому выше коду, только сделай так, чтобы на страницу добавления мог зайти только админ.
5. Vimaz - 21 Февраля, 2008 - 09:27:43 - перейти к сообщению
ок
6. Zerh - 21 Февраля, 2008 - 10:51:53 - перейти к сообщению
Уважаемый Furax, во первых огромное спасибо тебе за то что откликнулся на мою просьбу, а во вторых, я виноват перед тобой что не уточнил: плиз без использования базы данных!!! Это оч важно. На уровне тхт или дат файлов чтоб производилася запись.
7. Furax - 21 Февраля, 2008 - 21:00:16 - перейти к сообщению
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 'Сегодня именинников нет';

?>
8. Zerh - 23 Февраля, 2008 - 07:16:17 - перейти к сообщению
Вроде все заработало но возникла проблемка. после каждого обнавления страницы через запятую добавляються все именниники, и выглядит это так Именинники: Zerh, Zerh, Zerh и так +1 Zerh после каждого обновления странички. И еще, если можно, сделать так чтоб скрипт понимал русские ники!!!
9. Furax - 23 Февраля, 2008 - 23:54:59 - перейти к сообщению
Zerh
Это не обновление. Ты, видимо, внёс именинника, а потом давил "Обновить". Вот браузер каждый раз и передавал POST-поля для добавления именинника, а скрипт добавлял. Попробуй закрыть браузер, а потом снова зайти на страницу - и обновляй сколько хочешь!

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

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

Форум на AlfaSpace.NET


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

[Script Execution time: 0.0319]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33