- Обновяване на време
WT форуми -> PHP MySQL ASP.NET -> Обновяване на време
Създайте нова тема Напишете отговор 
Автор Съобщение
systems
Турист
Турист

Регистриран на: 28/09/2012 9:04 pm

Support: 3
Bonus: 6
Мнения: 274
Мнение 02/06/2019 6:07 pm     Обновяване на време Отговорете с цитат


Здравеите опитвам се да направя скрипт които да обновява времето зададено в база данни аз направих това:
то обновява само колоната ban от 0 на 1 но неиска да обнови времето на колона ban_end която е 0
заявката съм я взел от phpmyadmin там като задам примерно 2 минути и поставя на MINUTES след 2 минути
колоната сама обновява обратно на 0 това опитвам да го направя и с този код но незная защо нестава моля за помощ

колоната на ban_time съм я направил така: ban_end int(11) UNSIGNED 0

PHP code:
<?php
$dbhost = "localhost";
$dbuser = "";
$dbpass = "";
$dbname = "";
$connect = mysql_connect("$dbhost", "$dbuser", "$dbpass");
mysql_select_db($dbname,$connect) or die ("Could not select database");
echo '<form action="" method="POST">';
echo 'потребител<br /><input type="text" name="user" /><br/>';
echo 'Време<br /><textarea cols="20" name="message" rows="20"></textarea><br /><br/>';
echo '<input type="submit" name="submit" value="Банни" />';
echo '</body>';
if(isSet($_POST['submit'])){
$user = (($_POST['user']));
$message = (($_POST['message']));
if (empty($user))
{
die(" Не е въведено име! ");
}
$message =$_POST['message'];
if (empty($message))
{
die(" Не е въведено време");
}
$nq = "UPDATE `users` SET `ban='1'`, `ban_end`=MINUTE('$message') WHERE `users`.`username`='$user''";
$nr = mysql_query($nq);
echo "<div class='success'>Вие успешно банахте акаунт:$_POST[user]. за:$_POST[message] минути</div>";
}
?>
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 123
Bonus: 239
Мнения: 3152
Мнение 02/06/2019 7:47 pm      Отговорете с цитат


"UPDATE `users` SET `ban='1'`, `ban_end`=MINUTE('$message') WHERE `users`.`username`='$user''";

Накрая имаш една единична кавичка в повече.

За да работи функцията MINUTE() полето ban_end трябва да е datetime.

Защо просто не си направиш едно поле със датата и часът на изтичане на бана? Тоест в полето ban_end въвеждаш датата на стартиране + времето на бана или по-просто казано:


<?php

$banEnd = time() + 24*60*60; // 1 ден
$nq = "UPDATE `users` SET  `ban_end`=$banEnd WHERE  `users`.`username`='$user''";


После правиш една проста проверка при логването на потребителя:


<?php
$time = time();
$select = "SELECT * FROM`users` WHERE  `users`.`username`='$user' AND `ban_end` <= $time";

if ($select) {
// прави каквото искаш
} else {
// вие сте баннат абонат
}


Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
systems
Турист
Турист

Регистриран на: 28/09/2012 9:04 pm

Support: 3
Bonus: 6
Мнения: 274
Мнение 02/06/2019 9:11 pm      Отговорете с цитат


Мен идеята ми е времето да го задавам не през phpmyadmin а чрез кода
през формата през поле: Pub_date
промених колона ban_end на datetime но скрипта отново непроменя времето в базата с данни каквото и време да задам си седи на 0000-00-00 00:00:00

