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 :: Скрипт День рождения [2]
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


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

> Описание: скрипт День рождения
Zerh
Отправлено: 28 Февраля, 2008 - 11:50:18
Post Id


Newbie


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

Карма 0




Блин дорогой Furax выручай!!! Юзеры постоянно обновляют страничку и в базе твориться беспредел!!! Как решить вопрос? И еще можно ли поставить ограничение, типа один раз денюху ввел и досвидание(при следующей попытке скажит извини ты уже в базе регестрировался!). +для полного счастья кнопочка "база", где можно будет просмотреть денюхи всех зарегеных юзеров. Извини за надоедлевость но я сам уже 3 дня пытаюся освоить php, но увы это не реально, а скрипт нужен уже сейчас, так что все надежда только на этот форум!
 
 Top
Furax
Отправлено: 28 Февраля, 2008 - 21:09:30
Post Id



Бледнотик


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

Карма 32




После
CODE:
if (!isSet($dates[$month][$day]))
$dates[$month][$day] = array();
добавляем:
CODE:
if (array_search($_POST['nick'], $dates[$month][$day[) !== FALSE)
{
echo 'День рождения уже есть в базе!';
return;
}


По второму вопросу - это уже надо наворачивать скрипт регистрации, хотя, если устроит простой вариант (с cookie-файлами), то можно сделать так:
CODE:
if (isSet($_COOKIE['added']))
{
setCookie('added', 'true', time()+365*24*60*60);
?>Вы не можете добавить больше, чем один день рождения!<?php
}
else
{
?> Тут код формы добавления и сама функция добавления <?php
}
В конце функции addRecord() (после строчки "fclose($file);"Подмигивание добавляем:
CODE:
setCookie('added', 'true', time()+365*24*60*60);


База делается просто:
CODE:
$dates = unserialize(file_get_contents('birthdays.txt'));

foreach ($dates as $month => $monthContent)
foreach ($monthContent as $date => $dateContent)
print "<b>$date.$month:</b> " . implode(', ', $dateContent) . '<br>';
 
 Top
Zerh
Отправлено: 29 Февраля, 2008 - 08:56:17
Post Id


Newbie


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

Карма 0




Furax пишет:
После
CODE:
if (!isSet($dates[$month][$day]))
$dates[$month][$day] = array();
добавляем:
CODE:
if (array_search($_POST['nick'], $dates[$month][$day[) !== FALSE)
{
echo 'День рождения уже есть в базе!';
return;
}

после этого скрипт перестает работать Огорчение

Furax пишет:

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

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


Как разделить страницы добавления и отображения. Пользователи все время повторяют эту ошибку: вводят свои данные а потом по 10 раз жмут обновить страничку!
 
 Top
Furax
Отправлено: 29 Февраля, 2008 - 09:10:22
Post Id



Бледнотик


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

Карма 32




Zerh
CODE:
if (array_search($_POST['nick'], $dates[$month][$day]) !== FALSE)
 
 Top
Zerh
Отправлено: 29 Февраля, 2008 - 09:40:07
Post Id


Newbie


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

Карма 0




я вставил эту строчку после
CODE:

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

теперь добавляеть число и месяц, а ник не добавляеться(как-будто при заполнении формы это поле оставили пустым)
 
 Top
Furax
Отправлено: 29 Февраля, 2008 - 10:57:45
Post Id



Бледнотик


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

Карма 32




Полный код должен быть таким:
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();

if (array_search($_POST['nick'], $dates[$month][$day]) !== FALSE)
{
echo 'День рождения уже есть в базе!';
return;
}

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

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

addRecord();
?>
 
 Top
Zerh
Отправлено: 29 Февраля, 2008 - 12:19:35
Post Id


Newbie


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

Карма 0




так и есть, но все равно именниники добавляються через запятую. Слушай а может можно сделать так чтоб при нажатии на кнопку ок, пользователь возвращялся на главную страничку, а ссылка " добавить мой день рождения" стала для него невидимой?
а он видел только сегодня именниники: вася петя и я!
 
 Top
Furax
Отправлено: 29 Февраля, 2008 - 23:02:58
Post Id



Бледнотик


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

Карма 32




Zerh
Можно всё... Я только не понимаю, почему у тебя именинники добавляются через запятую при обновлении страницы, когда у меня всё пучком.

Редирект делается так: в нужном месте вставь
CODE:
header('location: index.php');
 
 Top
admroot
Отправлено: 03 Мая, 2010 - 02:46:01
Post Id


Newbie


Покинул форум
Сообщений всего: 1
Дата рег-ции: Май 2010  

Карма 0




почему то у меня не работает... Значит я создал таблицу в базе birthday в таблице 3 поля name (varchar255), day (int2), month (int2). Да то что поле name я просто поменял nick (в скрипте тоже попраил). При попытке добавить новую запись в бд - пишет неверная дата... помогите плиз

вот линк premier-produkt.ru
 
 Top
Леголегс Администратор
Отправлено: 03 Мая, 2010 - 15:40:21
Post Id



JS-маньяк


Покинул форум
Сообщений всего: 2109
Дата рег-ции: Июль 2004  
Откуда: Липецк

Карма 17




admroot пишет:
таблицу в базе

Т.е. ты используешь вариант скрита с первой страницы, который с sql?
admroot пишет:
При попытке добавить новую запись в бд - пишет неверная дата
Оно так пишет, если ты пытаешься добавить 35ое марта или 30ое февраля.
admroot пишет:
вот линк
Не работает. 500ая ошибка.
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 3 (гостей: 3, зарегистрированных: 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.0454]     [ 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