Всем здрасть. Почитал форум и вижу он миногим помог!!! Надеюся и меня не оставят без внимания. Вообщем нужен скрипт дней рождения. Юзер заполняет форму в которую вводит день и месяц рождения, ник, при желании фамилию и имя и нажимает на кнопочку ОК!!! И когда настает день его рождения на сайте целый день висит поздравление именнинику!!! и плих еще типо кнопки "база", нажав на которую мона просмотреть весь сптсок дней родения.
Задача может для профи и не сложная но я практически полный ноль, поэтому прошу помощи специалистов.
P.S может это на PHP надо реализовывать... в таком случае сорь что не в ту тему черкнул свой пост
1. Zerh - 20 Февраля, 2008 - 13:06:07 - перейти к сообщению
2. Furax - 20 Февраля, 2008 - 23:20:38 - перейти к сообщению
Да, это задача php, т. к. js не имеет доступа к серверной части.
Так... Если делать через базу данных, где есть таблица birthdays с полями day, month, nick соответствующих типов, то можно провернуть нечто вот в таком роде:
Страница добавления даты:
На странице вывода сегодняшних дней рождения:
Так... Если делать через базу данных, где есть таблица 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();
?>
День: <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 'Сегодня именинников нет';
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 в начале должно лежать:
Естественно, если данные должны быть защищены, нужно делать уже php-файл.
Страница добавления:
Страница отображения:
Тогда ИМХО проще всего загонять в массив. В файле birthdays.txt в начале должно лежать:
CODE:
(Это результат выполнения serialize(array()).)a:0:{}
Естественно, если данные должны быть защищены, нужно делать уже 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();
?>
День: <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 'Сегодня именинников нет';
?>
$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-поля для добавления именинника, а скрипт добавлял. Попробуй закрыть браузер, а потом снова зайти на страницу - и обновляй сколько хочешь!
Если боишься этого эффекта в будущем - просто раздели страницы добавления и отображения.
По второму вопросу - вот эта строчка:
Это не обновление. Ты, видимо, внёс именинника, а потом давил "Обновить". Вот браузер каждый раз и передавал 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 - перейти к сообщению
Огромнейшее тебе спасибо. Все работает! Ты мне очень сильно помог