PHP code:
<?php
$dbhost = "localhost";
$dbuser = " ";
$dbpass = " ";
$dbname = " ";
$connect = mysql_connect("$dbhost", "$dbuser", "$dbpass");
mysql_select_db($dbname,$connect) or die ("Could not select database");
echo '<form action="" method="POST">';
echo 'Потребител<br /><input type="text" name="user" /><br/>';
echo 'Време:<input type="datetime-local" name="pub_date" value="2019-01-01 12:00:00"/>';
echo '<input type="submit" name="submit" value="Задаи време" />';
echo '</body>';
if(isSet($_POST['submit'])){
$user = (($_POST['user']));
$pub_date =$_POST['pub_date'];
if (empty($user))
{
die(" Не е въведено име! ");
}
$nq = "UPDATE `pvpgn_BNET` SET ban='1', ban_end=MINUTE('$pub_date') WHERE username='$user'";
$nr = mysql_query($nq);
echo "<div class='success'>Вие успешно зададохте време на бан на Потребител: : $_POST[user]. бана е до: $_POST[pub_date]</div>";
}
?>
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 123
Bonus: 239
Мнения: 3152
Мнение 02/06/2019 9:31 pm      Отговорете с цитат


Тогава просто си задай времето без функцията MINUTE(), като $pub_date трябва да е във този формат: 2019-01-01 12:00:00

PHP code:

$nq = "UPDATE `pvpgn_BNET` SET ban='1', ban_end=$pub_date WHERE username=$user";


https://stackoverflow.com/questions/9490177/how-to-generate-date-for-mysql-datetime-type-with-php
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
systems
Турист
Турист

Регистриран на: 28/09/2012 9:04 pm

Support: 3
Bonus: 6
Мнения: 274
Мнение 02/06/2019 9:42 pm      Отговорете с цитат


Благодаря формата започна да променя времето но проблема е че без функия minute()
времето не се занулява в базата с данни.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 123
Bonus: 239
Мнения: 3152
Мнение 02/06/2019 9:49 pm      Отговорете с цитат


systems написа:
Благодаря формата започна да променя времето но проблема е че без функия minute()
времето не се занулява в базата с данни.


Чакай сега. Нещо не разбирам! Защо трябва да ти се занулява времето в базата? Нали искаш да подаваш времето за бан. Ъпдейтваш полето с новата дата и час за изтичане на бана и след, като изтече какво те бърка полето каква стойност има? Я ми напиши алгоритъм какво искаш в последователност да ти прави системата! 1. Банваш; 2. Махаш бана
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
systems
Турист
Турист

Регистриран на: 28/09/2012 9:04 pm

Support: 3
Bonus: 6
Мнения: 274
Мнение 02/06/2019 9:57 pm      Отговорете с цитат


Идеята е този скрипт да махне бана затова ми трябва функция която да занулява времето във phpmyadmi като задам функция minutes веднага щом часа и датата станат като зададените веднага занулява полето обратно на 0000-00-00 00:00:00

PHP code:
<?php
$dbhost = "localhost";
$dbuser = " ";
$dbpass = " ";
$dbname = " ";
$connect = mysql_connect("$dbhost", "$dbuser", "$dbpass");
mysql_select_db($dbname,$connect) or die ("Could not select database");
$term = $_POST['term'];
$sql = mysql_query("select * from pvpgn_BNET where ban like '%".$term."%' or username like'%".$term."%'");
while ($row = mysql_fetch_array($sql))
{
if($row['ban']=='1')
{
$user=$row['username'];
}
}
$s= mysql_query("UPDATE `pvpgn_BNET` SET ban='1' WHERE username='$user' AND ban_end='0000-00-00 00:00:00'") or die(mysql_error());
?>
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 123
Bonus: 239
Мнения: 3152
Мнение 02/06/2019 10:03 pm      Отговорете с цитат


Нормално е да не ти работи. В този случай логиката ти е грешна. Не виждам къде проверяваш и за датата на бана. Тук проверяваш само дали има баннати абонати ама дали са с изтекъл срок или прочие нищо не следиш. Както и да е!

PHP code:

<?php
$dbhost = "localhost";
$dbuser = " ";
$dbpass = " ";
$dbname = " ";
$connect = mysql_connect("$dbhost", "$dbuser", "$dbpass");
mysql_select_db($dbname,$connect) or die ("Could not select database");
$term = $_POST['term'];
$sql = mysql_query("select * from pvpgn_BNET where ban like '%".$term."%' or username like'%".$term."%'");
while ($row = mysql_fetch_array($sql))
{
if($row['ban']=='1')
{
$user=$row['username'];
$s= mysql_query("UPDATE `pvpgn_BNET` SET ban='0' WHERE username='$user' AND ban_end='0000-00-00 00:00:00'") or die(mysql_error());

}
}
?>
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 123
Bonus: 239
Мнения: 3152
Мнение 02/06/2019 10:05 pm      Отговорете с цитат


Като цяло полето ban трябва да ти приема true или false. Целия ти код е адски стар и не е приложим вече. Логиката ти е сбъркана и не знам защо се мъчиш с тази боза.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
systems
Турист
Турист

Регистриран на: 28/09/2012 9:04 pm

Support: 3
Bonus: 6
Мнения: 274
Мнение 02/06/2019 10:10 pm      Отговорете с цитат


Идеята е бана без моя намеса да се махне в случая скрипта за махане проверява дали
го има или не ако времето е различно от 0000-00-00 00:00 не го маха ако е занулено директно го маха.

друг вариянт които опитах е чрез сравнение на дата и час но там трябва да се зареди скрипта в точния час за да се махне бана ако този час е отминал бана не се променя
докато при този вариянт като се занули времето бана се маха моментално, затова се чудя как да го направя под линукс съм но имам инсталиран cron но с него немога нещо да го накарам да зареди фаила в точно време.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 123
Bonus: 239
Мнения: 3152
Мнение 02/06/2019 10:26 pm      Отговорете с цитат


Ето ти горе долу за какво говоря! Ееее пак е омазия ама дано ми схванеш идеята!

PHP code:
<?php
$dbhost = "localhost";
$dbuser = " ";
$dbpass = " ";
$dbname = " ";
$connect = mysql_connect("$dbhost", "$dbuser", "$dbpass");
mysql_select_db($dbname,$connect) or die ("Could not select database");
echo '<form action="" method="POST">';
echo 'Потребител<br /><input type="text" name="user" /><br/>';
echo 'Време:<input type="datetime-local" name="pub_date" value="2019-06-03 12:00:00"/>';
echo '<input type="submit" name="submit" value="Задаи време" />';
echo '</body>';
if (isSet($_POST['submit'])) {
$user = (($_POST['user']));
$pub_date =$_POST['pub_date'];
if (empty($user)) {
die(" Не е въведено име! ");
}
$nq = "UPDATE `pvpgn_BNET` SET ban_end=$pub_date WHERE username='$user'";
$nr = mysql_query($nq);
echo "<div class='success'>Вие успешно зададохте време на бан на Потребител: : $_POST[user]. бана е до: $_POST[pub_date]</div>";
}
// До тук въвеждаш бана


$sql = mysql_query("select * from pvpgn_BNET");
while ($row = mysql_fetch_array($sql))
{
if(strtotime($row['ban_end']) < time())
{
$user=$row['username'];
$s= mysql_query("UPDATE `pvpgn_BNET` SET ban='0', ban_end='0000-00-00 00:00:00' WHERE username='$user'") or die(mysql_error());

} else { print "Бана на $user не е изтекъл!<br>";}
}
?>
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
systems
Турист
Турист

Регистриран на: 28/09/2012 9:04 pm

Support: 3
Bonus: 6
Мнения: 274
Мнение 02/06/2019 11:19 pm      Отговорете с цитат


Благодаря много наистина едно голямо благодаря супер си кода които си дал проверява дали времето е изтекло и ако не е бана стои но ако е изтекло маха бана и занулява времето в базата с данни работи без грешка още веднъж благодаря златен си!!!!!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети